`
berdy
  • 浏览: 514209 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

解决Android帧动画在Oncreate中启动只显示第一帧

阅读更多
做了个简单的帧动画,在onCreate方法中start,发现只能看到第一帧
<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
    android:oneshot="false" >

    <item
        android:drawable="@drawable/fire01"
        android:duration="200"/>
    <item
        android:drawable="@drawable/fire02"
        android:duration="200"/>
    <item
        android:drawable="@drawable/fire03"
        android:duration="200"/>
    <item
        android:drawable="@drawable/fire04"
        android:duration="200"/>
    <item
        android:drawable="@drawable/fire05"
        android:duration="200"/>
    <item
        android:drawable="@drawable/fire06"
        android:duration="200"/>
    <item
        android:drawable="@drawable/fire07"
        android:duration="200"/>
    <item
        android:drawable="@drawable/fire08"
        android:duration="200"/>
    <item
        android:drawable="@drawable/fire09"
        android:duration="200"/>

</animation-list>


<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
	>
	<ImageView
        android:id="@+id/fire_img"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:background="@drawable/fire_anim" />
</RelativeLayout>


	ImageView fireImg = null;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		ImageView fireImg = (ImageView) findViewById(R.id.fire_img);
		final AnimationDrawable animDrawable = (AnimationDrawable) fireImg
				.getBackground();
		animDrawable.start();
	}


stackoverflow 上发现一个解决办法
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		ImageView fireImg = (ImageView) findViewById(R.id.fire_img);
		final AnimationDrawable animDrawable = (AnimationDrawable) fireImg
				.getBackground();
		fireImg.post(new Runnable() {
			@Override
			public void run() {
				animDrawable.start();
			}
		});
	}


或者在Activity中的onWindowFocusChanged方法中start
	@Override
	public void onWindowFocusChanged(boolean hasFocus) {
		super.onWindowFocusChanged(hasFocus);
		if (fireImg != null) {
			AnimationDrawable animDrawable = (AnimationDrawable) fireImg
					.getBackground();
			animDrawable.start();
		}
	}
1
2
分享到:
评论
1 楼 plmmmmlq 2014-12-20  
爱死你了,困惑我几天的问题终于解决了。自定义dialog中加载帧动画,在2.3系统中不动,4.0的系统就正常,求原因。第二种方法试过,无效,我用第一种。感谢分享。

相关推荐

    Android 逐帧动画源码.rar

    在Android平台上,逐帧动画是一种常见的动画实现方式,它通过连续播放一系列的静态图像来创造出动态效果,类似于传统的电影制作手法。"Android 逐帧动画源码.rar"这个压缩包包含了一个关于Android逐帧动画的示例项目...

    Android_gif应用启动动画

    在Android开发中,应用启动动画(Splash Screen)是用户打开应用程序时首先看到的短暂界面,通常用来展示品牌标识、加载应用资源或者进行一些初始化操作。本文将深入探讨如何实现一个基于GIF的Android应用启动动画,...

    android动画之frame

    或者在XML布局文件中直接将帧动画设置为View的背景,并在Activity的`onCreate()`方法中启动动画: ```xml android:id="@+id/imageView" android:layout_width="wrap_content" android:layout_height="wrap_...

    Android App 启动时显示正在加载图片

    在Android应用开发中,"Android App 启动时显示正在加载图片"是一个常见的用户体验优化策略。这个过程通常称为启动画面或者加载屏幕,它的目的是在应用程序的实际内容加载完成之前,为用户提供一个平滑的过渡,避免...

    安卓GIF相关-Android的gif动画代码例子为方便对比同时也实现了帧动画的代码。.rar

    - 学习和理解示例代码中的关键函数和逻辑,有助于深入理解Android动画系统。 5. **学习与实践** - 通过阅读`JavaApk源码说明.txt`,可以了解代码结构和实现原理,这对理解GIF和帧动画的处理机制非常有帮助。 - `...

    Android开发教程之动画框架详解,第 1 部分

    在清单1所示的代码中,我们可以看到如何创建一个简单的旋转动画。`RotateAnimation`类被用来定义动画,包括旋转的方向、初始角度和最终角度。`AccelerateDecelerateInterpolator`是一个插值器,用于控制动画的速度...

    Android 动画之帧动画用法详解

    帧动画概念在Android开发中,帧动画是一种基本的动画形式,它通过连续播放一系列静态图像(帧)来创建动态效果,类似于传统的电影制作原理。每一帧都是一个独立的图片资源,当这些帧按照一定的速度顺序播放时,就会...

    Android引导动画.zip

    5. **添加启动逻辑**:在Application或MainActivity的onCreate方法中,判断是否是首次启动应用,如果是,则显示引导动画,否则直接进入主界面。这个判断可以通过SharedPreferences实现。 6. **测试与优化**:在...

    序列帧动画,开始,结束监听的解决.rar

    本资源提供了一个关于如何在Android中实现序列帧动画,并添加开始和结束监听的解决方案。 序列帧动画的基本原理是利用`AnimationDrawable`类,它是一个可以包含多个`Drawable`的动画,每个`Drawable`代表一帧。以下...

    android首次启动只展示一次向导页功能实现

    通过以上步骤,你可以成功地在Android应用中实现首次启动只展示一次的向导页功能,同时还能根据需求自定义每个页面的布局和页码指示器样式。这个功能不仅提升了用户体验,也能有效地引导用户了解应用的核心特性。

    android显示GIF动画

    本文将深入探讨如何在Android应用中显示GIF动画,并结合一个实际案例来阐述这一过程。 首先,我们需要理解GIF格式。GIF是一种无损压缩的图像格式,特别适用于创建简单的动画,因为它支持多帧图像和透明度。在...

    android Activity切换动画多种方式

    1. 使用`overridePendingTransition()`方法:此方法允许你在启动或结束一个Activity时指定一个进入动画和一个退出动画。例如: ```java override fun onCreate(savedInstanceState: Bundle?) { super.onCreate...

    Android解决启动黑屏问题

    2. **使用Splash Screen(启动画面)**:创建一个简单的启动画面,可以是一张图片或简单的动画,将其设置为应用程序启动时的第一个Activity。这个Splash Screen应该设计得轻量级,避免在此页面执行复杂的逻辑。通过...

    Android引导页切换带动画

    - **Activity生命周期**:利用Activity的onCreate()方法加载第一张引导页,然后通过动画效果切换到下一张。 - **帧动画**:可以使用Android提供的帧动画资源(`&lt;animation-list&gt;`),将多张图片按顺序设置,通过...

    解决应用启动时白屏或者黑屏的问题

    启动画面可以是一个简单的Activity或者一个Service,用于显示一个预先准备好的图像或者动画,直到主Activity准备好并接管屏幕。 1. **创建启动画面Activity**: 创建一个新的Activity,命名为`SplashActivity`,并...

    Android应用源码之程序启动界面Demo(动态).zip

    在Android中,这可以通过创建一个新的Activity来实现,该Activity作为应用的第一个入口。 2. **动画效果** 动态启动界面涉及到Android的动画API。可以使用`AnimationDrawable`或`ValueAnimator`来创建动画效果。`...

    Splashy,Android的启动屏幕库.zip

    3. **启动和关闭**:在适当的时候启动和关闭Splashy,通常在onCreate()方法中启动,onSplashFinished()回调后关闭。 4. **自定义动画**:如果需要自定义动画,可以通过继承`SplashAnimator`类并重写相关方法来实现...

    android启动页面源码

    在Android应用开发中,启动页面(也称为启动屏或欢迎界面)是用户首次打开应用时看到的第一个界面。这个界面通常包含品牌标识、加载动画或简单的欢迎信息,为应用的加载过程提供视觉反馈,同时提高用户体验。本文将...

    Android应用程序启动时背景画面的切换

    在Android开发中,当应用程序启动时,用户通常会看到一个过渡背景画面,这被称为启动屏幕或启动主题。这个过程涉及到Android应用程序的UI设计、主题应用以及活动(Activity)的生命周期管理。下面我们将深入探讨如何...

    Android实现过渡动画、引导页 Android判断是否第一次启动App

    这段代码中的`Handler`会在两秒后执行`Runnable`中的逻辑,根据`SharedPreferences`判断是否是第一次启动。如果是首次启动(`isFirstIn`为`true`),则跳转到引导页`GuideActivity`,否则直接跳转到主页面`...

Global site tag (gtag.js) - Google Analytics