我有一个动画列表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中可绘制的进度条框架动画。
答案 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
属性,则可能需要重新添加。