这个AnimationDrawable.start不能直接写在onClick,onStart,onResume里面,是无效的,无法启动动画,只能写在比如事件监听当中。
第一种方式启动帧动画:(在Activity启动时会自动运行动画)
AnimationDrawable ad; ImageView iv = (ImageView) findViewById(R.id.animation_view); iv.setBackgroundResource(R.drawable.animation); ad = (AnimationDrawable) iv.getBackground(); iv.getViewTreeObserver().addOnPreDrawListener(opdl); //当一个视图树将要绘制时产生事件,可以添加一个其事件处理函数 OnPreDrawListener opdl=new OnPreDrawListener(){ @Override public boolean onPreDraw() { ad.start(); return true; //注意此行返回的值 } };
第二种方式启动动画:(在Activity启动时会自动运行动画)
ImageView image = (ImageView) findViewById(R.id.animation_view); image.setBackgroundResource(R.anim.oldsheep_wait); animationDrawable = (AnimationDrawable) image.getBackground(); RunAnim runAnim=new RunAnim(); runAnim.execute(""); class RunAnim extends AsyncTask<String, String, String> { @Override protected String doInBackground(String... params) { if (!animationDrawable.isRunning()) { animationDrawable.stop(); animationDrawable.start(); } return ""; } }
第三种方式启动动画:(在Activity启动时会自动运行动画)
这个已经测试,肯定管用
ImageView image = (ImageView) findViewById(R.id.animation_view); image.setBackgroundResource(R.anim.oldsheep_wait); animationDrawable = (AnimationDrawable) image.getBackground(); image.post(new Runnable() { @Override public void run() { animationDrawable.start(); } });
第四种方式启动动画:(在Activity启动时会自动运行动画)
ImageView image = (ImageView) findViewById(R.id.animation_view); image.setBackgroundResource(R.anim.oldsheep_wait); animationDrawable = (AnimationDrawable) image.getBackground(); @Override public void onWindowFocusChanged(boolean hasFocus) { animationDrawable.start(); super.onWindowFocusChanged(hasFocus); }
相关推荐
在Android开发中,帧动画(Frame Animation)是一种常见的实现动态效果的方法,它通过连续播放一系列静态图片来模拟动画效果。然而,在处理大量的帧动画时,可能会遇到内存溢出(Out Of Memory, OOM)的问题,这严重...
这个项目提供了一种解决序列帧动画监听问题的方案,对于Android移动应用开发的学习者来说,这是一个很好的实践案例,可以帮助理解如何在实际项目中运用动画效果并控制其行为。同时,这也是毕业设计或论文研究的一个...
帧动画太多造成内存泄漏问题,内含所需的JAR包:org.apache.commons.io.IOUtils,将Inputstream转为byte字节数组,减少内存泄漏 和关键代码,仅供参考,如有建议请在下方留言或添加咨询~~~
问题描述:假如一屏可以显示10个item项,如果第一个正在播放动画,此时往下滚动,当第一个item不可见时会发现下面新出来的item上面的动画会动。该资源就是解决这个问题。看到的网友有福了,附件解压后即可载入studio...
Android 播放Gif图片动画【源代码】,在Android 中是不支持直接使用Gif 图片关联播放帧动画,Android 提供了另外一种解决的办法,就是使用AnimationDrawable 这一函数使其支持逐帧播放,我们使用一款动画分割软件...
本知识点将探讨如何在Android中实现类似于Uber的启动动画,同时解决帧动画(Frame Animation)可能导致的内存溢出(Out of Memory,简称OOM)问题。 首先,帧动画是Android中一种常见的动画形式,它通过连续播放一...
要实现动画的开始和结束监听,可以使用`AnimationDrawable`类,它是一个可绘制对象,可以作为View的背景,并提供动画功能。在代码中获取这个对象,然后设置监听器: ```java ImageView imageView = findViewById...
在Android中,我们可以使用`AnimationDrawable`类来实现Frame动画。 **实现方式:** 1. **XML方式**:通常在res/anim目录下创建一个xml文件,定义帧的顺序、持续时间和重复行为。例如,可以设置`<animation-list>`...
在Android Studio中,如果直接使用`AnimationDrawable`或`ViewFlipper`来实现帧动画,那么在开启混淆时可能会导致动画无法正常工作,因为混淆会改变类和方法的名称,影响到动画的执行流程。`FAImageView`通过特殊的...
虽然帧动画简单易用,但过度使用或不恰当的配置可能会导致性能问题。尽量减少帧的数量,优化图片质量,避免在主线程中进行大量计算。此外,如果动画是无限循环的,可以考虑使用`ObjectAnimator`或`PropertyAnimator...
标题"dialog 使用帧动画,解决了不能满屏"所指出的问题,是在Dialog中应用帧动画来实现全屏显示的一种解决方案。 帧动画是Android中的一个动画类型,它通过连续播放一系列图像(帧)来创建动态效果。在Dialog中使用...
在Android开发中,序列帧动画(帧动画)是一种常见的动态效果实现方式,它通过连续播放一系列静态图片来形成动画效果。本资源包“Android应用源码之序列帧动画,开始,结束监听的解决”着重讨论如何在Android应用程序...
当标准动画无法满足需求时,可以自定义动画类,继承自Animation或Animator,并重写相关方法。例如,实现一个平滑滚动的ListView项动画,可能需要自定义一个ValueAnimator的子类。 7. 优化动画性能: 考虑到性能...
`AnimationDrawable`提供了`start()`和`stop()`方法来控制动画的播放,同时我们可以通过重写`AnimationDrawable`的`startListening()`和`end()`方法来添加监听。 ```java frameAnimation.start(); frameAnimation....
在安卓开发中,动画效果是提升用户体验的关键因素之一。这个压缩包"安卓动画效果相关-android一个雷达...同时,由于源码可能需要自行调整才能运行,这为学习过程增加了实践环节,有助于提升你的编程和问题解决能力。
本资料包聚焦于如何在Android应用中使用序列帧动画,并解决开始和结束监听的问题。 首先,让我们了解序列帧动画的基本原理。在Android中,可以使用`AnimationDrawable`类来实现序列帧动画。`AnimationDrawable`是一...
然而,需要注意的是,帧动画可能会消耗较多的内存和CPU资源,因此在性能敏感的场景下,可能需要考虑使用更高效的动画解决方案,如`ObjectAnimator`或`PropertyAnimator`。 总之,"帧动画Demo"是一个展示如何在...
在Android开发中,2D动画是提升用户体验的重要手段,它能为用户界面带来生动活泼的效果。本示例“Pro Android学习:2D动画小例子”...同时,理解动画原理也有助于解决动画相关的性能问题,从而提供更流畅的用户体验。
这个项目不仅包含了实际的源码,还可能关联了一篇毕业设计论文,其中详细阐述了动画实现的原理、设计思路以及可能遇到的问题和解决方案。通过阅读论文,可以加深对源码的理解。 7. App开发: 作为一个完整的App...