我想更改ProgressBar
的默认动画,所以我在主题中添加了自定义样式:
<style name="ProgressTheme" parent="@android:style/Widget.ProgressBar.Large">
<item name="android:indeterminateDrawable">@drawable/spinner_holo_light</item>
</style>
我在ProgressBar
中使用以下内容调用此样式:
<ProgressBar
android:id="@+id/loadingProgressBar"
style="@style/ProgressTheme"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
问题出在spinner_holo_light.xml
:
如果我使用以下内容,一切在使用os 3.0+的设备上运行正常,但进度不会在旧的os版本上轮换:
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
android:drawable="@drawable/spinner_76_inner_holo"
android:fromDegrees="720"
android:pivotX="50%"
android:pivotY="50%"
android:toDegrees="0" />
但是如果我使用animate-rotate
代替,那么动画适用于每个操作系统版本,但结果是一个非常迟钝的动画。
<animated-rotate xmlns:android="http://schemas.android.com/apk/res/android"
android:drawable="@drawable/spinner_76_inner_holo"
android:fromDegrees="720"
android:pivotX="50%"
android:pivotY="50%"
android:toDegrees="0" />
你怎么看?我在这里做错了吗?
答案 0 :(得分:11)
在较早的设备上,当android:fromDegrees
大于android:toDegress
中的<rotate>
时,这是一个问题。尝试交换值:
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
android:drawable="@drawable/spinner_76_inner_holo"
android:fromDegrees="0"
android:pivotX="50%"
android:pivotY="50%"
android:toDegrees="720" />
或者,您可以尝试将其设置为无限:
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
android:drawable="@drawable/spinner_76_inner_holo"
android:pivotX="50%"
android:pivotY="50%"
android:repeatCount="infinite" />
旧设备上的动画可能会滞后。要解决这个问题,请将android:animationResolution
添加到样式中:
<style name="ProgressTheme" parent="@android:style/Widget.ProgressBar.Large">
<item name="android:indeterminateDrawable">@drawable/spinner_holo_light</item>
<item name="android:animationResolution">33</item>
</style>
答案 1 :(得分:1)
制作进度对话框的透明背景。
使边框减少进度对话框。
定制圆形进度对话框的微调器颜色。
http://pankajchunchun.wordpress.com/2011/09/10/customization-of-spinner-progress/
答案 2 :(得分:0)
即使添加
,我也无法在三星Galaxy S Plus上运行<item name="android:animationResolution">33</item>
我问的问题类似于你的回应@Tomik
Android Progress Bar slow rotation on pre HoneyComb devices
确定所有预蜂窝设备是否顺畅?
答案 3 :(得分:0)
我通过将BackGround xml自定义格式更改为indeterminateDrawable解决了这个问题
使用 android:indeterminateDrawable ,但 android:BackGround
<ProgressBar
android:layout_centerHorizontal = "true"
android:layout_centerVertical = "true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:indeterminateDrawable = "@drawable/progressbar"
android:id="@+id/progressBar"
android:indeterminate = "true"/>
和自定义进度栏XML代码
<?xml version="1.0" encoding="utf-8" ?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromDegrees="0"
android:pivotX="50%"
android:pivotY="50%"
android:toDegrees="360">
<shape android:shape="ring" android:innerRadiusRatio="3"
android:thicknessRatio="7" android:useLevel="false">
<size android:width="76dip" android:height="76dip" />
<gradient android:type="sweep" android:useLevel="false"
android:startColor="@android:color/transparent"
android:endColor="#00FF00"
android:angle="0" />
</shape>
</rotate>