水平ProgressBarを追加すると、期待どおりに動作します-進行状況の値を設定して表示します。
ただし、ProgressBar(円形)を追加すると、スピンします。以上です。このような形式では、進行状況の値が表示されないため、進行状況バーよりも「お待ちください」インジケーターになります。
だから私の質問は(名前の進行状況が進行状況を意味すると仮定)-回転を停止して進行状況の値を表示する方法?たとえば、最大値を100に設定し、値を50に設定すると、半円弧が表示されると予想されます。
言い換えれば、形状だけを除いて、円形のProgressBarを水平のProgressBarのように動作させる方法は?
Toadzkyがコメントしたように、焼き込み方法はありません。あなたはこれを試すかもしれません ProgressWheel 。他に何もない場合は、それを実装する方法のアイデアを提供する必要があります。
私はこれが古い投稿であることを知っていますが、同じ問題に遭遇し、それを機能させました。
想像するよりも簡単です。ドローアブルフォルダー内のxmlファイルでカスタムプログレスを設定し、<rotate>タグの "fromDegrees"および "toDegrees"属性を処理する必要があります。
これは、custom_progress.xmlのコードです(好きなようにカスタマイズできますが、「fromDegrees」と「toDegrees」は変更しないでください)。
<?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
Android:innerRadiusRatio="2.3"
Android:shape="ring"
Android:useLevel="false"
Android:type="sweep"
Android:thicknessRatio="15.0">
<solid Android:color="#0099ff"/>
</shape>
</item>
<item Android:id="@Android:id/progress">
<rotate
Android:pivotX="50%"
Android:pivotY="50%"
Android:fromDegrees="-90"
Android:toDegrees="-90">
<shape
Android:innerRadiusRatio="2.3"
Android:shape="ring"
Android:angle="0"
Android:type="sweep"
Android:thicknessRatio="15.0">
<solid Android:color="#e0e0e0"/>
</shape>
</rotate>
</item>
</layer-list>
そして、プログレスバーでは、この属性を設定する必要があります:
<ProgressBar
Android:id="@+id/progressbar"
style="?android:attr/progressBarStyleHorizontal"
Android:layout_width="100dp"
Android:layout_height="100dp"
Android:indeterminate="false"
Android:max="100"
Android:progress="20"
Android:progressDrawable="@drawable/custom_progress" />
ここで何が起こっているかというと、進行状況は-90度で始まり、私にとっては進行状況バービューの上側であり、右側に向かって同じ程度に続きます。これにより、ビューの進行が開始され、終了します。同程度。
注:「fromDegrees」と「toDegrees」の両方に0を設定すると、進行は円の右側から開始されます。
同じ要件を持つ人々に役立つことを願っています。
Api 21
あなたはそのようなことをすることができます:あなたのProgressBar
がこのように定義すると仮定します:
<ProgressBar xmlns:Android="http://schemas.Android.com/apk/res/Android"
style="?android:attr/progressBarStyleLarge"
Android:id="@+id/progress_bar"
Android:layout_width="@dimen/item_width"
Android:layout_height="@dimen/item_height"
Android:clickable="false"
Android:indeterminate="true"
Android:indeterminateDrawable="@drawable/progress"/>
そしてこれは progress.xml
:
<shape
Android:innerRadiusRatio="3"
Android:shape="ring"
Android:thicknessRatio="8"
Android:useLevel="false" >
<size
Android:height="76dip"
Android:width="76dip" />
<gradient
Android:angle="0"
Android:endColor="@color/colorGrayText"
Android:startColor="@Android:color/transparent"
Android:type="sweep"
Android:useLevel="false" />
</shape>
これでProgressBar
でこれを行うことができます:
ProgressBar progressBar = (ProgressBar) findViewById(R.id.progress_bar);
if (progressBar != null) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Lollipop) {
RotateDrawable rotateDrawable = (RotateDrawable) progressBar.getIndeterminateDrawable();
rotateDrawable.setToDegrees(0);
}
}