5

2 つの描画可能な画像を使用して、単純なプログレス バーを作成する必要があります。1つはもちろん背景です。もう1つは、浮動小数点数に従ってスケーリングする必要があります。Javaコードのみを使用することは可能ですか? 私は無駄に setBounds() メソッドを試しました... :(

ありがとう

4

2 に答える 2

6

XML コードのみを使用して、完全かつ簡単にそれを行うことができます。

まず、アクティビティのレイアウトで、プログレスバーのスタイルを宣言する XML を指定します。この場合は @drawable/custom_progressbar です。

<ProgressBar
    style="?android:attr/progressBarStyleHorizontal"
    android:progressDrawable="@drawable/custom_progressbar"
    android:layout_width="300dp"
    android:layout_height="wrap_content"
    android:background="@drawable/progress_bar_background" >
</ProgressBar>

次に、 @drawable/custom_progressbar で、進行状況に応じてクリッピングするビットマップで進行状況を表現することを宣言します。ID は Android の ProgressBar ウィジェットで使用されるため重要です。

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:id="@android:id/progress">
        <clip>
            <bitmap android:src="@drawable/progress_bar_foreground" />
        </clip>
    </item>
</layer-list>

次に、レイアウトのプログレス バットの宣言で、プログレスバーの背景を指定します。

背景は、理論的には id android:id="@android:id/background のプログレスバー レイヤー リストで指定する必要がありますが、この場合はうまくいきませんでした。Android デザイナーは、それを次のように使用することを考えていたと思います。ストレッチ可能な 9patch またはタイル化されたビットマップ 私はあなたと同じことをしたかったのですが、レイアウトのビューで通常どおり背景を宣言することによってのみそれを取得しました。

それが役立つことを願っています。

于 2013-08-11T19:13:39.290 に答える
1

ご承知のとおり、Android のカスタム要素は、コンパイル済みの API に比べてかなりの労力を要します。このようなことを行う場合、View を拡張するカスタム クラスを作成し、onDraw() メソッド内で進捗イメージのビットマップまたはキャンバスをスケーリングします。そして、更新が必要になるたびに PostInvalidate() を呼び出します。ただし、通常、カスタム プログレス バーは、Android では少し異なる方法で行われます。プログレス ドローアブルをスケーリングする代わりに、パーセンテージに応じてその一部を表示するだけです。

カスタム プログレスバーの作成方法については、こちらをご覧ください。

于 2012-07-30T06:30:59.853 に答える