19

ステータスバーをカスタマイズして、次の画像のようにしようとしています。ここに画像の説明を入力

ただし、数時間後には、必要な背景だけが表示されたステータス バーしか表示されません (画像 2)。ここに画像の説明を入力

私が持っている現在のコードは次のとおりです: xml レイアウト:

<ProgressBar
                android:id="@+id/pBarOverallStatus"
                style="?android:attr/progressBarStyleHorizontal"
                android:layout_width="0dip"
                android:layout_height="fill_parent"
                android:layout_marginLeft="10dip"
                android:layout_marginRight="10dip"
                android:layout_weight="94"
                android:indeterminateOnly="false"
                android:max="100"
                android:progressDrawable="@drawable/progress_bar_states" >
            </ProgressBar>

progress_bar_states.xml:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >

    <!-- <item android:id="@android:id/progress">
        <bitmap
            android:gravity="center"
            android:src="@drawable/progressbar_progressing" />

        <corners android:radius="10dp" />
    </item>
     -->

</layer-list>

proressbar_progressing のよう ここに画像の説明を入力 に見えるコメントを削除すると、コーナーがないため、少し見苦しいものがあります。ここに画像の説明を入力

次のようなコードから背景を追加しています。

overallStatus = (ProgressBar) findViewById(R.id.pBarOverallStatus);
Resources res = getResources();
overallStatus.setBackgroundDrawable(res.getDrawable(R.drawable.progressbar_background));
overallStatus.setProgress(50);

画像にコーナーを追加しようとしましたが、うまくいきませんでした。ここで私が間違っていることを誰かが知っていますか? または、何が欠けていますか?また、左右のリングを追加するにはどうすればよいか分かりますか? リソース: ここに画像の説明を入力

4

3 に答える 3

29

解決策(自分で答えるのは奇妙に感じます): まず、1 つの問題は、プログレス ドローアブルのサイズが背景とは異なることでした (愚かな私!)。また、プログレス ドローアブルにはクリップ xml が必要でした。progressbar_progress_clip.xml のようなもの:

<?xml version="1.0" encoding="utf-8"?>
<clip
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:drawable="@drawable/progressbar_progressing"
    android:clipOrientation="horizontal"
    android:gravity="left"/>

次に、プログレス バーと 2 つの画像を相対的なレイアウトで追加して、ステータス バーの後に画像を描画できるようにします。このようなもの:

<RelativeLayout
                android:id="@+id/relativeLayout1"
                android:layout_width="0dip"
                android:layout_height="fill_parent"
                android:layout_marginLeft="10dip"
                android:layout_marginRight="10dip"
                android:layout_weight="94" >

                <ProgressBar
                    android:id="@+id/pBarOverallStatus"
                    style="?android:attr/progressBarStyleHorizontal"
                    android:layout_width="fill_parent"
                    android:layout_height="fill_parent"
                    android:layout_marginBottom="2dp"
                    android:layout_marginTop="2dp"
                    android:indeterminateOnly="false"
                    android:max="100"
                    android:progressDrawable="@drawable/progressbar_progress_clip" >
                </ProgressBar>

                <ImageView
                    android:id="@+id/ringLeft"
                    android:layout_width="wrap_content"
                    android:layout_height="fill_parent"
                    android:layout_alignParentLeft="true"
                    android:layout_centerVertical="true"
                    android:layout_marginLeft="7dp"
                    android:contentDescription="@string/status_bar_ring"
                    android:src="@drawable/status_bar_ring" />

                <ImageView
                    android:id="@+id/ringRight"
                    android:layout_width="wrap_content"
                    android:layout_height="fill_parent"
                    android:layout_alignParentRight="true"
                    android:layout_centerVertical="true"
                    android:layout_marginRight="7dp"
                    android:contentDescription="@string/status_bar_ring"
                    android:src="@drawable/status_bar_ring" />
            </RelativeLayout>

みんなありがとう!

于 2012-11-07T13:44:38.713 に答える
0

まず、新しいドローアブル XML ファイルを作成します。

<?xml version="1.0" encoding="UTF-8"?> 
<shape
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle"> 

    <corners
        android:bottomRightRadius="7dp"
        android:bottomLeftRadius="7dp"
        android:topLeftRadius="7dp"
        android:topRightRadius="7dp"/> 

</shape> 

次に、レイアウトで、進行状況バーに次の属性を追加します。

android:background="@drawable/the_file_you_previously_created"

于 2012-03-29T08:58:36.343 に答える
0

ドローアブルを保持する ImageView を使用して FrameLayout を作成し、そのアルファ値を低い値に設定できます。次に、同じ FrameLayout で ClipDrawable を使用して ProgressBar を作成します。そして、進行状況の更新で ClipDrawable の値を設定します。

コード:

<FrameLayout
        android:layout_gravity="center"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

    <ProgressBar
        android:max="100"
        android:id="@+id/progress_bar"
        android:layout_gravity="center"
        style="?android:attr/progressBarStyleHorizontal"
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:progressDrawable="@drawable/custom_progress_image"
        android:layout_marginRight="5dp" />

        <ImageView
            android:alpha="0.4"
            android:src="@drawable/app_logo"
            android:layout_gravity="center"
            android:layout_width="200dp"
            android:layout_height="200dp" />
</FrameLayout> 
于 2015-09-07T16:54:24.277 に答える