2012-04-30 3 views
6

2 개의 표시기가있는 진행 표시 줄을 갖고 싶습니다.2 개의 표시기가있는 진행 표시 줄

하나의 표시기는 작업 A의 진행을 색상 녹색으로 표시하고, 두 번째 표시기는 작업 B의 진행을 빨간색으로 표시하며 모두 한 진행률 표시 줄에 표시합니다. 나머지는 작업 A와 B의 남은 작업을 보여줍니다.

이 작업을 수행하는 간단한 솔루션이 있습니까? 나는 문서를 읽었지만 도움을 찾지 못했습니다.

답변

9

두 진행 표시기를 동일한 진행률 표시 줄의 주 진행률 및 보조 진행률로 코딩하면이 작업을 수행 할 수 있습니다.

진행률 표시 줄의 하위 클래스를 만듭니다.

public class TextProgressBar extends ProgressBar { 
    private Paint textPaint; 

    public TextProgressBar(Context context) { 
     super(context); 
     textPaint = new Paint(); 
     textPaint.setColor(Color.BLACK); 
    } 

    public TextProgressBar(Context context, AttributeSet attrs) { 
     super(context, attrs); 
     textPaint = new Paint(); 
     textPaint.setColor(Color.BLACK); 
     setMax(30); 
     setProgress(12); 
     setSecondaryProgress(20); 

    } 

} 

이 하위 클래스를 사용하여 진행률 표시 줄의 XML 항목을 참조해야합니다.

<com.darsh.doubleProgressBar.TextProgressBar 
    android:id="@+id/progressBar1" 
    style="?android:attr/progressBarStyleHorizontal" 
    android:layout_width="fill_parent" 
    android:layout_height="15sp" 
    android:layout_marginLeft="1sp" 
    android:layout_marginRight="1sp" 
    android:layout_marginTop="10sp" 
    android:progressDrawable="@drawable/progress" /> 

이제 기본 및 보조 지표

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" > 

<item android:id="@android:id/background"> 
    <shape> 
     <corners android:radius="5dip" /> 

     <gradient 
      android:angle="270" 
      android:centerColor="#ff5a5d5a" 
      android:centerY="0.75" 
      android:endColor="#ff747674" 
      android:startColor="#ff5a5d5a" /> 
    </shape> 
</item> 
<item android:id="@android:id/secondaryProgress"> 
    <clip> 
     <shape> 
      <corners android:radius="5dip" /> 


      <gradient 
       android:angle="270" 
       android:centerColor="#32cd32" 
       android:centerY="0.75" 
       android:endColor="#32cd32" 
       android:startColor="#32cd32" /> 
     </shape> 
    </clip> 
</item> 
<item android:id="@android:id/progress"> 
    <clip> 
     <shape> 
      <corners android:radius="5dip" /> 

      <gradient 
       android:angle="270" 
       android:endColor="#33B5E5" 
       android:startColor="#33B5E5" /> 
     </shape> 
    </clip> 
</item> 
</layer-list> 

색상이 당김에서 변경 될 수있는 리소스 디렉토리에 당김을 만들 수 있습니다. 이 같은 코드에서 그

만들기 사용 :

TextProgressBar textProgress; 
textProgress = (TextProgressBar)findViewById(R.id.progressBar1); 
textProgress.setMax(100); 
textProgress.setProgress(10); // 
textProgress.setSecondaryProgress(50); //green 
+0

2 간단한 질문을 무슨 뜻인지 이해 :'안드로이드 : ID = "@ 안드로이드 : ID/secondaryProgress"를 ', 그해야' android : id = "@ + id/secondaryProgress"'? 그리고 하위 클래스를 만드는 이유는 무엇입니까? 비공개 필드를 만들지 만 사용하지 마십시오. –

+0

첫 번째 질문을 무시하고 알았습니다 : Android 세트에서 ID를 설정해야 ProgressBar에서 사용할 모양을 알 수 있습니다. –

2

사용자 정의 레이아웃을 만들어 두 개의 진행 막대를 그 안에 넣습니다. 그런 다음 핸들러를 가져 와서 진행 막대를 조작해야합니다. 해당 알림의 경우 원격보기로 설정해야합니다.

+2

내가 그나마 당신이 – user1324936