android开发画图,Android开发画图(贝塞尔曲线)

释放双眼,带上耳机,听听看~!

目的

通过代码实现画取贝塞尔曲线图

相关技术、及其使用

1、创建WaveV诶我继承于View

调用onDraw方法

@Override

protected void onDraw(Canvas canvas) {

//创建一个Path

Path mPath = new Path();

mPath.moveTo(50,500);

//画贝塞尔曲线

// mPath.cubicTo(50,500,200,300,350,500);

//

// mPath.cubicTo(350,500,500,700,650,500);

mPath.quadTo(200,300,350,500);

mPath.quadTo(500,700,650,500);

// mPath.lineTo(400,500);

//画笔

Paint mPaint = new Paint();

mPaint.setStrokeWidth(10);

mPaint.setColor(Color.BLACK);

mPaint.setStyle(Paint.Style.STROKE);

//设置路径的起始点

canvas.drawPath(mPath,mPaint);

}

}

2、创建MeterView继承于View

创建init方法进行画笔的相关初始化:

private void init(){

//画笔

bgPaint = new Paint(Paint.ANTI_ALIAS_FLAG);

bgPaint.setColor(Color.BLACK);

//STROKE 经过的地方才会画

bgPaint.setStyle(Paint.Style.STROKE);

bgPaint.setStrokeWidth(40);

bgPaint.setStrokeCap(Paint.Cap.ROUND);//设置两端的类型

progressPaint = new Paint(Paint.ANTI_ALIAS_FLAG);

progressPaint.setColor(Color.MAGENTA);

progressPaint.setStyle(Paint.Style.STROKE);

progressPaint.setStrokeWidth(40);

progressPaint.setStrokeCap(Paint.Cap.ROUND);

textPaint = new TextPaint(Paint.ANTI_ALIAS_FLAG);

textPaint.setColor(Color.BLACK);

textPaint.setTextSize(100);

}

3、调用onDraw方法进行画图(圆圈进度图)

protected void onDraw(Canvas canvas) {

//画初始圆

//确定矩形区域

RectF frame = new RectF(50,100,getWidth()-50,getWidth()-50);

//画一个弧

canvas.drawArc(frame,120,300,false,bgPaint);

//计算进度对应的角度

int angle = (int)(progress*300);

canvas.drawArc(frame,120,angle,false,progressPaint);

//计算文字的宽度

int width = (int) textPaint.measureText("100%");

//计算文字的矩阵 FontMetrics

Paint.FontMetrics fo = textPaint.getFontMetrics();

//计算文字的高度

int height = (int)(fo.bottom - fo.top);

//计算向下移动的距离 Ascent /2

int sapce = (int) -(fo.ascent/2);

//画文字

canvas.drawText("100%",getWidth()/2-width/2,getWidth()/2+sapce,textPaint);

}

4、调用setProgress方法进行刷新和重绘:

public void setProgress(float progress) {

this.progress = progress;

//刷新,重绘

if(progress <= 1.0001){

invalidate();

}

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值