带有缩放标记的动画列表在Marshmallow中不起作用

时间:2016-05-31 14:56:36

标签: android xml animation scale android-6.0-marshmallow

我有一个动画列表xml drawable 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_width="match_parent"
    android:layout_height="match_parent"
    android:indeterminateOnly="true"
    android:indeterminate="true"
    android:foregroundGravity="center"
    android:indeterminateDrawable="@drawable/anim_progress"
    /> 

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

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

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

2 个答案:

答案 0 :(得分:0)

我遇到了同样的问题。我不知道它为什么不在Marhmallow工作,但解决方法是使用rotate作为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>

答案 1 :(得分:0)

在棉花糖上运行时,我们也遇到了这个问题。一位同事指出,可以通过修改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属性,则可能需要重新添加。