【问题标题】:Android Animate RotateAndroid 动画旋转
【发布时间】:2011-05-20 13:14:57
【问题描述】:

我在 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" />

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

我的任务是替换系统默认的不确定进度条。我想用尽可能少的代码来做到这一点(如果可能的话,只需更改一些属性)。 使用 ProgressBar 视图,设置:

android:indeterminateOnly="true"
android:indeterminateBehavior="cycle"
android:indeterminateDuration="3500"
android:indeterminateDrawable="@drawable/pia_sivuvator"

并将“@drawable/pia_sivuvator”指向该对象会使我的任务变得优雅,但我被困在那些私有属性上。

帮助?

【问题讨论】:

  • 有同样的问题。排除参数(framesCountframeDuration)没有多大帮助。动画有效,但对我来说看起来不太好(动画不流畅,如低帧率)。在这个问题上创建了一个问题code.google.com/p/android/issues/detail?id=19248

标签: android animation progress-bar customization


【解决方案1】:

我遇到了完全相同的问题。您可以排除这些参数(framesCount 和 frameDuration),它可能对您有用。我尝试排除它们并且动画效果很好,但是我设置的宽度/高度没有得到尊重,所以我最终创建了一个简单的旋转动画和一个 ImageView 来应用它。这是动画文件(res/anim/itarian_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"
/>

然后您只需为动画充气,设置重复次数,然后从视图中启动它

Animation rotation = AnimationUtils.loadAnimation(this, R.anim.clockwise_rotation);
rotation.setRepeatCount(Animation.INFINITE);
myView.startAnimation(rotation);

【讨论】:

【解决方案2】:

不要创建动画(需要更多代码,而不仅仅是 XML 配置),而是使用 layer-list 作为可绘制资源。 有趣的是layer-listanimated-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>

然后当然可以在 Mario Lenci 所写的样式中使用它:

<style name="YourProgressBarStyle" parent="@android:style/Widget.ProgressBar">
    <item name="android:indeterminateDrawable">@drawable/progress_bar_indeterminate</item>
</style>

【讨论】:

  • 嗨,你是如何让它旋转的?我有一个 ImageView,它只显示一个仍然可以绘制的...thx
  • 动画对我有用,但前提是我使用“动画旋转”而不是“旋转”
【解决方案3】:

我不知道如何解决私有属性,我有同样的问题。

顺便说一下,如果你想改变 ProgressBar 的那些属性:

android:indeterminateOnly="true"
android:indeterminateBehavior="cycle"
android:indeterminateDuration="3500"
android:indeterminateDrawable="@drawable/pia_sivuvator"

您可以使用在 values/styles.xml 文件中定义的 Styles 框架轻松做到这一点,这是一种扩展标准 android 的 ProgressBar 样式:

<style name="YourProgressBarStyle" parent="@android:style/Widget.ProgressBar">
        <item name="android:indeterminateDrawable">@drawable/progress_bar_indeterminate</item>
</style>

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

...
<ProgressBar
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     style="@style/YourProgressBarStyle"/>
...

【讨论】:

    【解决方案4】:

    我通过使用这个可绘制的 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" />
    

    【讨论】:

    【解决方案5】:

    这是旋转动画的简单解释,试试这个对你有帮助

    http://androidtutorials60.blogspot.in/2013/09/simple-rotate-animation-in-android.html

    <rotate xmlns:android="”http://schemas.android.com/apk/res/android”">
      android:duration="4000"
      android:fromdegrees="0"
      android:pivotx="50%"
      android:pivoty="50%"
      android:todegrees="360"
      android:toyscale="0.0"
    </rotate>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多