2012-11-01 70 views
2

我想创建一个进度条,如图中指定的。我对创建自定义视图的想法很少。我查了很多教程,但找不到起点。我没有关于进度条的图片。我应该画它。我试图覆盖提取方法,但我无法得到确切的外观。自定义进度条(无图像)

以下是图像:image

感谢您的帮助

回答

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

我希望这有助于。 =)

+0

谢谢..我会参考你的代码,并试试看 –

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)

0

你想创建自己的进度,那么你就可以覆盖任何视图类,重写的onDraw方法和写它下来你自己的代码。

如果你需要一些例子,那么我会为你提供。