2つのインジケータがあるプログレスバーがあります。2つのインジケータが付いたプログレスバー
タスクAの進行状況が緑色で表示され、2番目のインジケータがタスクBの進行状況が赤色で表示されます。残りはタスクAとBの残りの部分を示しています。
これを達成するための(簡単な)ソリューションはありますか?私は文書を読んだが、助けは見つけられなかった。
2つのインジケータがあるプログレスバーがあります。2つのインジケータが付いたプログレスバー
タスクAの進行状況が緑色で表示され、2番目のインジケータがタスクBの進行状況が赤色で表示されます。残りはタスクAとBの残りの部分を示しています。
これを達成するための(簡単な)ソリューションはありますか?私は文書を読んだが、助けは見つけられなかった。
これは、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
カスタムレイアウトを作成し、2つの進捗バーを配置します。その後、ハンドルを取得して進捗バーを操作する必要があります。その通知の場合は、それをリモートビューとして設定する必要があります。
私はあなたが – user1324936
2簡単な質問の意味を理解しない:それは 'する必要があり、' 'アンドロイド:ID = "ID/secondaryProgress @アンドロイドを" android:id = "@ + id/secondaryProgress" '?なぜサブクラスを作成するのですか?プライベートフィールドは作成しますが、使用しないでください。 –
最初の質問を無視して、私はそれを取得しました:あなたはAndroidのセットからIDを設定し、ProgressBarにどの形状を使うかを知らせる必要があります。 –