我想创建一个图像中指定的进度条。我对如何创建自定义视图知之甚少。我检查了很多教程,但找不到起点。我没有关于进度条的图像。我应该画出来 我尝试覆盖 ondraw 方法,但我无法获得确切的外观。
这是图像:
谢谢你的帮助
我想创建一个图像中指定的进度条。我对如何创建自定义视图知之甚少。我检查了很多教程,但找不到起点。我没有关于进度条的图像。我应该画出来 我尝试覆盖 ondraw 方法,但我无法获得确切的外观。
这是图像:
谢谢你的帮助
首先,您只需要一张加载弧的图像,因为它们是可复制的。
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);
}
}
我希望这有帮助。=)
请试试这个。
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)
你想创建自己的进度条,然后你可以覆盖任何视图类,覆盖 onDraw 方法并写下你自己的代码。
如果您需要一些示例,那么我将为您提供。