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开发-ImageViewDemo-AndroidStudio

  • iwanghang
  • iwanghang
  • 2016年10月26日 15:11
  • 823

Android之Handler简单用法

今天給大家带来的是Androidzh
  • Joker_Ya
  • Joker_Ya
  • 2014年10月22日 20:09
  • 6289

Android消息机制Handler解析(源码+Demo)

Handler是开发人员在面试过程中最常见的问题之一了,这篇文章将较为全面地对Handler进行解读,包括源码层,以及使用方法。 如果看完文章有疑问,欢迎在评论中一起探讨 基本内容包括: 看完文章...
  • chen_lian_
  • chen_lian_
  • 2016年04月01日 00:25
  • 4539

ViewPager结合ImageView实现图片轮播的实例

1、SlideShowView的布局文件:
  • fuzhongbin
  • fuzhongbin
  • 2015年12月15日 23:25
  • 1810

Android Handler 四个使用实例 及HandlerThread的使用

当应用程序启动时,Android首先会开启一个主线程 (也就是UI线程),主线程为管理界面中的UI控件,进行事件分发,比如说:点击一个Button,Android会分发事件到Button上,来响应你的...
  • a78270528
  • a78270528
  • 2015年09月06日 17:49
  • 2270

Android开发-数据绑定-DataBinding-AndroidStudio(四)Glide解析图片

下载一个图片 设置到ImageView 转载请注明出处:http://blog.csdn.net/iwanghang 这里使用Glide的jar包 代替Volley进行解析 Mai...
  • iwanghang
  • iwanghang
  • 2016年11月18日 11:00
  • 1786

Android使用自己封装的Http和Thread、Handler实现异步任务

目录结构如下:Http协议的封装:使用http协议有request和response这两个主要的域,下边是Http协议封装的结构图 (1)HttpRequestInter.java:作为reques...
  • u010870518
  • u010870518
  • 2015年05月03日 16:26
  • 4445

Android中的Handler使用方式

对Android中的Handler的使用方式和其内部的一些机制进行简单的总结
  • jinhuoxingkong
  • jinhuoxingkong
  • 2017年03月14日 15:57
  • 458

Android中Handler使用实例

本文通过“使用新线程计算质数”这样一个demo,简单讲解如何在Android中使用Handler进行多线程开发。 为了更好地理解Handler的工作原理,先介绍一下Handler一起工作的几个组件。...
  • jasper_success
  • jasper_success
  • 2016年02月16日 16:37
  • 1923

Android Handler正确使用姿势

Android Handler正确使用姿势
  • geanwen
  • geanwen
  • 2017年01月08日 15:14
  • 1583
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android学习第十一篇——handler结合ImageView使用Demo
举报原因:
原因补充:

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