Android:动画评分栏

mku*_*mar -3 android android-animation ratingbar

我正在创建一个需要评分栏来表示每个级别进度的android应用。我想出了如何使用自定义和默认评级栏,现在我想向评级栏进度添加动画。

每当我设置星数(我将其设置android:isIndicator="true"为仅用于显示不能由他编辑的用户)时,它应该进行一些动画处理,例如旋转并填充条形。请帮我使用应该使用的代码片段。

我包含了用于创建评级栏的代码:

<RatingBar
    android:id="@+id/ratingBar1"
    style="@style/myRatingBar"
    android:layout_width="wrap_content"
    android:layout_height="30dp"
    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true"
    android:numStars="5"
    android:rating="3"
    android:isIndicator="true" />
Run Code Online (Sandbox Code Playgroud)

drawable / ratingstars.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+android:id/background"
      android:drawable="@drawable/star_empty" />
<item android:id="@+android:id/secondaryProgress"
      android:drawable="@drawable/star_empty" />
<item android:id="@+android:id/progress"
      android:drawable="@drawable/star" />
</layer-list>
Run Code Online (Sandbox Code Playgroud)

values / styles.xml

<resources>

<style name="myRatingBar" parent="@android:style/Widget.RatingBar">
    <item name="android:progressDrawable">@drawable/ratingstars</item>
    <item name="android:minHeight">22dip</item>
    <item name="android:maxHeight">22dip</item>
</style>

</resources>
Run Code Online (Sandbox Code Playgroud)

当我从活动中使用setRating(int)时,请帮助我将动画添加到评分中

Tan*_*.7x 5

要将评级设置为特定值,可以使用ObjectAnimator(API 11+)。

这是一个将RatingBar从其当前值设置为5的动画的示例:

RatingBar myRatingBar = findViewById(R.id.my_rating_bar);
float current = myRatingBar.getRating();

ObjectAnimator anim = ObjectAnimator.ofFloat(myRatingBar, "rating", current, 5f);
anim.setDuration(1000);
anim.start();
Run Code Online (Sandbox Code Playgroud)

有关如何为View的属性设置动画的更多信息,请阅读Property Animation文档

我不确定您要在旋转动画中寻找什么,但这应该为您添加所需动画提供了一个很好的起点。