带有比例标签的动画列表在棉花糖中不起作用

Posted

技术标签:

【中文标题】带有比例标签的动画列表在棉花糖中不起作用【英文标题】:animation-list with scale tag not working in Marshmallow 【发布时间】:2016-09-29 16:01:19 【问题描述】:

我有一个可绘制的动画列表 xml anim_progress.xml:

<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:duration="100"> 
        <scale android:drawable="@drawable/frame_1" android:scaleGravity="center"/> 
    </item>

    <item android:duration="100"> 
        <scale android:drawable="@drawable/frame_2" android:scaleGravity="center"/> 
    </item>

    <item android:duration="100"> 
        <scale android:drawable="@drawable/frame_3" android:scaleGravity="center"/> 
    </item>

    .
    .
    .

</animation-list>

我使用scale 标记,因为图像frame_x.png 比容器视图大。原因在于能够适应大多数屏幕尺寸。

我将此帧动画用作自定义 ProgressBar 的 indeterminateDrawable

<ProgressBar 
    android:layout_
    android:layout_
    android:indeterminateOnly="true"
    android:indeterminate="true"
    android:foregroundGravity="center"
    android:indeterminateDrawable="@drawable/anim_progress"
    /> 

它在 Marshmallow 之前的 Android 版本中运行良好。我检查了模拟器和设备。 但在 Marshmallow 中,它什么也没显示。空白的空间。以及 Android Studio 中的预览窗格。

如果我从 animation-list 中删除 scale 标记,它在 Marshmallow 中运行良好,并且可以正确缩放,但在其他 Android 版本中似乎被裁剪。

我知道我可以在drawable-v23 文件夹中制作单独的文件,在此之前我想问一下是否有人可以分享其他通过 xml 在 Marshmallow 中绘制进度条框架动画的技术。

【问题讨论】:

【参考方案1】:

我遇到了同样的问题。我不知道为什么它在 Marhmallow 中不起作用,但解决方法是使用旋转作为 intermediatDrawable 而不是动画列表。

类似这样的:

<rotate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="250"
android:fromDegrees="359"
android:toDegrees="0"
android:pivotX="50%"
android:pivotY="50%"
android:repeatCount="infinite"
android:interpolator="@android:anim/linear_interpolator"
android:drawable="@drawable/icn_refresh">
</rotate>

【讨论】:

是的,旋转会起作用,但它不适用于动画列表:) 我的情况是我有一个非旋转对象的逐帧动画,所以旋转无济于事。跨度> 【参考方案2】:

我们在 Marshmallow 上运行时也遇到了这个问题。一位同事指出,可以通过像这样修改 xml 来修复它:

<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android">

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

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

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

    .
    .
    .

</animation-list>

我不知道为什么这可以解决问题。对您而言,如果需要 android:scaleGravity 属性,您可能需要重新添加它。

【讨论】:

以上是关于带有比例标签的动画列表在棉花糖中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

带有约束的 UIViewAnimation 在 Swift 中不起作用

Html 列表标签在 android textview 中不起作用。我能做些啥?

带有剪切路径的动画:插入在Safari中不起作用

为啥这个 CSS3 动画在 Safari 和 Chrome 中不起作用?

Swift - UIScrollView 滚动动画在 viewDidLoad() 中不起作用

jQuery 动画不透明度在 Safari 中不起作用