ori*_*rel 53 customization animation android progress-bar
我在Android代码中进行了一些挖掘,并在不确定的进度条中看到了它的使用.尝试使用此标记创建自己的drawable后:
<animated-rotate xmlns:android="http://schemas.android.com/apk/res/android"
android:drawable="@drawable/spinner_pia"
android:pivotX="50%"
android:pivotY="50%"
android:framesCount="12"
android:frameDuration="100" />
Run Code Online (Sandbox Code Playgroud)
我收到一个错误:"没有找到包''android'中属性'frameDuration'的资源标识符" - 这意味着frameDuration是一个私有属性.有没有办法使用这个"动画旋转"功能?
我的任务是替换系统的默认不确定进度条.我想尽可能少地编写代码(如果可能的话,只需更改一些属性).使用ProgressBar视图,设置:
android:indeterminateOnly="true"
android:indeterminateBehavior="cycle"
android:indeterminateDuration="3500"
android:indeterminateDrawable="@drawable/pia_sivuvator"
Run Code Online (Sandbox Code Playgroud)
并指向该对象的"@ drawable/pia_sivuvator"将使我的任务变得优雅,但我仍然坚持这些私有属性.
救命?
Ian*_*ton 61
我遇到了完全相同的问题.您可以排除这些参数(framesCount和frameDuration),它可能适合您.我尝试将它们排除在外并且动画很好,但是我设置的宽度/高度没有得到尊重,所以我最终创建了一个简单的旋转动画和一个ImageView来应用它.这是动画文件(res/anim/clockwise_rotation.xml):
<?xml version="1.0" encoding="utf-8"?>
<rotate
xmlns:android="http://schemas.android.com/apk/res/android"
android:fromDegrees="0"
android:interpolator="@android:anim/linear_interpolator"
android:toDegrees="360"
android:pivotX="50%"
android:pivotY="50%"
android:duration="1000"
android:startOffset="0"
/>
Run Code Online (Sandbox Code Playgroud)
然后你只需夸大你的动画,设置重复计数,然后从视图中启动它
Animation rotation = AnimationUtils.loadAnimation(this, R.anim.clockwise_rotation);
rotation.setRepeatCount(Animation.INFINITE);
myView.startAnimation(rotation);
Run Code Online (Sandbox Code Playgroud)
我不知道如何解决私有属性,我有同样的问题.
顺便说一句,如果你想改变ProgressBar的那些属性:
android:indeterminateOnly="true"
android:indeterminateBehavior="cycle"
android:indeterminateDuration="3500"
android:indeterminateDrawable="@drawable/pia_sivuvator"
Run Code Online (Sandbox Code Playgroud)
你可以轻松地使用Styles框架在values/styles.xml文件中定义一个扩展标准android的ProgressBar样式:
<style name="YourProgressBarStyle" parent="@android:style/Widget.ProgressBar">
<item name="android:indeterminateDrawable">@drawable/progress_bar_indeterminate</item>
</style>
Run Code Online (Sandbox Code Playgroud)
然后将其应用于xml布局文件中的进度条.
...
<ProgressBar
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/YourProgressBarStyle"/>
...
Run Code Online (Sandbox Code Playgroud)
而不是创建动画(需要更多代码,不仅仅是XML配置),layer-list而是使用可绘制资源.有趣的layer-list是,它比流动更流畅animated-rotate.
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<rotate
android:drawable="@drawable/spinner_loading"
android:pivotX="50%"
android:pivotY="50%"
android:fromDegrees="0"
android:toDegrees="360"/>
</item>
</layer-list>
Run Code Online (Sandbox Code Playgroud)
然后当然在Mario Lenci所写的样式中使用它:
<style name="YourProgressBarStyle" parent="@android:style/Widget.ProgressBar">
<item name="android:indeterminateDrawable">@drawable/progress_bar_indeterminate</item>
</style>
Run Code Online (Sandbox Code Playgroud)
我通过使用这个drawable xml解决了这个问题.虽然在较新版本的Android上看起来似乎很顺利:
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
android:drawable="@drawable/spinner_pia"
android:fromDegrees="0"
android:pivotX="50%"
android:pivotY="50%"
android:toDegrees="1080" />
Run Code Online (Sandbox Code Playgroud)