1

我想创建一个图像中指定的进度条。我对如何创建自定义视图知之甚少。我检查了很多教程,但找不到起点。我没有关于进度条的图像。我应该画出来 我尝试覆盖 ondraw 方法,但我无法获得确切的外观。

这是图像:图片

谢谢你的帮助

4

3 回答 3

2

首先,您只需要一张加载弧的图像,因为它们是可复制的。

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-01T13:17:41.523 回答
1

请试试这个。

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-01T13:16:46.187 回答
0

你想创建自己的进度条,然后你可以覆盖任何视图类,覆盖 onDraw 方法并写下你自己的代码。

如果您需要一些示例,那么我将为您提供。

于 2012-11-01T13:16:56.260 回答