我想在执行特定操作时在android中创建一个垂直进度条。进度应从第1个图标开始,在最终图标结束时继续稳步前进。我似乎无法找到办法。
如果有任何身体可以帮助一只脚进门。我将非常感激。
答案 0 :(得分:14)
告诉您尝试在这两个图像之间尝试的转换有点难。所以你想从黑白图像开始,但是它是否通过交叉渐变从B / W转换为彩色,或者你是否想慢慢地从底部向上应用彩色图像片段而不是B / W片段?
如果后者是您的选择,那么您的实际图像将由<layer-list>
内的两个drawable组成。一个静态,另一个代表ClipDrawable
,它将根据其级别值显示彩色图像的一部分。例如,创建一个XML文件:
<强> RES /抽拉/ progress_background.xml 强>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item>
<bitmap android:src="@drawable/ic_launcher_bw"/>
</item>
<item>
<clip
android:clipOrientation="vertical"
android:gravity="bottom"
android:drawable="@drawable/ic_launcher"/>
</item>
</layer-list>
然后将Drawable
设置为类似ImageView
的内容以显示进度,并通过调用setLevel()
来更改值,即
//This is any view subclass that you have chosen to do this
ImageView progress;
progress.setImageResource(R.drawable.progress_background);
//Adjust the progress by adjusting the drawable's level
progress.setImageLevel(500);
// -- OR --
progress.getDrawable().setLevel(500);
默认情况下,可绘制级别设置为0到10,000,表示完全剪切到完全显示。
HTH
答案 1 :(得分:0)
您可以使用LevelListDrawable并使用setLevel(int)
设置级别http://developer.android.com/reference/android/graphics/drawable/LevelListDrawable.html
您可以在levellistddrawable中添加进度条的连续帧,并保持递增级别。
答案 2 :(得分:0)
我能想到的最好的方法是使用原始位图作为背景,然后从底部向上绘制完成图像的一部分。这样您就不需要一堆不同的图像 - 只需逐步绘制完成的图像。我认为可以这样做:
// setup
// assuming firstImage is the initial one and secondImage is the final one
int totalHeight = firstImage.getHeight();
Canvas canvas = new Canvas(firstImage);
ImageView imgView = (ImageView)findViewById(R.id.flame_bar_view);
imgView.setImageBitmap(firstBitmap);
Rect src = new Rect (0, totalHeight,
firstImage.getWidth(), totalHeight);
// then on each update
void updateFlameBar(float percentage) {
int height = (int)(totalHeight * percentage);
src.top = totalHeight - height;
canvas.drawBitmap(secondImage, src, src, null);
}