消息传送 Handler
来源:互联网 发布:java array list 泛型 编辑:程序博客网 时间:2024/06/10 06:36
主要接受子线程发送的数据, 并用此数据配合主线程更新UI.子线程不能分配任务。因此,可以由Handler 发送消息给主线程,告诉主线程应该做什么任务,由主线程来分配。
图片切换,由切换按钮控制图片开始切换,由停止按钮控制图片停止切换。
java代码:
图片自动切换类:
import android.app.Activity;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.ImageView;/** * 图片自动切换类 * @author Administrator * */public class ChangeImageActivity extends Activity {/**标识*/ public static final int IMAGE_CHANGE=1; /**消息传送类*/ private Handler handler; /**下标*/ private int index; /**图片切换状态标识*/ private boolean state=true; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.changeimage_main); //创建一个消息传送对象 handler = new ChangeImageHandler(this); //得到两个按钮对象 Button btn1 = (Button) findViewById(R.id.button1); Button btn2 = (Button) findViewById(R.id.button2); /** * 开始切换图片监听 */ btn1.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {state=true;//实现多次切换//子线程new Thread(){public void run(){//for循环第一个参数未写,表示再次切换从上次停止切换时的那一张开始切换。//若该参数是0,则每一次切换都会从第一张图片开始切换for(;state;index++){if(index==5){//不断切换index=0;}//创建消息对象Message msg = new Message();//标识msg.what = IMAGE_CHANGE;//创建存放数据的map对象Bundle bundle = new Bundle();bundle.putInt("index", index);msg.setData(bundle);//传送消息handler.sendMessage(msg);try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}}}}.start(); }}); /** * 停止切换图片监听 */ btn2.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {state=false;}}); }}
消息传送类:
package com.lovo;import android.os.Handler;import android.os.Message;import android.widget.ImageView;/** * 消息传送类 * @author Administrator * */public class ChangeImageHandler extends Handler{/**图片切换activity*/private ChangeImageActivity activity;/**图片数组*/private int[]image=new int[]{R.drawable.whatsnew_fornew_01,R.drawable.whatsnew_fornew_02,R.drawable.whatsnew_fornew_03,R.drawable.whatsnew_fornew_04,R.drawable.whatsnew_fornew_05};;public ChangeImageHandler(ChangeImageActivity changeImageActivity){this.activity = changeImageActivity;}/** * 接收消息 */@Overridepublic void handleMessage(Message msg) {super.handleMessage(msg);if(msg.what==ChangeImageActivity.IMAGE_CHANGE){//设置图片显示ImageView imageView=(ImageView) activity.findViewById(R.id.change_image_imageView);imageView.setImageResource(image[msg.getData().getInt("index")]);}}}
XML:
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <LinearLayout android:id="@+id/btn_layout" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:gravity="center" android:padding="40dp"> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="切换" /> <Button android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="停止"/> </LinearLayout> <ImageView android:id="@+id/change_image_imageView" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@id/btn_layout" /></RelativeLayout>
- 消息传送 Handler
- Handler消息传送机制
- Android:Handler消息传送机制
- Handler消息传送机制总结
- Android基本功:Handler消息传送机制
- 安卓基础:Handler消息传送机制
- Android基本功:Handler消息传送机制
- Android基本功:Handler消息传送机制
- 神州数码消息传送器
- 消息传送机制
- 点对点消息传送模型
- JMS消息传送机制
- ActiveMQ消息传送模型
- 格式化传送的soap消息
- 网络发送消息 传送文件
- MFC 工作者线程传送消息
- 看魔乐科技消息传送笔记
- rabbitmq 消息传送与监听
- 媒体云
- 基于python的完全数之TDD版本(修改)
- cocos2d-x 卡牌翻牌效果的实现
- Ubuntu12.04下安装Git
- 浅谈网络游戏的设计——服务器端编程(2)
- 消息传送 Handler
- Linux 开启VNCSERVER
- [C#基础知识系列]全面解析C#中静态与非静态
- 大表添加有默认值的列
- 追求最强的vim(未完待续)
- STL容器类vector,list,deque的比较
- xcode 5.0 的持续继承
- 音乐播放器之源码解析一
- 一个计算机爱好者的不完整回忆(五十三)终极之作5