안드로이드에서 원형 ProgressBar를 만드는 방법은 무엇입니까? [닫은]


152

Google Fit 애플리케이션과 같은 원형 진행률 표시 줄을 만드는 방법에 대해 알고 있습니까? 아래 이미지와 같습니다.

여기에 이미지 설명을 입력하십시오


7
실제로 최근에 이와 같은 것을 만들었습니다. 이것이 유용한 출발점이 될 수 있습니까? github.com/daentech/CircularDemo
daentech

@daentech 위대한! 감사합니다
Mohamed

1
예와 같이 로딩 부품의 가장자리가 둥글게 된 곳에서 답을 얻었습니까?
Siebe

1
@ Siebe 내 대답에서 언급 한 라이브러리를 사용할 수 있습니다. 원하는대로로드 부품을 가져 오도록 사용자 정의 할 수 있습니다.
WannaBeGeek

답변:


128

Circle Progress 라이브러리를 사용해 볼 수 있습니다

여기에 이미지 설명을 입력하십시오

여기에 이미지 설명을 입력하십시오

NB : 진행률보기에 항상 동일한 너비와 높이를 사용하십시오

도넛

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

값이 어떻게 진행되고 있는지 보여줍니다. Log.d (TAG, "onProgressUpdate"); progressBar.setProgress (progressBar.getProgress () + j); Log.d (TAG, "onProgressUpdate perc :"+ j); updateMemoryAndCountValues ​​(); } 그러나 작동하지 않음
Erum

@top 고양이는 어떻게 원형 진행 또는에서의 확대와 같은 애니메이션을 추가 할 수 있습니다 mikinw.blogspot.com/2013/03/glow-effect.html
user3233280

29
가장 큰 라이센스
radu122

19
WTF 라이센스. ㅋ.
z21

1
언 바운드 접두사 오류가 발생
Animesh Mangla 7:12의

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) 및 두께 값으로 재생합니다.

원형 (사전 롤리팝 또는 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>

APILevel 21 (Lollipop)에서 useLevel 은 기본적으로 "false" 입니다.

애니메이션 시작

코드에서 다음을 사용 하여 레이아웃 ObjectAnimator의 진행률 필드에 애니메이션을 적용하십시오 ProgessBar.

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 Hussain

5
매력처럼 작동합니다. 한 번 이상이 문제를 공표 할 수 있기를 바랍니다
Mushtaq Jameel

2
나를 위해 작동하지 않습니다보기가 표시되지 않습니다
JMRboosties

9
나는 당신이 무엇을하는지 모르겠다,보기는 보이지 않는다 완전한 문제 설명은
Murtaza Khursheed Hussain

6
귀하의 답변은 그것이 효과가있는 것처럼 보일 수 있습니다 .. 그러나 하나의 그림 = 1000 단어 .. 따라서 스크린 샷으로 출력을 추가하면 향후 사용자에게 유용 할 수 있습니다-IMHO
Ranjith Kumar
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.