当前位置: 移动技术网 > 移动技术>移动开发>Android > Android 定时器实现图片的变换

Android 定时器实现图片的变换

2019年07月24日  | 移动技术网移动技术  | 我要评论
android 定时器实现图片的变换 在android中,要让每秒进行一次ui更新,就需要利用到定时器和handler,message的结合,如果不使用handler就不

android 定时器实现图片的变换

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

代码如下: 

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 定时器的应用,如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网