使用帧动画在5.0以上不会自动播放

本文探讨了帧动画在华为5.0平板上不自动播放的问题,并提供了解决方案,包括手动启动动画的具体实现方法。同时介绍了如何在一个帧动画中实现部分循环播放。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在使用帧动画进行播放的时候,在5.0的以上的华为平板不会自动播放
<?xml version="1.0" encoding="utf-8"?><!--
    根标签为animation-list,其中oneshot代表着是否只展示一遍,设置为false会不停的循环播放动画  
    根标签下,通过item标签对动画中的每一个图片进行声明  
    android:duration 表示展示所用的该图片的时间长度  
 -->
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
    android:oneshot="false">

    <item
        android:drawable="@mipmap/inhemeter_circle_1"
        android:duration="100"></item>
    <item
        android:drawable="@mipmap/inhemeter_circle_2"
        android:duration="100"></item>
    <item
        android:drawable="@mipmap/inhemeter_circle_3"
        android:duration="100"></item>
    <item
        android:drawable="@mipmap/inhemeter_circle_4"
        android:duration="100"></item>
    <item
        android:drawable="@mipmap/inhemeter_circle_5"
        android:duration="100"></item>
    <item
        android:drawable="@mipmap/inhemeter_circle_6"
        android:duration="100"></item>
    <item
        android:drawable="@mipmap/inhemeter_circle_7"
        android:duration="100"></item>
    <item
        android:drawable="@mipmap/inhemeter_circle_8"
        android:duration="100"></item>
    <item
        android:drawable="@mipmap/inhemeter_circle_9"
        android:duration="100"></item>
    <item
        android:drawable="@mipmap/inhemeter_circle_10"
        android:duration="100"></item>
    <item
        android:drawable="@mipmap/inhemeter_circle_11"
        android:duration="100"></item>


</animation-list>


<ImageView
    android:id="@+id/inhemeter_water"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true"
    android:src="@drawable/inhemeter_circle_animation" />



解决的方法是手动进行动画的播放
1.首先找到动画,然后启动start

/**
 * 启动税波纹的动画
 */
public void water_animation_start() {
    AnimationDrawable animationDrawable = (AnimationDrawable) inhemeter_water.getDrawable();
    animationDrawable.stop();
    animationDrawable.start();
}


当出现需求是在一个帧动画中部分需要循环播放的时候
<?xml version="1.0" encoding="utf-8"?><!--
    根标签为animation-list,其中oneshot代表着是否只展示一遍,设置为false会不停的循环播放动画  
    根标签下,通过item标签对动画中的每一个图片进行声明  
    android:duration 表示展示所用的该图片的时间长度  
 -->
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
    android:oneshot="true">

    <item
        android:drawable="@mipmap/water_less_1"
        android:duration="100"></item>
    <item
        android:drawable="@mipmap/water_less_2"
        android:duration="100"></item>
    <item
        android:drawable="@mipmap/water_less_3"
        android:duration="100"></item>
    <item
        android:drawable="@mipmap/water_less_4"
        android:duration="100"></item>
    <item
        android:drawable="@mipmap/water_less_5"
        android:duration="100"></item>
    <item
        android:drawable="@mipmap/water_less_6"
        android:duration="100"></item>
    <item
        android:drawable="@mipmap/water_less_7"
        android:duration="100"></item>
    <item
        android:drawable="@mipmap/water_less_8"
        android:duration="100"></item>

    <item
        android:drawable="@drawable/inhemeter_circle_animation"
        android:duration="100"></item>


</animation-list>

然后在5.0以上的时候适配:

 * 启动税波纹的动画
 */
public void water_animation_again() {
    AnimationDrawable animationDrawable = (AnimationDrawable) inhemeter_water.getDrawable();
    AnimationDrawable frame =(AnimationDrawable) animationDrawable.getFrame(8);
    frame.stop();
    animationDrawable.stop();

    animationDrawable.start();
    frame.start();
}












                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值