Android 定时器实现图片的变换
时间:2022-07-28
本文章向大家介绍Android 定时器实现图片的变换,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
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 定时器的应用,如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
- 在ASP.NET MVC5应用程序中快速接入QQ和新浪微博OAuth起步创建应用程序使用NUGET更新OWIN中间件启动SSL支持申请腾讯QQ的Oauth申请新浪微博的Oauth快速接入资源地址&源码
- 有趣的算法(六) ——Find-Union算法
- 有趣的算法(七) ——快速排序改进算法
- 编写你人生中第一个机器学习代码吧!
- 使用Octave来学习Machine Learning(二)
- RESTful API的十个最佳实践1. 使用名词而不是动词 2. Get方法和查询参数不应该改变资源状态3. 使用名词的复数形式 4. 为关系使用子资源 5. 使用HTTP头决定序列化格式 6. 使
- MYSQL数据库设计的一些小技巧[转载]
- 在ASP.NET 5应用程序中的跨域请求功能详解什么是“同域”添加CORS包在应用程序中配置CORSCORS策略选项跨域请求中的凭据设置先行请求的过期时间CORS是怎么样工作的先行请求
- 有趣的算法(八) ——红黑树插入算法
- 使用Donut Caching和Donut Hole Caching在ASP.NET MVC应用中缓存页面何时使用Donut CachingDonut Caching 的Nuget 包Donut Ho
- 有趣的算法(九) ——蛇形数组
- 有趣的算法(十一) ——分治法:快速求最值
- ASP.NET AJAX(3)__UpdatePanel
- 正则表达式学习笔记
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- WordPress 静态化部署到云开发网站托管
- 如何用云应用快速部署一个nodebb的开源论坛
- 【一起学系列】之装饰器模式:不改代码增强功能?
- Hello!GitHub 好用好玩值得收藏的开源项目集合~
- 【一起学系列】之工厂模式:产品?产品族?
- 再见,Navicat!同事安利的这个IDEA的兄弟,真香!
- 【一起学系列】之单例模式:只推荐三种~
- 【一起学系列】之命令模式:封装一个简单Jedis?
- 轻松学Pytorch-实现自定义对象检测器
- Elasticsearch 升级 7.x 版本后,我感觉掉坑里了!
- 【一起学系列】之适配器模式:还有外观模式呢
- 【翻译】200行代码讲透RUST FUTURES (5)
- Unable to preventDefault inside passive event listener
- js 停止事件冒泡 阻止浏览器的默认行为(阻止a标签跳转 )
- EmitMapper的使用小结