安卓api canvas.drawText()

自定义View时,通常会去重写onDraw(Canvas canvas)方法,利用自带的canvas去绘制文字;但是系统自带Api文档介绍很是含糊不清,每次去定义的时候总会感觉摸不着头脑.先做一总结:

canvas.drawText()简单总结
  • 起始点与对齐方式
    这里写图片描述
public CustomView(Context context, AttributeSet attrs) {
        super(context, attrs);
        init();
    }

    private void init() {
        paint = new Paint();       //注意提前初始化对象
        paint.setAntiAlias(true);
        paint.setColor(Color.RED);
    }
@Override
protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        paint.setTextSize(40);

        //(200,100)是文字左下角的所在坐标
        paint.setTextAlign(Align.LEFT);
        canvas.drawText("左侧对齐", 200, 100, paint);

        //(200,100)是文字右下角的所在坐标
        paint.setTextAlign(Align.RIGHT);
        canvas.drawText("右侧对齐", 200, 100, paint);

        //(200,100)是文字中间最下点的所在坐标
        paint.setTextAlign(Align.CENTER);
        canvas.drawText("中间对齐", 200, 100, paint);

}
  • 文字自身所占空间尺寸的获取

一些情况下需要考虑文字自身尺寸,比如绘制表格时需要文字水平中线对齐坐标轴:
这里写图片描述

        //Api1: 粗略获取宽度
        String text = "文字";
        float measureText = paint.measureText(text);          //结果78

        //Api2: 稍微精确获取
        Rect bounds = new Rect();
        paint.getTextBounds(text, 0, text.length(), bounds); 
        int right = bounds.right;                             //结果80

可见两个Api还是有相当偏差的,尤其是在文字数量较多时;当然还有更精确的方法,不过方法二足够使用了;上述表格绘制就比较简单了:

        //计算文字高度
        String text = "文字";
        Rect bounds = new Rect();
        paint.getTextBounds(text, 0, text.length(), bounds ); //80
        int bottom = bounds.bottom;
        //右侧对齐y轴
        paint.setTextAlign(Align.RIGHT);
        //偏移文字高度的一半
        canvas.drawText(text, x_origin, y_origin + bottom / 2, paint);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值