数字在哪里'基线?

时间:2017-06-12 01:04:43

标签: android canvas clock baseline

我像这样研究应用程序the clock UI

    /**
     * draw the hour text (12、3、6、9)
     * draw the arc
     */
    private void drawTimeText() {
        //draw the hour text 
        String timeText = "12";
        mTextPaint.getTextBounds(timeText, 0, timeText.length(), mTextRect);
        int textLargeWidth = mTextRect.width();//两位数字的宽
        mCanvas.drawText("12", getWidth() / 2 - textLargeWidth / 2, mPaddingTop + mTextRect.height(), mTextPaint);
        timeText = "3";

        mTextPaint.getTextBounds(timeText, 0, timeText.length(), mTextRect);
        int textSmallWidth = mTextRect.width();//一位数字的宽
        mCanvas.drawText("3", getWidth() - mPaddingRight - mTextRect.height() / 2 - textSmallWidth / 2,
                getHeight() / 2 + mTextRect.height() / 2, mTextPaint);

        mCanvas.drawText("6", getWidth() / 2 - textSmallWidth / 2, getHeight() - mPaddingBottom, mTextPaint);
        mCanvas.drawText("9", mPaddingLeft + mTextRect.height() / 2 - textSmallWidth / 2,
                getHeight() / 2 + mTextRect.height() / 2, mTextPaint);


      //draw the arc
        mCircleRectF.set(mPaddingLeft + mTextRect.height() / 2 + mCircleStrokeWidth / 2,
                mPaddingTop + mTextRect.height() / 2 + mCircleStrokeWidth / 2,
                getWidth() - mPaddingRight - mTextRect.height() / 2 + mCircleStrokeWidth / 2,
                getHeight() - mPaddingBottom - mTextRect.height() / 2 + mCircleStrokeWidth / 2);
        for (int i = 0; i < 4; i++) {
            mCanvas.drawArc(mCircleRectF, 5 + 90 * i, 80, false, mCirclePaint);
        }

我不知道什么时候画小时文字&#34; 3&#34;,

mCanvas.drawText("3", getWidth() - mPaddingRight - mTextRect.height() / 2 - textSmallWidth / 2,
                    getHeight() / 2 + mTextRect.height() / 2, mTextPaint);

使用canvas.drawText(),

void drawText (String text, 
                int start, 
                int end, 
                float x, 
                float y, 
                Paint paint)

&#34; Y&#34;是指数字的基线,我不知道数字基线的规则,例如&#34; 3&#34;,其中是数字的基线?我搜索谷歌&#34;基线&#34;,但它只是关于英文字母基线,没有关于数字基线。

1 个答案:

答案 0 :(得分:1)

数字的基线与我所知的字母相同。大多数字体的数字都将位于基线上,但有些字体会延伸到基线以下,就像一个&#39; g&#39;或者是&#39; j&#39;在大多数字体中都有(某些&#39;旧样式&#39;或者#39;字体就是一个很好的例子)......

enter image description here enter image description here

这里的虚线是基线

不要忘记,当您将y坐标发送到drawText方法时,它会期待基线这些字符的顶部。 希望这会有所帮助。