Android学习第十一篇——handler结合ImageView使用Demo

原创 2016年08月29日 16:45:39

上一篇我们讲到了hangler,最后的时候有点写不下去了,原因就是因为没学到家,因此这次结合实例继续学习。


这次我们要做的就是通过Handler+Thread作为一个计时器来控制图片的透明度,使得图片慢慢变透明直到看不见,效果只能这样描述一下了,不知道怎么上传视频,具体效果可以下载代码自己运行查看。Demo下载



布局就不看了,就一个ImageView,我们直接来看一下Activity

// 声明ImageView对象
	ImageView imageview;
	TextView textview;
	// ImageView的alpha值,
	int image_alpha = 255;

	Handler mHandler = new Handler();
	// 控件线程
	boolean isrung = false;

	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);

		isrung = true;

		// 获得ImageView的对象
		imageview = (ImageView) this.findViewById(R.id.ImageView01);
		textview = (TextView) this.findViewById(R.id.TextView01);

		// 设置imageview的图片资源。同样可以再xml布局中像下面这样写
		// android:src="@drawable/logo"
		imageview.setImageResource(R.drawable.logo);

		// 设置imageview的Alpha值
		imageview.setAlpha(image_alpha);

		// 开启一个线程来让Alpha值递减
		new Thread(new Runnable() {
			public void run() {
				while (isrung) {
					try {

						Thread.sleep(200);
						// 更新Alpha值
						updateAlpha();
					} catch (InterruptedException e) {
						e.printStackTrace();
					}
				}

			}
		}).start();

		// 接受消息之后更新imageview视图
		mHandler = new Handler() {
			@Override
			public void handleMessage(Message msg) {
				super.handleMessage(msg);
				imageview.setAlpha(image_alpha);
				textview.setText("现在alpha值是:" + Integer.toString(image_alpha));
				// 更新
				imageview.invalidate();
			}
		};
	}

	public void updateAlpha() {
		if (image_alpha - 7 >= 0) {
			image_alpha -= 7;
		} else {
			image_alpha = 0;
			isrung = false;
		}
		// 发送需要更新imageview视图的消息
		mHandler.sendMessage(mHandler.obtainMessage());
	}

这里我们其实没有发送什么信息给mHandler

// 发送需要更新imageview视图的消息
mHandler.sendMessage(mHandler.obtainMessage());
这么做的目的纯粹就是为了触发handlerMessage 这个方法,然后去设置ImageView的透明度.



补充: mHandler.obtainMessage() 这个只是为了获得一个Message对象,别的没有东西了,至于你要传递的信息需要设置的。

比如:

Message msg = handler.obtainMessage();
		
msg.arg1 = 123;//传递整型数据
/*传递object类型
msg.ob使用来放对象的,这个对象可以使任何类型
*/
msg.obj = "asd";

设置好数据之后就是携带数据发送信息给handler

mHandler.sendMessage();
//或者
mHandler.sendToTarget()
//这里的target就是handler,sendToTarget()又在调用handler的 sendMessage 方法了。。。

最后就是到handlerMessage中处理信息了。


版权声明:本文为博主原创文章,未经博主允许不得转载。

Android使用handler和Runnable结合,自定义View更新UI的Demo

前三周在修改android4.2锁屏UI,刚做android好多知识不会啊,里面有个动画效果是一个jian...

Mars Android视频学习笔记——01_14/15_Handler的使用

本节会用到JAVA的内部类和匿名内部类,这些知识在另一篇转载的文章里详细讲述。http://blog.csdn.net/sam_zhang1984/archive/2011/02/26/6209899...

Android学习笔记(五)——handler的使用

在Android系统中,当一个应用程序启动时,首先会启动一个主线程(也被称为UI线程),该线程负责管理界面中的UI控件,进行事件分发,并响应用户的操作。在主线程中不能执行比较耗时的操作(一般不能超过5...

嵌入式视频方案学习第十一篇——视频编码模块VENC

VENC 模块,即视频编码模块。本模块支持多路实时编码,且每路编码彼此独立,编 码协议和编码profile 可以不同。本模块支持视频编码同时,调度 Region 模块对编码图 像内容进行叠加和遮挡...

Android内存管理试验——浅谈ImageView的Bitmap的使用

转自:http://blog.csdn.net/ztp800201/article/details/16830191

Android内存管理试验——浅谈ImageView的Bitmap的使用

今天在项目中碰到了史无前例的内存泄漏问题,在大量使用Bitmap的Activity的中概率性出现如下错误: 07-13 13:17:20.534: ERROR/AndroidRuntime(51...

Android控件使用注意事项 ——> ImageView

一:BitmapFactory.decodeResource 与 decodeStream android应用加载本地大图(res资源文件或者sdcard外部文件)时,经常容易出现内存溢出问题....

【Android】30、常见控件的使用方法——ImageView

本篇介绍常见控件——ImageView的使用方法
  • omoiato
  • omoiato
  • 2016年06月16日 15:32
  • 166

【android基础学习之五】——基础控件Menu,Dialog,ImageView,ImageButton

声明:学习的书籍《Android应用开发揭秘》,这里记录学习该书籍的日志,引用的相关代码与总结描述,没有商业的用途,完全是自我学习的一个记录,刚刚学习不可避免会出现很多问题,若是有错误还请大家多多批评...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android学习第十一篇——handler结合ImageView使用Demo
举报原因:
原因补充:

(最多只允许输入30个字)