Handler消息机制之基础代码运用篇
2016-03-12 02:25
288 查看
前言:算是受师傅的影响吧,也开始写博客了,记下自己学的点点滴滴。今天正好是周五,打算熬个通宵把handler这块的基础知识都整理出来,分享给大家,同时也算是自己做的笔记吧。以后,我也会在周五把这一星期的无论是看到,找到的,或是项目中的知识也一并整理出来。
下面开始说说 Handler基础运用了
停止切换图片,只需在原来的基础上添加新增的即可:
下面开始说说 Handler基础运用了
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <ImageView android:id="@+id/imageView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:layout_marginTop="99dp" android:src="@drawable/ic_launcher" /> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerVertical="true" android:layout_marginRight="20dp" android:layout_toLeftOf="@+id/imageView1" android:onClick="changImage" android:text="开始切换图片" /> <Button android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignTop="@+id/button1" android:layout_marginLeft="24dp" android:layout_toRightOf="@+id/imageView1" android:onClick="changImage" android:text="停止切换图片" /> </RelativeLayout>
/* * 自行准备九张图片 * 目的: 每隔一秒 切换一张图片 (此次的实现只是开始切图片,停止切换另外贴出,方便基础薄弱的同学) * */ int[] images = { R.drawable.pic0, R.drawable.pic1, R.drawable.pic2, R.drawable.pic3, R.drawable.pic4, R.drawable.pic5, R.drawable.pic6, R.drawable.pic7, R.drawable.pic8, R.drawable.pic9 }; ImageView iv; int num; /* * 创建Handler对象, * */ Handler handler = new Handler(){ @Override public void handleMessage(Message msg) { if (msg.what == 0) { iv.setImageResource(images[num % images.length]); //取余 } } };
//模拟按钮 进行耗时操作 public void changImage(View v) { switch (v.getId()) { case R.id.button1: // 开始启动图片的切换 new Thread(){ @Override public void run() { while(true){ try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } handler.sendEmptyMessage(0); num++; } } }.start(); } }
停止切换图片,只需在原来的基础上添加新增的即可:
boolean flag = true; //新增 //模拟按钮 进行耗时操作 public void changImage(View v) { switch (v.getId()) { case R.id.button1: // 开始启动图片的切换 flag = true; //新增 new Thread(){ @Override public void run() { while(flag){ //新增 flag换成true try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } handler.sendEmptyMessage(0); num++; } handler.sendEmptyMessage(1); //新增 } }.start(); break; case R.id.button2 : //停止切换图片 //新增 flag = false; num = 0; break; } }
Handler handler = new Handler(){ @Override public void handleMessage(Message msg) { if (msg.what == 0) { iv.setImageResource(images[num % images.length]); //取余 }else if (msg.what == 1) { //新增 iv.setImageResource(R.drawable.ic_launcher); } } };
相关文章推荐
- 使用struts2自定义拦截器,要引入defaultStack
- Java中对数组的排序方法总汇分析
- 第一发
- CI框架使用PHPmail插件发送QQ邮件:
- Sublime Text 2下搭建Python环境常见错误
- java内存
- PHP学习(九)--特殊的流程控制语句
- 解决myeclipse中中文字太小的问题
- 单例模式
- Python中使用with语句同时打开多个文件
- Spring AOP(一)——什么是AOP
- Handler消息机制之基础代码篇
- 大端模式与小端模式
- 我与小娜(34):AlphaGo会打”小报告“吗?
- 利用Python实现朴素贝叶斯文本分类
- ContentProvider再探——Document Provider
- PHP_mysql_连接数据库+读取数据
- 关于同一域名下的不同的二级域名可以共享cookie在thinkphp里的解决办法
- Spring transaction事务之roll back回滚: rollback-for
- 在thinkphp中使用省市县三级菜单联动