自定义控件之drawText()方法理解

来源:互联网 发布:淘宝自定义装修教程 编辑:程序博客网 时间:2024/06/16 00:22
/** * text:要绘制的文字 * x:绘制原点x坐标 * y:绘制原点y坐标 * paint:用来做画的画笔 */  public void drawText(String text, float x, float y, Paint paint) 

drawText 方法是用来在View中绘制自定义文字。

让我们先了解一下android中绘制文字的原理:


如上图,android是通过极限位置,图中点的位置(就是drawText方法中(x,y)坐标所在的点)和文字的大小来绘制文字的位置。

基线的y轴位置即是drawText中的y值。

这里特别强调一下drawText方法中x值。

x值是和Paint.setTextAlign(Align align)共同来确定文字开始绘制的位置。

下面分别来看一下Align设置为不同的值的效果图。
<pre name="code" class="java"> @Override    protected void onDraw(Canvas canvas) {        mPaint.setColor(Color.GRAY);        canvas.drawRect(0,0,getMeasuredWidth(),getMeasuredHeight(),mPaint);        mPaint.setColor(Color.RED);        canvas.drawLine(getMeasuredWidth()/2,0,getMeasuredWidth()/2,getMeasuredHeight(),mPaint);        mPaint.setColor(mTitleTextColor);        mPaint.setTextAlign(Paint.Align.LEFT);       // Paint.FontMetricsInt fontMetricsInt = mPaint.getFontMetricsInt();       // int baselineY = getMeasuredHeight()/2 -(fontMetricsInt.top+fontMetricsInt.bottom)/2;        canvas.drawText(mTitleText,getMeasuredWidth()/2-mBound.width()/2,getMeasuredHeight()/2-mBound.height()/2,mPaint);    }


效果图如下:


当将Align设置为RIGHT时,

效果图如下:


当将Align设置为CENTER时,

效果图如下:




0 0