【第22期】观点:IT 行业加班,到底有没有价值?

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学习开发之路4——图片显示imageVIew

处在多媒体时代,没有图片显示怎么可以?幸好android为我们提供了图片显示的控件imageVIew,下面的程序将通过这个控件实现触摸屏幕更换显示的图片。 程序开始运行 单击屏幕之后,更换图片 <

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

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

程序员升职加薪指南!还缺一个“证”!

CSDN出品,立即查看!

Android学习笔记06——handler的使用

一、          Handler的基本概念 Handler主要用于异步消息的处理:当发出一个消息之后,首先进入一个消息队列,发送消息的函数即刻返回,而另外一个部分逐个的在消息队列中将消息取出,...

Android UI开发第十一篇——右上角带个泡泡

一个网友问到“一个新消息Button按钮,上边浮着一个泡泡形状提示有几条新消息!”是怎么实现的,我这简单写了一下,其实就是view的组合。 &lt; ?xml version="1.0" encodi
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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