进度条使用Drawables

Tal*_*ihr 5 android

我需要使用两个可绘制的图像创建一个简单的进度条.一个是当然的背景.另一个我需要根据浮动百分比来扩展.是否可以仅使用Java代码?我尝试了setBounds()方法没有用... :(

谢谢

GaR*_*eTa 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>
Run Code Online (Sandbox Code Playgroud)

然后,在@ 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>
Run Code Online (Sandbox Code Playgroud)

然后,在布局中声明进度棒,指定进度条的背景.

应该在进度条图层列表中使用id android:id ="@ android:id/background在理论中指定背景,但在这种情况下它对我不起作用.我认为Android设计者认为这可以用作一个可伸缩的9patch或一个平铺的位图.我想和你一样,我只是通过在布局视图中声明背景来获得它.

希望有所帮助.


dig*_*phd 1

我相信您知道,与预编译的 API 相比,Android 中的自定义元素需要花费大量精力。如果我要做这样的事情,我会创建一个扩展 View 的自定义类,并在 onDraw() 方法内缩放我的进度图像位图或画布。并在每次需要更新时调用 PostInvalidate() 。然而,一般来说,Android 中的自定义进度条的做法略有不同。它没有缩放可绘制的进度,而是只是根据百分比显示其中的一部分。

要了解如何制作自定义进度条,请查看此内容