32

水平方向のProgressBarを追加すると、期待どおりに動作します。進行状況の値を設定すると、それが表示されます。

ただし、ProgressBar(円形)を追加すると回転します。以上です。このような形式では、進行状況の値が表示されないため、進行状況バーよりも「お待ちください」インジケーターになります。

だから私の質問は(名前の進行状況が進行状況を意味すると仮定して)-回転を停止して進行状況の値を表示する方法は?たとえば、maxを100に設定し、valueを50に設定すると、半円弧が表示されると予想されます。

言い換えると、形状を除いて、円形のプログレスバーを水平のプログレスバーのように動作させる方法はありますか?

4

5 に答える 5

16

これが古い投稿であることは知っていますが、同じ問題が発生し、機能させています。

実際には思ったより簡単です。ドローアブルフォルダ内の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を設定すると、進行は円の右側から始まります。

それが同じ要件を持つ人々に役立つことを願っています。

于 2017-05-18T18:25:36.117 に答える
7

あなたはそのようなことをすることができるので:あなたがこのように発見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);
            }
        }
于 2016-03-03T11:57:15.143 に答える
2

toadzkyがコメントしたように、焼き付けられた方法はありません。このProgressWheelを試してみてください。他に何もないとしても、それはあなたにそれを実装する方法のアイデアを与えるはずです。

于 2012-10-16T17:44:18.677 に答える
0

プログレスバーを確定するということは、回転し続けないプログレスバーを意味し、ユーザーはその上に一定のパーセンテージを設定できます。

<ProgressBar
                android:id="@+id/pb_sharpness"
                style="@style/Widget.AppCompat.ProgressBar.Horizontal"
                android:layout_width="@dimen/dp_50"
                android:layout_height="@dimen/dp_50"
                android:layout_marginTop="@dimen/dp_16"
                android:indeterminate="false"
                android:max="100"
                android:progressDrawable="@drawable/custom_progress_bar"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="parent" />

上記のプログレスバーにドローアブルを追加する場合

 <?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="@color/white_color"/>
    </shape>
</item>
<item android:id="@android:id/progress">
    <rotate
        android:pivotX="50%"
        android:pivotY="50%"
        android:fromDegrees="180"
        android:toDegrees="0"
        >
        <shape
            android:innerRadiusRatio="2.3"
            android:shape="ring"
            android:angle="0"
            android:type="sweep"
            android:thicknessRatio="15.0">
            <gradient
                android:startColor="@color/color_5646F3"
                android:endColor="@color/color_ED88FE" />
        </shape>
    </rotate>
</item>
于 2020-08-17T14:30:34.680 に答える
0

プログレスバーの可視性プロパティにアクセスして、このように非表示にする必要がある場合は非表示に設定できます

ProgressBar progressBar = view.findViewById<ProgressBar>(R.id.progressbar)

progressBar.visibility = ProgressBar.INVISIBLE
于 2021-04-30T15:13:08.493 に答える