android中的垂直进度条

时间:2012-01-06 20:27:05

标签: android progress-bar

我想在执行特定操作时在android中创建一个垂直进度条。进度应从第1个图标开始,在最终图标结束时继续稳步前进。我似乎无法找到办法。

如果有任何身体可以帮助一只脚进门。我将非常感激。

3 个答案:

答案 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);
}