5

我需要使用两个可绘制图像创建一个简单的进度条。一是当然背景。另一个我需要根据百分比浮动进行缩放。是否可以仅使用 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

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

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

于 2012-07-30T06:30:59.853 回答