Android 定时器实现图片的变换

发布时间 - 2026-01-11 02:45:48    点击率:

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


# Android  # 定时器  # 定时器的应用实例  # Android使用Handler实现定时器与倒计时器功能  # Android定时器和倒计时实现淘宝秒杀功能  # 详解Android实现定时器的几种方法  # Android定时器Timer的停止和重启实现代码  # Android实现定时器的五种方法实例详解  # Android 实现定时器的四种方式总结及实现实例  # Android中使用定时器的三种方法  # Android定时器实现的几种方式整理及removeCallbacks失效问题解决  # 基于Android中实现定时器的3种解决方法  # Android定时器实现定时执行、重复执行、定时重复执行、定次数执行的多种方式  # 就不  # 如有  # 中有  # 要在  # 这段  # 希望能  # 要让  # 谢谢大家  # 能达到  # 用完  # 需要注意  # 两点  # 疑问请  # 被干  # linearlayout  # extends  # Activity  # private  # ImageView  # widget 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 高防服务器:AI智能防御DDoS攻击与数据安全保障  如何在 Go 中优雅地映射具有动态字段的 JSON 对象到结构体  怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?  javascript中对象的定义、使用以及对象和原型链操作小结  Bootstrap整体框架之JavaScript插件架构  PythonWeb开发入门教程_Flask快速构建Web应用  Laravel如何创建自定义Facades?(详细步骤)  Laravel Admin后台管理框架推荐_Laravel快速开发后台工具  使用C语言编写圣诞表白程序  免费网站制作appp,免费制作app哪个平台好?  Laravel如何实现数据导出到PDF_Laravel使用snappy生成网页快照PDF【方案】  原生JS获取元素集合的子元素宽度实例  如何在景安服务器上快速搭建个人网站?  宙斯浏览器视频悬浮窗怎么开启 边看视频边操作其他应用教程  JS碰撞运动实现方法详解  如何快速辨别茅台真假?关键步骤解析  ,网页ppt怎么弄成自己的ppt?  如何基于PHP生成高效IDC网络公司建站源码?  Laravel如何实现一对一模型关联?(Eloquent示例)  如何利用DOS批处理实现定时关机操作详解  Win11怎么关闭透明效果_Windows11辅助功能视觉效果设置  Laravel如何使用Passport实现OAuth2?(完整配置步骤)  电视网站制作tvbox接口,云海电视怎样自定义添加电视源?  如何快速生成专业多端适配建站电话?  晋江文学城电脑版官网 晋江文学城网页版直接进入  如何自定义建站之星模板颜色并下载新样式?  如何用低价快速搭建高质量网站?  Laravel如何配置任务调度?(Cron Job示例)  今日头条微视频如何找选题 今日头条微视频找选题技巧【指南】  zabbix利用python脚本发送报警邮件的方法  Laravel模型关联查询教程_Laravel Eloquent一对多关联写法  如何在建站之星网店版论坛获取技术支持?  如何在云主机上快速搭建多站点网站?  如何在橙子建站上传落地页?操作指南详解  Laravel怎么配置.env环境变量_Laravel生产环境敏感数据保护与读取【方法】  bing浏览器学术搜索入口_bing学术文献检索地址  使用PHP下载CSS文件中的所有图片【几行代码即可实现】  香港服务器建站指南:免备案优势与SEO优化技巧全解析  实例解析angularjs的filter过滤器  Linux后台任务运行方法_nohup与&使用技巧【技巧】  Laravel如何实现URL美化Slug功能_Laravel使用eloquent-sluggable生成别名【方法】  微信小程序 HTTPS报错整理常见问题及解决方案  原生JS实现图片轮播切换效果  如何用西部建站助手快速创建专业网站?  如何在不使用负向后查找的情况下匹配特定条件前的换行符  HTML透明颜色代码怎么让图片透明_给img元素加透明色的技巧【方法】  Laravel如何实现文件上传和存储?(本地与S3配置)  百度输入法ai面板怎么关 百度输入法ai面板隐藏技巧  如何用狗爹虚拟主机快速搭建网站?  JavaScript常见的五种数组去重的方式