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