举例子解释Handler消息传递机制

来源:互联网 发布:魔兽世界70数据库 编辑:程序博客网 时间:2024/04/28 10:16

Handle类的主要作用有两个:

一:在新启动的线程中发送消息    二:在主线程中获取、处理消息


下面通过一个新线程来周期性的修改ImageView所显示的图片,通过这种方式来开发一个动画效果,代码如下:

public class MainActivity extends Activity {    int[] imageIds = new int[]{            R.drawable.a,//a,b,c,d,e分别表示5张图片资源的名称            R.drawable.b,            R.drawable.c,            R.drawable.d,            R.drawable.e    };    int currentImageId = 0;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        final ImageView show = findViewById(R.id.show);        final Handler myhandler = new Handler(){            @Override            public void handleMessage(Message msg) { //Handler在主线程接收消息0x1233,并往下执行更改图片                //如果该消息是本程序发送的                if(msg.what == 0x1233){                    //动态的修改所显示的图片                    show.setImageResource(imageIds[currentImageId++%imageIds.length]);                }            }        };        //定义一个计数器,让该计时器周期性的执行指定的任务        new Timer().schedule(new TimerTask() {            @Override            public void run() {                myhandler.sendEmptyMessage(0X1233); //新线程往主线程发送消息0x1233            }        },0,1200);        //Timer().schedule(TimerTask task, Date when, long period);三个参数的意思分别是:        /*        1 ,task:所安排的时间线程        2,when:第一次执行的时间        3, period:间隔的执行时间         */    }}


0 0
原创粉丝点击