前言:算是受师傅的影响吧,也开始写博客了,记下自己学的点点滴滴。今天正好是周五,打算熬个通宵把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);
}
}
};