Android 定时器实现图片的变换
作者:孵化恐龙蛋 时间:2021-05-28 00:33:13
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。
来源:http://blog.csdn.net/boyupeng/article/details/6316346
标签:Android,定时器
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
spring系列笔记之常用注解
2022-02-21 16:15:04
Android封装实现短信验证码的获取倒计时
2023-06-28 22:57:23
![](https://img.aspxhome.com/file/2023/9/82399_0s.gif)
C#进制之间的相互转换详解
2022-07-24 11:47:53
WPF使用WrapPanel实现虚拟化效果
2021-07-04 14:53:53
![](https://img.aspxhome.com/file/2023/8/116518_0s.gif)
SpringCloud之分布式配置中心Spring Cloud Config高可用配置实例代码
2021-06-23 16:48:08
![](https://img.aspxhome.com/file/2023/8/85408_0s.png)
C# 指针内存控制Marshal内存数据存储原理分析
2021-09-22 04:05:00
JDK14新特性之switch表达式的实现
2022-06-01 17:49:31
![](https://img.aspxhome.com/file/2023/4/70554_0s.png)
官方详解HDFS Balancer工具主要调优参数
2023-07-24 04:43:47
23种设计模式(14)java迭代器模式
2021-12-12 15:28:49
![](https://img.aspxhome.com/file/2023/0/83560_0s.jpg)
C#使用RabbitMq队列(Sample,Work,Fanout,Direct等模式的简单使用)
2023-12-06 10:45:34
![](https://img.aspxhome.com/file/2023/2/83302_0s.png)
Java中的拦截器、过滤器、监听器用法详解
2021-08-08 16:26:03
tk.mybatis如何扩展自己的通用mapper
2022-02-16 04:10:17
JAVA内存模型(JMM)详解
2023-11-23 16:54:32
![](https://img.aspxhome.com/file/2023/5/59975_0s.png)
Android 之Preference控件基本使用示例详解
2022-10-20 23:42:34
![](https://img.aspxhome.com/file/2023/9/86019_0s.jpg)
ObjectMapper 如何忽略字段大小写
2023-07-31 07:07:18
![](https://img.aspxhome.com/file/2023/9/57799_0s.png)
详解IDEA中SpringBoot整合Servlet三大组件的过程
2023-05-06 15:23:13
C#实现xml文件反序列化读入数据到object的方法
2023-08-20 00:43:08
Java如何实现自定义异常类
2023-06-21 23:44:01
Java8中对于LocalDateTime的序列化和反序列化问题
2023-11-14 15:37:41
SpringMVC使用RESTful接口案例
2021-10-10 20:03:45
![](https://img.aspxhome.com/file/2023/0/80920_0s.jpg)