android 画笔Paint和 Canves 的用法

最近在做用户引导功能,该功能用了大量的画笔操作,所以在此记录下 Paint和 Canves 的用法。

    //先定义画笔
    Paint mPaint = new Paint();
    mPaint.setColor(Color.BLACK);       //设置画笔颜色
Canves 画线


     mPaint.setStyle(Paint.Style.FILL);  //设置画笔模式为填充
     mPaint.setStrokeWidth(2f);         //设置画笔宽度
     canvas.drawLine(startX,startY,endX,endY,mPaint);
Canves 画矩形
     mPaint.setStyle(Paint.Style.STROKE);  //设置画笔模式空心 FILL为实心
     Rect rect = new Rect(left,top,right,bottom);
     canvas.drawRect(rect,mPaint);//画空心矩形
Canves 画圆
     mPaint.setStyle(Paint.Style.STROKE);  //设置画笔模式空心 FILL为实心
     canvas.drawCircle(x,y,d,paint);//x y 为圆心点  d为圆半径
Canves 画文本
     mPaint.setTextAlign(Paint.Align.CENTER);//设置文字的对齐方式
     mPaint.setTextSize(sp2px(15));//设置文字大小 因为做适配所以用了sp2px的转换
     canvas.drawText("测试文字",x , y, mPaint);

//如果要画的文字在 上面的矩形中 那么需要判断y的位置
     Paint.FontMetricsInt fontMetrics = mPaint.getFontMetricsInt();//获得文字的大小  设置过字体大小后需要重新获得

     int baseline = (rect.bottom + rect.top - fontMetrics.bottom - fontMetrics.top) / 2;// baseline 为画文字时候的 y
     canvas.drawText("测试文字",(rect.left+rect.right)/2, baseline, mPaint);

因为用canvas画的时候通常是按像素画的 所以需要下面的 方法进行转换 适配不同分辨率的机型 方法中的 this 需要换成实际应用中的 context

 /**
 * dp单位转换为px
 */
public int dp2px( float dpValue){
    return (int)(dpValue * (this.getResources().getDisplayMetrics().density) + 0.5f);
}

/**
 * px单位转换为dp
 */
public   int px2dp(  float pxValue){
    return (int)(pxValue / (this.getResources().getDisplayMetrics().density) + 0.5f);
}

/**
 * sp转换成px
 */
private int sp2px( float spValue){
    float fontScale=this.getResources().getDisplayMetrics().scaledDensity;
    return (int) (spValue*fontScale+0.5f);
}
/**
 * px转换成sp
 */
private int px2sp( float pxValue){
    float fontScale=this.getResources().getDisplayMetrics().scaledDensity;
            return  (int) (pxValue/fontScale+0.5f);
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值