我需要使用两个可绘制图像创建一个简单的进度条。一是当然背景。另一个我需要根据百分比浮动进行缩放。是否可以仅使用 Java 代码?我尝试了 setBounds() 方法但无济于事...... :(
谢谢
我需要使用两个可绘制图像创建一个简单的进度条。一是当然背景。另一个我需要根据百分比浮动进行缩放。是否可以仅使用 Java 代码?我尝试了 setBounds() 方法但无济于事...... :(
谢谢
只需使用 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 或一个平铺位图。我想做和你一样的事情,我只是通过在布局中的视图中通常声明背景来得到它。
希望有帮助。
我相信您知道,与预编译的 api 相比,Android 中的自定义元素需要花费大量精力。如果我要做这样的事情,我会创建一个扩展 View 的自定义类,并在 onDraw() 方法中缩放我的进度图像位图或画布。并在每次我需要更新它时调用 PostInvalidate()。但是,通常自定义进度条在 Android 中的处理方式有所不同。而不是缩放可绘制的进度,它只是根据百分比显示它的一部分。
要了解如何制作自定义进度条,请查看此。