首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Android动画旋转

Android动画旋转
EN

Stack Overflow用户
提问于 2010-12-05 23:04:02
回答 5查看 76.2K关注 0票数 54

我深入研究了Android代码,看到了在不确定进度条中的用法。在尝试使用此标记创建我自己的可绘制程序后:

代码语言:javascript
复制
<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" />

我得到一个错误:“在‘android’包中没有找到属性' frameDuration‘的资源标识符”--这意味着frameDuration是一个私有属性。有没有办法使用这个“动画-旋转”功能?

我的任务是替换系统的默认不确定进度条。我希望用尽可能少的代码来做这件事(如果可能的话,只需要修改几个属性)。使用ProgressBar视图,设置:

代码语言:javascript
复制
android:indeterminateOnly="true"
android:indeterminateBehavior="cycle"
android:indeterminateDuration="3500"
android:indeterminateDrawable="@drawable/pia_sivuvator"

并将"@drawable/pia_sivuvator“指向该对象,这将使我的任务与它们一样优雅,但我被那些私有属性所困住了。

帮助?

EN

回答 5

Stack Overflow用户

发布于 2011-01-31 07:20:16

我遇到了完全相同的问题。您可以排除这些参数(framesCount和frameDuration),它可能会为您工作。我试着排除它们,它的动画效果很好,但是我设置的宽度/高度没有得到尊重,所以我最终创建了一个简单的旋转动画和一个ImageView来应用它。以下是动画文件(res/anim/clockwise_rotation.xml):

代码语言:javascript
复制
<?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"
/>

然后你只需膨胀你的动画,设置重复次数,并从视图中启动它

代码语言:javascript
复制
Animation rotation = AnimationUtils.loadAnimation(this, R.anim.clockwise_rotation);
rotation.setRepeatCount(Animation.INFINITE);
myView.startAnimation(rotation);
票数 61
EN

Stack Overflow用户

发布于 2014-09-30 21:07:49

使用layer-list作为可绘制资源,而不是创建动画(需要更多代码,而不仅仅是XML配置)。非常有趣的是,layer-listanimated-rotate更具流动性。

代码语言:javascript
复制
<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>

当然,就像Mario Lenci写的那样,在样式中使用它:

代码语言:javascript
复制
<style name="YourProgressBarStyle" parent="@android:style/Widget.ProgressBar">
    <item name="android:indeterminateDrawable">@drawable/progress_bar_indeterminate</item>
</style>
票数 10
EN

Stack Overflow用户

发布于 2011-12-29 22:37:58

我不知道如何处理私有属性,我也有同样的问题。

顺便说一句,如果您想要更改ProgressBar的这些属性:

代码语言:javascript
复制
android:indeterminateOnly="true"
android:indeterminateBehavior="cycle"
android:indeterminateDuration="3500"
android:indeterminateDrawable="@drawable/pia_sivuvator"

你可以通过样式框架在values/styles.xml文件中定义一个ProgressBar样式来扩展标准的android样式,这很容易做到:

代码语言:javascript
复制
<style name="YourProgressBarStyle" parent="@android:style/Widget.ProgressBar">
        <item name="android:indeterminateDrawable">@drawable/progress_bar_indeterminate</item>
</style>

然后将其应用于xml布局文件中的进度条。

代码语言:javascript
复制
...
<ProgressBar
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     style="@style/YourProgressBarStyle"/>
...
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4359390

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档