你的位置:首页 > 操作系统

[操作系统]Android线程处理之Handler总结


  上一篇为大家介绍了如何通过Handler对象把Message数据发送到主线程,我想大家一定都已经掌握了,本篇我将以一个例子的方式为大家总结一下Handler的使用,例子是通过Handler实现一个图片自动改变的效果,一般我们都是通过Viewpage来实现这个效果,不过本篇我们就一起来学习一下如何通过Handler实现这个效果吧。

  开始之前我们需要准备几张用来更新切换的图片,让后把这些图片放到res下面的drawable-hdpi下就可以了。有了这些我们就可以开始我们的效果实现了:

 1、布局文件:

<RelativeLayout   ="http://schemas.android.com/tools"  android:layout_width="match_parent"  android:layout_height="match_parent"  tools:context="${relativePackage}.${activityClass}" >  <ImageView    android:id="@+id/imageView1"    android:layout_width="300px"    android:layout_height="300px"    android:layout_alignParentTop="true"    android:layout_centerHorizontal="true"    android:layout_marginTop="87dp"    android:src="@drawable/abc_ab_share_pack_holo_light" />  <Button    android:id="@+id/stop"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:layout_alignLeft="@+id/imgButton"    android:layout_alignParentTop="true"    android:layout_marginTop="36dp"    android:text="停止切换" /></RelativeLayout>

  2、我们Activity代码:

public class ImgActivity extends Activity {  private ImageView imageView;  private Button stop;  private Handler handler = new Handler();  private int ImageAll [] = {R.drawable.download1, R.drawable.download2, R.drawable.download3};   private int index = 1;  private MyRunable myRunable = new MyRunable();    @Override  protected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_img);    stop = (Button) findViewById(R.id.stop);    imageView = (ImageView) findViewById(R.id.imageView1);        stop.setOnClickListener(new OnClickListener() {            @Override      public void onClick(View arg0) {        handler.removeCallbacks(myRunable);//停止切换      }    });    handler.postDelayed(myRunable, 1000);  }    class MyRunable implements Runnable{    @Override    public void run() {      index = index%3;      imageView.setImageResource(ImageAll[index]);      index++;      handler.postDelayed(myRunable, 1000);    }  }}

  好了我们的实例就完成了,简单为大家介绍一下代码:

  index = index%3;:控制我们的图片切换
  handler.postDelayed(myRunable, 1000);:每隔1s执行我们的myRunable对象
  
  handler.removeCallbacks(myRunable);:移除我们的myRunable对象,停止执行

  ok我们的实例效果已经为大家介绍完毕,大家可以自己写一下,很有趣呦!