android学习16#--学习canvas.drawText

本来这篇文章是要写写我在设计高级跑马灯程序的心得的,但是编写过程中花了近一天多的时间搞明白canvas.drawText中的第三个参数[float y]代表的真实含义。学习本文应该能帮助大家掌握FontMetrics类和Rect类成员变量值具体含义。

drawText引出问题

先来看看api中是如何定义drawText的参数。

    /**
     * Draw the text, with origin at (x,y), using the specified paint. The
     * origin is interpreted based on the Align setting in the paint.
     *
     * @param text  The text to be drawn
     * @param x     The x-coordinate of the origin of the text being drawn
     * @param y     The y-coordinate of the baseline of the text being drawn
     * @param paint The paint used for the text (e.g. color, size, style)
     */
    public void drawText(@NonNull String text, float x, float y, @NonNull Paint paint) {
        native_drawText(mNativeCanvasWrapper, text, 0, text.length(), x, y, paint.mBidiFlags,
                paint.getNativeInstance(), paint.mNativeTypeface);
    }

简单解释下各参数:
@param text:要显示的文本内容,这个不难理解。
@param x:文本相对屏幕原点x方向距离,没有更深的含义,也比较好理解
@param y:文本的baseline相对屏幕原点y方向距离。好,问题来了,baseline是个什么鬼东东
@param paint:画笔

baseline的来龙去脉

先看看baseline在文字区域的位置。通过一个实例来分析,这里只贴主要的code。

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

        mRect = new Rect();
        mPaint = new Paint();
        mPaint.setTextSize(64);
        mPaint.setColor(Color.RED);

        Paint.FontMetricsInt fontMetrics = mPaint.getFontMetricsInt();
        mPaint.getTextBounds(textStr, 0, textStr.length(), mRect);

        int w = mRect.wid
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值