【问题标题】:Custom Progress Bar (without images)自定义进度条(无图像)
【发布时间】:2012-11-01 13:04:10
【问题描述】:

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

这是图片:

感谢您的帮助

【问题讨论】:

    标签: android android-custom-view


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      请试试这个。

      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)

      【讨论】:

        【解决方案3】:

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

        如果你需要一些例子,我会提供给你。

        【讨论】:

          猜你喜欢
          • 2011-08-24
          • 1970-01-01
          • 2014-01-29
          • 2016-05-06
          • 2015-12-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多