Android动画背景图自动播放的实现
我们在开发android应用的时候,经常会遇到类似从网络加载大图,在加载的过程中,在图片要显示的ImageView位置,先显示一个转圈的loading动画图,给用户的体验会更好一些,要实现这个动画图很简单,使用在/res/anim中定义xml的方式,通常使用…. 来实现。
不过大多数朋友都会遇到的问题是,动画是做好了,但是界面在加载的时候,动画并不会自动播放,还得通过屏幕点击等事件来触发,这就失去了意义了,实际上,android的动画AnimationDrawable 组件里面有个start()方法用于启动动画播放,但是这个方法不能直接写在onClick,onStart,onResume里面,写进去也是无效的,无法启动动画,只能写在比如事件监听当中,于是我们可以使用点小技巧来实现自动播放
目前我知道的有三种方法:
方法一:使用Runnalbe()来加载
final AnimationDrawable animationDrawable = (AnimationDrawable)imageView.getBackground();
imageView.post(new Runnable() {
@Override
public void run() {
animationDrawable.start();
}
});
方法二:使用AsyncTask异步加载启动
AnimationDrawable animationDrawable = (AnimationDrawable) imageView.getBackground();
RunAnim runAnim=new RunAnim();
runAnim.execute(\"\");
class RunAnim extends AsyncTask
@Override
protected String doInBackground(String... params) {
if (!animationDrawable.isRunning()) {
animationDrawable.stop();
animationDrawable.start();
}
return \"\";
}
}
方法三:通过添加addOnPreDrawListener来自动加载
AnimationDrawable animationDrawable = (AnimationDrawable) imageView.getBackground();
imageView.getViewTreeObserver().addOnPreDrawListener(preDrawListener);
OnPreDrawListener preDrawListener = new OnPreDrawListener(){
@Override
public boolean onPreDraw() {
animationDrawable.start();
return true; //必须要有这个true返回
}
};
以上三种方法经过测试没有问题,另外网上有一些说使用重写Activity的onWindowFocusChanged()方法来实现,但是还是有不足,得改变焦点才能触发,虽然理论可以自动实现改变焦点,感觉还是不甚可取。
建议继续学习:
- android 开发入门 (阅读:19235)
- Android 连接SSID隐藏网络以及 LEAP 认证的方法 (阅读:9305)
- 手机产品设计方向 (阅读:7715)
- 实时监控Android设备网络封包 (阅读:6326)
- Eclipse开发Android应用程序入门:重装上阵 (阅读:6230)
- 基于 PhoneGap 与 Java 开发的 Android 应用的性能对比 (阅读:6192)
- Android 4.0平台交互简析 (阅读:6128)
- Android用户界面设计:表格布局 (阅读:6008)
- Windows下使用VMware安装Android (阅读:5469)
- Eclipse开发Android应用程序入门 (阅读:5437)
扫一扫订阅我的微信号:IT技术博客大学习
- 作者:Michael 来源: Michael`s blog
- 标签: Android 背景图
- 发布时间:2012-06-19 23:52:17
-
[1085] WordPress插件开发 -- 在插件使用 -
[57] 你必须了解的Session的本质 -
[50] cookie窃取和session劫持 -
[49] 页面停留时间和网站停留时间详解 -
[45] 关于IO的同步,异步,阻塞,非阻塞 -
[45] 并发框架Disruptor译文 -
[44] 30套最好的网站开发与设计中使用的小型图标 -
[44] 解读iPhone平台的一些优秀设计思路 -
[44] HBase二级索引与Join -
[43] 我对技术方向的一些反思
