如何在Android的水平进度栏中制作椭圆形的进度

时间:2018-12-19 07:04:54

标签: android

此背景drawable.xml

<?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="12dp" />
            <solid android:color="#cccccc" />
        </shape>
    </item>

    <item android:id="@android:id/progress"

        >
        <clip>
            <shape>
                <corners android:radius="12dp" />
                <solid android:color="@color/colorPrimaryDark" />
            </shape>
        </clip>
    </item>
</layer-list>

下面是我的进度栏

<ProgressBar
        android:id="@+id/pb"
        style="@android:style/Widget.Holo.Light.ProgressBar.Horizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/tv"
        android:hapticFeedbackEnabled="true"
        android:progressDrawable="@drawable/point_default_progess"
        android:progress="2"
        android:scaleY="0.80" />

我想在进度栏中设置椭圆形的进度形状,但是我无法设置椭圆形。请在下面是我的屏幕,建议我如何解决此问题。

enter image description here

我想以椭圆形显示进度视图,请在此问题上为我提供帮助。

期望的图像低于

enter image description here

我想将椭圆形设置为低于3的渐进值。

2 个答案:

答案 0 :(得分:1)

background_drawable.xml

<?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>
        <solid android:color="#777" />
        <size
            android:width="15dp"
            android:height="15dp" />
        <corners android:radius="10dp" />
    </shape>
    </item>
    <item android:id="@android:id/progress">
    <clip>
        <layer-list>
            <item>
                <color android:color="#00000000" />
            </item>
            <item
                android:left="2dp"
                android:top="2dp"
                android:right="2dp"
                android:bottom="2dp">
                <shape>
                    <solid android:color="#068310" />
                    <size
                        android:width="15dp"
                        android:height="15dp" />
                    <corners android:radius="10dp" />
                </shape>
              </item>
           </layer-list>
        </clip>
     </item>
  </layer-list>

progress-bar.xml

   <ProgressBar
    style="@android:style/Widget.ProgressBar.Horizontal"
    android:layout_centerInParent="true"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:max="100"
    android:progress="50"
    android:progressDrawable="@drawable/background_drawable" />

希望有帮助。

答案 1 :(得分:0)

只需将<clip>替换为<scale>

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@android:id/background">
    <shape>
        <corners android:radius="12dp" />
        <solid android:color="#cccccc" />
    </shape>
</item>

<item android:id="@android:id/progress">
    <scale android:scaleWidth="100%">
        <shape>
            <corners android:radius="12dp" />
            <solid android:color="@color/colorPrimaryDark" />
        </shape>
    </scale>
</item>