Android Animate Rotate

前端 未结 5 454
醉酒成梦
醉酒成梦 2020-12-08 00:12

I did some digging in Android code, and saw the use of in the indeterminate progress bar. after trying to create my own drawable with this tag:



        
相关标签:
5条回答
  • 2020-12-08 00:45

    I solved this by using this drawable xml. Although it only seems to be smooth on newer versions of 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" />
    
    0 讨论(0)
  • 2020-12-08 00:47

    Here is the Simple Explanation of the Rotation Animation try this this will help you

    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>
    
    0 讨论(0)
  • 2020-12-08 00:53

    I ran into the exact same issue. You can exclude those parameters (framesCount and frameDuration), and it may work for you. I tried just excluding them and it animated fine, but the width/height I was setting were not being respected, so I ended up creating a simple rotation animation and an ImageView to apply it to. Here's the animation file (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"
    />
    

    Then you just inflate your Animation, set repeat count, and start it from the View

    Animation rotation = AnimationUtils.loadAnimation(this, R.anim.clockwise_rotation);
    rotation.setRepeatCount(Animation.INFINITE);
    myView.startAnimation(rotation);
    
    0 讨论(0)
  • 2020-12-08 00:55

    Instead of creating an animation (more code required, not only XML configuration), use layer-list as drawable resource. It is quite interesting that layer-list is way more fluid than 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>
    

    Then of course use it in the styles as Mario Lenci wrote:

    <style name="YourProgressBarStyle" parent="@android:style/Widget.ProgressBar">
        <item name="android:indeterminateDrawable">@drawable/progress_bar_indeterminate</item>
    </style>
    
    0 讨论(0)
  • 2020-12-08 01:00

    I don't know how to work around the private attributes, I have the same problem.

    By the way if you want to change those attributes of the ProgressBar:

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

    you can do it easily with the Styles framework defining in the values/styles.xml file a ProgressBar style extending the standard android one:

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

    and then applying it to the progress bar in the xml layout file.

    ...
    <ProgressBar
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         style="@style/YourProgressBarStyle"/>
    ...
    
    0 讨论(0)
提交回复
热议问题