进度条使用Drawables

时间:2012-07-29 18:36:06

标签: android

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

感谢

2 个答案:

答案 0 :(得分: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或平铺的位图。我想和你一样做,我只是通过在布局视图中声明背景来获得它。

希望有所帮助。

答案 1 :(得分:1)

我相信你知道,与预编译的api相比,Android中的自定义元素需要付出相当大的努力。如果我要做这样的事情,我会创建一个扩展View的自定义类,并在onDraw()方法中缩放我的进度图像位图或画布。每次我需要更新它时调用PostInvalidate()。但是,Android中的自定义进度条通常略有不同。它不是缩放可绘制的进度,而是根据百分比简单地显示它的一部分。

要了解如何进行自定义进度条,请查看this