android 定时器,每秒变换一次图片!
2011-04-11 19:11
411 查看
在android中,要让每秒进行一次ui更新,就需要利用到定时器和handler,message的结合,如果不使用handler就不能达到更新ui的效果,我的理解是handler中存在一个队列问题,可以保证不产生阻塞。
代码如下:
在这段代码中有两点需要注意:
第一:在更新完图片后,需要刷新整个布局,linearlayout.invalidate();
第二:在用完定时器timer后,要在Activity被干掉的同时销毁定时器timer。
代码如下:
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 定时器,每秒变换一次图片!
- android 再谈定时器 timer 每秒更新一次!
- Android 定时器实现图片的变换
- Android图片加载框架最全解析(五),Glide强大的图片变换功能
- 通过jni调用OpenCv跟直接调用android版openCv对图片进行简单的变换
- c# 刷新一次图片随机变换一次的页面代码
- android讲义2之图片变换
- Android图片加载框架最全解析(五),Glide强大的图片变换功能
- android 点击字体,图片背景效果一起变换Demo
- android 点击时背景图片 、 文字颜色变换
- JS 实现背景图片的自动变换(设定每3秒变化一次)
- android 获得最近一次拍照 截屏 下载等,的图片路径
- [Android]图片处理 矩阵变换相关
- android 图像颜色处理 图像的亮度变换 更改图片饱和度
- Android中实现点击变换图片
- Android 定时器 (每隔N秒执行一次).
- 承香墨影 Android--Matrix图片变换处理
- Android图片色彩变换实现方法
- Android 之 图片变换
- 分享一个自己利用javascript中的window.setInterval()定时器实现页面背景图片变换的特效(同时淡入淡出效果)