自定义进度条---圆形以及线条

自定义进度条—圆形以及线条

CD:
弄了一天半终于将Android机与电脑通过usb数据线传输数据的问题给解决了,过几天将遇到的问题写出来以免下次用到时又忘了.

比较简单直接上代码:
1,自定义myProcessView
public class myProcessView extends View {

    private Paint mPaint; //画笔
    private int color;   //设置的颜色
    private String text;  // 文字显示进度
    private int mProcess = 0;    //当前进度值
    private int Max = 0;    //进度的最大值
   private double n = 3.6;  //圆形进度条要乘的弧度
    int screenWidth;    //屏幕的宽
    public myTextView(Context context) {
        this(context, null);
    }

    public myTextView(Context context, AttributeSet attrs) {
        this(context, attrs, 0);
    }

    public myTextView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        //得到屏幕的宽
          screenWidth = getScreenWidth(context);
         //在构造方法中创建画笔
        mPaint = new Paint();

    }


    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);

        mPaint.setColor(Color.RED);
        mPaint.setStyle(Paint.Style.STROKE);

        RectF rect = new RectF(0, 0, 40, 40); //  坐标是相对于父布局的

        int lineProcess = (mProcess/max)*screenWidth;
        //绘制线性进度条
        canvas.drawLine(0,0,lineProcess ,0,mPaint);
        //绘制圆形进度条   
        canvas.drawArc(rect, 3, (mProcess *3.6), false, mPaint);


    }

    public void setText(String t) {
        this.text = t;
    }
     public void setMax(int max) {
        this.max= max;
    }
    public void setProcess(int pro) {
        this.mProcess = pro;
 if(mProcess > 100){
            return;
        }else{
        invalidate();

        }
        invalidate();

        }
    }
}

2,使用进度条
public class CustomActivity extends Activity {

    myProcessView myProcessView ;
    int mCount = 0;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_custom);

        myProcessView = (com.example.custom.view.myProcessView ) findViewById(R.id.my);

  myProcessView.setMax(设置进度的最大值);  
      //一般这行代码都是在得到下载进度是调用 
  myProcessView.setProcess(当前进度); 

    }
}

备注:
圆形进度条可以使用.线性进度条有一个问题是 如果是下载文件,我们没有办法得到文件最大的值(也就是进度比无法得出),要下班了.有时间在整理.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值