Androidで循環ProgressBarを作成する方法は?[閉まっている]


152

Google Fitアプリケーションのような円形のプログレスバーを作成する方法はありますか?下の画像のように。

ここに画像の説明を入力してください


7
私は実際に最近このようなものを作りました。これは役に立つ出発点かもしれませんか?github.com/daentech/CircularDemo
daentech

@daentechすごい!ありがとう
Mohamed

1
誰もが例のようにローディングパーツのエッジが丸められているという答えを得ましたか?
Siebe

1
@Siebe私の回答で述べたライブラリを使用できます。カスタマイズして、必要に応じてパーツをロードできます。
WannaBeGeek

2
多分これは正しい方向にあなたを向ける
gmemario

回答:


128

この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"/>

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

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

保護されたvoid onProgressUpdate(){super.onProgressUpdate();でsetProgressを試して、進行中の値をどのように表示しているか Log.d(TAG、 "onProgressUpdate"); progressBar.setProgress(progressBar.getProgress()+ j); Log.d(TAG、 "onProgressUpdate perc:" + j); updateMemoryAndCountValues(); }しかし、機能していません
Erum

@Top Catどのようにして、円のズームインまたはmikinw.blogspot.com/2013/03/glow-effect.htmlの
user3233280

29
最大のライセンス
radu122

19
WTFライセンス。はは。
z21、15年

1
バインドされていない接頭辞エラーの取得
Animesh Mangla

338

これを自分で作成するのは簡単です

レイアウトに以下を含めます 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" />

次に、次の形状を持つドローアブルをリソースに作成します。半径(のinnerRadius代わりに使用できますinnerRadiusRatio)と厚さの値を試してください。

円形(Pre Lollipop OR APIレベル<21)

   <shape
        android:innerRadiusRatio="2.3"
        android:shape="ring"
        android:thickness="3.8sp" >
        <solid android:color="@color/yourColor" />
   </shape>

循環(> = Lollipop OR APIレベル> = 21)

    <shape
        android:useLevel="true"
        android:innerRadiusRatio="2.3"
        android:shape="ring"
        android:thickness="3.8sp" >
        <solid android:color="@color/yourColor" />
     </shape>

useLevel「false」であるAPIレベル21(Lollipop)、デフォルトでです。

アニメーションを開始

次に、コードでを使用しObjectAnimatorProgessBar、レイアウトの進行状況フィールドをアニメーション化します。

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();

アニメーションを停止

progressBar.clearAnimation();

PS上記の例とは異なり、スムーズなアニメーションを提供します。


6
手順があります。これに従えば、99%確実に結果が得られます。
Murtaza Khursheedフセイン2015

5
チャームのように機能します。私はこれを複数回賛成できることを望みます
Mushtaq Jameel

2
ビューは表示されません
JMRboosties 2015

9
私はあなたが何をしているかわからない、ビューが表示されないことは完全な問題の説明ではありません
Murtaza Khursheed Hussain '17 / 07/15

6
あなたの答えはそれが非常にうまくいくかもしれないようです...しかし、1つの画像= 1000ワード..なので、スクリーンショットとして出力を追加すると、将来のユーザーにとって役立つかもしれません-IMHO
Ranjith Kumar
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.