您好,登錄后才能下訂單哦!
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進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。