Android如何实现改变图片的透明度

发布时间:2020-11-07 16:24:13 作者:Leah
来源:亿速云 阅读:449

Android如何实现改变图片的透明度?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

例子中的图片浏览器既可以改变图片的透明度,也可以根据用户在图片上选定的某一区域,对其进行显示,用于查看图片的局部细节。

Android如何实现改变图片的透明度

在activity_main.xml中:

<&#63;xml version="1.0" encoding="utf-8"&#63;>
<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如何实现改变图片的透明度问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。

推荐阅读:
  1. android   动态改变图片大小
  2. JavaScript如何通过改变文字透明度实现的文字闪烁效果

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

android roi 透明度

上一篇:在Python中利用 rabbitMQ实现生产与消费者模式的方法

下一篇:在ubuntu中如何安装opencv

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》