2012-04-30 14 views
6

2つのインジケータがあるプログレスバーがあります。2つのインジケータが付いたプログレスバー

タスクAの進行状況が緑色で表示され、2番目のインジケータがタスクBの進行状況が赤色で表示されます。残りはタスクAとBの残りの部分を示しています。

これを達成するための(簡単な)ソリューションはありますか?私は文書を読んだが、助けは見つけられなかった。

答えて

9

これは、2つのインジケータを同じ進行状況バーの1次進行と2次進行としてコーディングすることで実行できます。

プログレスバーのサブクラスを作成します。

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つの進捗バーを配置します。その後、ハンドルを取得して進捗バーを操作する必要があります。その通知の場合は、それをリモートビューとして設定する必要があります。

+2

私はあなたが – user1324936

関連する問題