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

问题描述 投票:6回答:2

我有一个动画列表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中可绘制的进度条框架动画。

android xml animation scale android-6.0-marshmallow
2个回答
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>

0
投票

在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属性,您可能需要重新添加它。

© www.soinside.com 2019 - 2024. All rights reserved.