我想创建一个进度条,如图所示。我对如何创建自定义视图知之甚少。我查阅了很多教程,但找不到起点。我没有关于进度条的图片。应该是我画的。我尝试重写ondraw方法,但我无法获得确切的外观。
如下图所示:

谢谢你的帮忙
发布于 2012-11-01 21:17:42
http://developer.android.com/guide/topics/ui/custom-components.html
public class CustomView extends View
{
public CustomView(Context context)
{
super(context);
}
protected void onDraw(Canvas canvas)
{
canvas.drawBitmap(REFERENCETIBITMAPHERE, 0, 0, null);
}
@Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec)
{
setMeasuredDimension(measureWidth(widthMeasureSpec), measureHeight(heightMeasureSpec));
}
private int measureWidth(int measureSpec)
{
int preferred = REFERENCETIBITMAPHERE.getWidth();
return getMeasurement(measureSpec, preferred);
}
private int measureHeight(int measureSpec)
{
int preferred = REFERENCETIBITMAPHERE.getHeight();
return getMeasurement(measureSpec, preferred);
}
private int getMeasurement(int measureSpec, int preferred)
{
int specSize = MeasureSpec.getSize(measureSpec);
int measurement = 0;
switch(MeasureSpec.getMode(measureSpec))
{
case MeasureSpec.EXACTLY:
measurement = specSize;
break;
case MeasureSpec.AT_MOST:
measurement = Math.min(preferred, specSize);
break;
default:
measurement = preferred;
break;
}
return measurement;
}
}您将需要创建自己的方法来接收某种指示加载进度的值,然后相应地进行重绘。
例如:
protected void onDraw(Canvas canvas)
{
// Where loadProgress is an int of some sort.
for(int i = 0; i < loadProgress; i++)
{
canvas.drawBitmap(REFERENCETIBITMAPHERE, REFERENCEBITMAPHERE.getWidth() * i, 0, null);
}
}我希望这能帮到你。=)
发布于 2012-11-01 21:16:46
请试一下这个。
private void showProgressDialog() {
pDlg = new ProgressDialog(activity);
pDlg.setMessage(processMessage);
pDlg.setMax(100);
pDlg.setProgressDrawable(c.getResources().getDrawable(R.drawable.my_progress_bar));
pDlg.setCancelable(false);
pDlg.show();
}您的图像= view.getResources().getDrawable(R.drawable.my_progress_bar)
发布于 2012-11-01 21:16:56
您希望创建自己的进度条,然后您可以覆盖任何视图类,覆盖onDraw方法并编写您自己的代码。
如果你需要一些例子,那么我会提供给你。
https://stackoverflow.com/questions/13177710
复制相似问题