android 定时器,每秒变换一次图片!

android 定时器,每秒变换一次图片!

发布: admin | 类别: 程序开发 | 点击:2942 | 更新时间:2011-11-08 13:37:25

0 条评论

在android中,要让每秒进行一次ui更新,就需要利用到定时器和handler,message的结合,如果不使用handler就不能达到更新ui的效果,我的理解是handler中存在一个队列问题,可以保证不产生阻塞。

代码如下:

package com.my;

import java.util.Timer;
import java.util.TimerTask;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.widget.ImageView;
import android.widget.LinearLayout;

public class MainActivity extends Activity
{
 private LinearLayout linearlayout;

 private ImageView main_imageview;

 private int i = 0;

 Timer timer = new Timer();

 private Handler handler = new Handler()
 {
  @Override
  public void handleMessage(Message msg)
  {

   Log.e("@@@", i + "");
   //index=msg.what;
   if (i > 6)
   {
    i = 0;
   }
   else
   {
    switch (i)
    {
    case 1:
     main_imageview.setImageResource(R.drawable.loader_frame_1);
     break;
    case 2:
     main_imageview.setImageResource(R.drawable.loader_frame_2);
     break;
    case 3:
     main_imageview.setImageResource(R.drawable.loader_frame_3);
     break;
    case 4:
     main_imageview.setImageResource(R.drawable.loader_frame_4);
     break;
    case 5:
     main_imageview.setImageResource(R.drawable.loader_frame_5);
     break;
    case 6:
     main_imageview.setImageResource(R.drawable.loader_frame_6);
     break;
    default:
     break;
    }
    linearlayout.invalidate();
   }
   super.handleMessage(msg);
  }
 };

 /** Called when the activity is first created. */
 @Override
 public void onCreate(Bundle savedInstanceState)
 {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);

  initView();
 }

 public void initView()
 {
  linearlayout = (LinearLayout) findViewById(R.id.background_main);
  main_imageview = (ImageView) findViewById(R.id.main_imageview);

  timer.scheduleAtFixedRate(new TimerTask()
  {
   @Override
   public void run()
   {
    // TODO Auto-generated method stub
    i++;
    Message mesasge = new Message();
    mesasge.what = i;
    handler.sendMessage(mesasge);
   }
  }, 0, 500);
 }

 @Override
 protected void onDestroy()
 {
  // TODO Auto-generated method stub
  timer.cancel();
  super.onDestroy();
 }
}


在这段代码中有两点需要注意:

第一:在更新完图片后,需要刷新整个布局,linearlayout.invalidate();

第二:在用完定时器timer后,要在Activity被干掉的同时销毁定时器timer。

关键字 :程序开发 android

0 条评论

 

欢迎留下您的评论

红框选项必须输入,不允许html代码。

联系我们

  • 电话: 18908191278 028-61408608
  • 网址: www.drawnet.cn
  • QQ: 464410235
  • 微信: 464410235
  • 邮箱: master@drawnet.cn

关于我们

关注微信公众号

扫码关注微信服务号

进入微信小程序

扫码进入微信小程序