如何在Android中创建圆形动画?

时间:2017-02-20 15:12:58

标签: android animation

我正在尝试创建一个获得百分比值(0-100)的动画,并根据该值在曲线中拉伸粗线,其中100%是一个完整的圆,50%是半个圆,所以上。

我添加了一个视图作为我的起跑线:

<View
    android:id="@+id/testAnimationView"
    android:layout_width="30dp"
    android:layout_height="50dp"
    android:layout_gravity="center"
    android:background="#FF000000" />

我尝试在视图上创建一个ScaleAnimation,但似乎我只能成功制作一个“直线”动画,其中X和Y被拉伸以创建一个更大的正方形,但这不是我需要的..

如何创建一个以非常细的线条开头的动画并将其拉伸到具有百分比值的圆圈?

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:1)

正如Ajay Venugopal所说,你可以使用CircularProgressBar.java https://github.com/lopspower/CircularProgressBar/blob/master/circularprogressbar/src/main/java/com/mikhaellopez/circularprogressbar/CircularProgressBar.java

您在CircularProgressBar.java中唯一需要做的更改是:

第64行:

foregroundPaint.setStyle(Paint.Style.FILL);

第75行:

canvas.drawArc(rectF, startAngle, angle, true, foregroundPaint);
布局中的

<CircularProgressBar
        style="?android:attr/progressBarStyle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:cpb_background_progressbar_color="#b6bbd8"
        app:cpb_background_progressbar_width="10dp"
        app:cpb_progressbar_color="#3f51b5"
        app:cpb_progressbar_width="20dp"
        android:id="@+id/progressBar" />

然后在你的MainActivity.java

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        final CircularProgressBar circularProgressBar = (CircularProgressBar) findViewById(R.id.progressBar);
        circularProgressBar.setProgressWithAnimation(65, 4000);

}