如何在android中创建循环ProgressBar?

Moh*_*med 150 android android-progressbar

您是否知道如何制作像Google Fit应用程序一样的循环进度条?如下图所示.

在此输入图像描述

Mur*_*ain 335

自己创建这个很容易

在您的布局中包含以下ProgressBar具有特定可绘制的内容(请注意,您应该从尺寸中获取宽度).最大值在这里很重要:

<ProgressBar
    android:id="@+id/progressBar"
    style="?android:attr/progressBarStyleHorizontal"
    android:layout_width="150dp"
    android:layout_height="150dp"
    android:layout_alignParentBottom="true"
    android:layout_centerHorizontal="true"
    android:max="500"
    android:progress="0"
    android:progressDrawable="@drawable/circular" />
Run Code Online (Sandbox Code Playgroud)

现在使用以下形状在资源中创建drawable.使用半径(您可以使用innerRadius而不是innerRadiusRatio)和厚度值进行游戏.

循环(Pre Lollipop OR API Level <21)

   <shape
        android:innerRadiusRatio="2.3"
        android:shape="ring"
        android:thickness="3.8sp" >
        <solid android:color="@color/yourColor" />
   </shape>
Run Code Online (Sandbox Code Playgroud)

圆形(> = Lollipop OR API Level> = 21)

    <shape
        android:useLevel="true"
        android:innerRadiusRatio="2.3"
        android:shape="ring"
        android:thickness="3.8sp" >
        <solid android:color="@color/yourColor" />
     </shape>
Run Code Online (Sandbox Code Playgroud)

默认情况下,API Level 21(Lollipop)中的useLevel"false".

开始动画

在代码中接下来使用an ObjectAnimatorProgessBar为布局的progress字段设置动画.

ProgressBar progressBar = (ProgressBar) view.findViewById(R.id.progressBar);
ObjectAnimator animation = ObjectAnimator.ofInt(progressBar, "progress", 0, 500); // see this max value coming back here, we animate towards that value
animation.setDuration(5000); // in milliseconds
animation.setInterpolator(new DecelerateInterpolator());
animation.start();
Run Code Online (Sandbox Code Playgroud)

停止动画

progressBar.clearAnimation();
Run Code Online (Sandbox Code Playgroud)

PS不同于上面的例子,它给出了流畅的动画.

  • 我不知道你在做什么,查看不可见不是一个完整的问题描述 (9认同)
  • 有步骤,如果你遵循这个,99%肯定你得到了结果. (6认同)
  • 你的答案看起来可能会有很大的作用..但是一张图片= 1000字...所以如果你把你的输出添加为截图它可能对未来的用户有用 - 恕我直言 (6认同)
  • 奇迹般有效.希望我能不止一次地赞成这一点 (5认同)
  • 对我不起作用,视图不可见 (2认同)

Top*_*Cat 127

您可以尝试这个Circle Progress

在此输入图像描述

在此输入图像描述

注意:请始终使用相同的宽度和高度来查看进度视图

DonutProgress:

 <com.github.lzyzsd.circleprogress.DonutProgress
        android:id="@+id/donut_progress"
        android:layout_marginLeft="50dp"
        android:layout_width="100dp"
        android:layout_height="100dp"
        custom:circle_progress="20"/>
Run Code Online (Sandbox Code Playgroud)

CircleProgress:

  <com.github.lzyzsd.circleprogress.CircleProgress
        android:id="@+id/circle_progress"
        android:layout_marginLeft="50dp"
        android:layout_width="100dp"
        android:layout_height="100dp"
        custom:circle_progress="20"/>
Run Code Online (Sandbox Code Playgroud)

ArcProgress:

<com.github.lzyzsd.circleprogress.ArcProgress
        android:id="@+id/arc_progress"
        android:background="#214193"
        android:layout_marginLeft="50dp"
        android:layout_width="100dp"
        android:layout_height="100dp"
        custom:arc_progress="55"
        custom:arc_bottom_text="MEMORY"/>
Run Code Online (Sandbox Code Playgroud)

  • 最大的许可 (29认同)
  • WTF许可证.哈哈. (19认同)