博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android脚步---简单图片浏览器改变图像透明度
阅读量:4499 次
发布时间:2019-06-08

本文共 4171 字,大约阅读时间需要 13 分钟。

图片浏览器调用ImageView的setAlpha方法来实现改变图片透明度。

main.xml文件如下:三个按钮,两个imageview,,界面定义了两个ImageView,一个是显示局部图片的ImageView,android:scaleType="fitCenter表明图片会保持横纵比缩放,并将缩放后图片放在该imageview中央。 

 设置监听器,按钮改变图片的Alpha值,在第一个imageview上添加ontouchlistener,发生触摸事件时,程序从原图取出相应部分图片,显示在第二个imageview中。

package com.example.imageview;import android.app.Activity;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.drawable.BitmapDrawable;import android.os.Bundle;import android.view.MotionEvent;import android.view.View;import android.view.View.OnClickListener;import android.view.View.OnTouchListener;import android.widget.Button;import android.widget.ImageView;public class MainActivity extends Activity {    // 定义一个访问图片的数组    int[] images = new int[] { R.drawable.lijiang, R.drawable.qiao,            R.drawable.shuangta, R.drawable.shui, R.drawable.xiangbi,            R.drawable.ic_launcher, };    // 定义当前显示的图片    int currentImage = 2;    // 定义图片的初始透明度    private int alpha = 255;    @Override    protected void onCreate(Bundle savedInstanceState) {        // TODO Auto-generated method stub        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        final Button plusButton = (Button) findViewById(R.id.button1);        final Button minuxButton = (Button) findViewById(R.id.button2);        final Button nextButton = (Button) findViewById(R.id.button3);        final ImageView imageview1 = (ImageView) findViewById(R.id.imageView1);        final ImageView imageview2 = (ImageView) findViewById(R.id.imageView2);        // 定义查看下一张图片的时间监听器        nextButton.setOnClickListener(new OnClickListener() {            @Override            public void onClick(View v) {                if (currentImage >= 5) {                    currentImage = -1;                }                BitmapDrawable bitmap = (BitmapDrawable) imageview1                        .getDrawable();                // 如果图片还没有回收,先强制回收图片                if (!bitmap.getBitmap().isRecycled()) {                    bitmap.getBitmap().recycle();                }                // 改变ImageView的图片                imageview1.setImageBitmap(BitmapFactory.decodeResource(                        getResources(), images[++currentImage]));            }        });        // 定义改变图片透明度的方法        OnClickListener listener = new OnClickListener() {            @Override            public void onClick(View v) {                if (v == plusButton) {                    alpha += 20;                }                if (v == minuxButton) {                    alpha -= 20;                }                if (alpha > 255) {                    alpha = 255;                }                if (alpha <= 0) {                    alpha = 0;                }                // 改变图片的透明度                imageview1.setAlpha(alpha);            }        };        // 为2个按钮添加监听器        plusButton.setOnClickListener(listener);        minuxButton.setOnClickListener(listener);        imageview1.setOnTouchListener(new OnTouchListener() {            @Override            public boolean onTouch(View arg0, MotionEvent arg1) {                // TODO Auto-generated method stub                BitmapDrawable bitmapDeaw = (BitmapDrawable) imageview1                        .getDrawable();                // 获取第一个图片显示框中的位图                Bitmap bitmap = bitmapDeaw.getBitmap();                double scale = bitmap.getWidth();                // 或许需要显示图片的开始点                int x = (int) (arg1.getX() * scale);                int y = (int) (arg1.getY() * scale);                if (x + 120 > bitmap.getWidth()) {                    x = bitmap.getWidth() - 120;                }                if (y + 120 > bitmap.getHeight()) {                    y = bitmap.getHeight() - 120;                }                // 显示图片的指定区域                imageview2.setImageBitmap(Bitmap.createBitmap(bitmap, x, y,                        120, 120));                imageview2.setAlpha(alpha);                return false;            }        });    }}

 

转载于:https://www.cnblogs.com/Anita9002/p/3978819.html

你可能感兴趣的文章
【转载】C#通过Rows.Count属性获取总行数
查看>>
【转载】通过百度站长平台查看网站搜索流量及关键字
查看>>
【转载】Visual Studio2017如何打包发布Winform窗体程序
查看>>
【转载】通过搜狗站长平台手动向搜狗搜索提交死链
查看>>
【转载】通过搜狗站长平台手动向搜狗搜索提交文章加快收录
查看>>
【转载】通过百度站长平台提交网站死链
查看>>
【转载】通过搜狗站长平台提交网站域名变更后的文章地址
查看>>
【转载】Visual Studio2017中如何设置解决方案中的某个项目为启动项目
查看>>
Axios跨域实例
查看>>
ubuntu下安装pyaudio
查看>>
单片机 电子电路 嵌入式 毕设 课设 私活 代做
查看>>
notepad++ 安装 hex_editor 十六进制查看插件
查看>>
正则表达式
查看>>
Date类
查看>>
基本类型的数值转换
查看>>
集合、泛型、增强for
查看>>
Public Key Retrieval is not allowed错误
查看>>
Unable to load authentication plugin 'caching_sha2_password'.错误
查看>>
The server time zone value '乱码' 错误
查看>>
require.js的用法
查看>>