1. 程式人生 > 程式設計 >Android實現圖片瀏覽並改變透明度

Android實現圖片瀏覽並改變透明度

本文例項為大家分享了簡單的圖片瀏覽器製作,供大家參考,具體內容如下

例子中的圖片瀏覽器既可以改變圖片的透明度,也可以根據使用者在圖片上選定的某一區域,對其進行顯示,用於檢視圖片的區域性細節。

Android實現圖片瀏覽並改變透明度

在activity_main.xml中:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:app="http://schemas.android.com/apk/res-auto"
  xmlns:tools="http://schemas.android.com/tools"
  android:layout_width="match_parent"
  android:orientation="vertical"
  android:layout_height="match_parent"
  tools:context=".MainActivity">
  <LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:gravity="center">
    <Button
      android:id="@+id/btn1"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_weight="1"
      android:text="增大透明度"
      android:layout_marginLeft="60dp"/>
    <Button
      android:id="@+id/btn2"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_weight="1"
      android:text="降低透明度" />
    <Button
      android:id="@+id/btn3"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_weight="1"
      android:layout_marginRight="60dp"
      android:text="下一張" />
  </LinearLayout>
  <ImageView
    android:id="@+id/image1"
    android:layout_width="400dp"
    android:layout_height="280dp"
    android:layout_gravity="center"
    android:src="@drawable/zm1"
    android:scaleType="fitCenter"/>
  <ImageView
    android:id="@+id/image2"
    android:layout_width="120dp"
    android:layout_height="120dp"
    android:background="#f0f"
    android:layout_margin="10dp"/>


</LinearLayout>

在MainActivity.java中:

package com.example.test02;

import androidx.appcompat.app.AppCompatActivity;

import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;

public class MainActivity extends AppCompatActivity {
//  定義訪問圖片的陣列
  private int[] images=new int[]{R.drawable.zm1,R.drawable.zm2,R.drawable.zm6,R.drawable.zm4,R.drawable.zm5};
//  定義預設顯示的圖片
  private int current=2;
//  定義圖片的初始透明度
  private int alpha=255;
  private Button btn1,btn2,btn3;
  private ImageView image1,image2;
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    btn1=findViewById(R.id.btn1);
    btn2=findViewById(R.id.btn2);
    btn3=findViewById(R.id.btn3);
    image1=findViewById(R.id.image1);
    image2=findViewById(R.id.image2);
    //定義檢視下一張圖片的監聽器
    btn3.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View v) {
        image1.setImageResource(images[++current%images.length]);
      }
    });
//    為按鈕新增監聽器
    btn1.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View v) {
        //定義改變圖片透明度的方法
        if (v==btn1){
          alpha+=20;
        }
        if (alpha>=255){
          alpha=255;
        }
        if (alpha<=0){
          alpha=0;
        }
        //改變圖片的透明度
        image1.setImageAlpha(alpha);
      }
    });
    btn2.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View v) {
        if (v==btn2){
          alpha-=20;
        }
        if (alpha>=255){
          alpha=255;
        }
        if (alpha<=0){
          alpha=0;
        }
        image1.setImageAlpha(alpha);
      }
    });
    image1.setOnTouchListener(new View.OnTouchListener() {
      @Override
      public boolean onTouch(View v,MotionEvent event) {
        BitmapDrawable bitmapDrawable= (BitmapDrawable) image1.getDrawable();
//        獲取第一個圖片顯示框中的點陣圖
        Bitmap bitmap=bitmapDrawable.getBitmap();
//        實際大小與第一張圖片的縮放比例
        double scale=1.0*bitmap.getHeight()/image1.getHeight();
//        獲取需要顯示圖片的開始點
        long x=Math.round(event.getX()*scale);
        long y=Math.round(event.getY()*scale);
        if (x+120>bitmap.getWidth()){
          x=bitmap.getWidth()-120;
        }
        if (y+120>bitmap.getHeight()){
          y=bitmap.getHeight()-120;
        }
//        顯示圖片指定區域
        image2.setImageBitmap(Bitmap.createBitmap(bitmap,(int)x,(int)y,120,120));
        image2.setImageAlpha(alpha);
        return false;
      }
    });


  }
}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。