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;
}
});
}
}關于Android如何實現改變圖片的透明度問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。