您的位置:首页 > 编程语言

Handler消息机制之基础代码运用篇

2016-03-12 02:25 288 查看
前言:算是受师傅的影响吧,也开始写博客了,记下自己学的点点滴滴。今天正好是周五,打算熬个通宵把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);
}
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  handler运用