自定义进度条(无图像)

时间:2012-11-01 13:04:10

标签: android android-custom-view

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

以下是图片:image

感谢您的帮助

4 个答案:

答案 0 :(得分: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);
    }
}

我希望这会有所帮助。 =)

答案 1 :(得分: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();

    }

your image = view.getResources()。getDrawable(R.drawable.my_progress_bar)

答案 2 :(得分:0)

使用this链接和Drawable Animation。 并从堆栈溢出中查看this链接。我认为这些链接对你非常有用

答案 3 :(得分:0)

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

如果您需要一些例子,我会为您提供。

相关问题