Android View 体系

1.屏幕宽高的获取

2.View坐标体系

2.1 View坐标的含义

View的getHeight,getWidth,getX,getY,getTop,getLeft,getBottom,getRight的含义

getHeight: View自身的高度
getWidth: View自身的宽度
getX : View左上角距离父View顶部的距离
getY : View左上角距离父View左边的距离
getTop:View顶部距离父View顶部的距离
getLeft:View左部距离父View左部的距离
getBottom:View底部距离父View顶部的距离
getRight:View右部距离父View左部的距离

效果如图所示:

image.png

2.2 MotionEvent的坐标

getX:触碰点到自身左边界的距离
getY:触碰点到自身上边界的距离
getRawX:触碰点距离屏幕左边界的距离
getRawY:触碰点距离屏幕上边界的距离

image.png

3.drawText中文字的详细信息

在使用drawText方法时,draw出来的text宽高到底是多少?有padding吗?

3.1drawText文本信息

View中drawText文字的属性可以通过Paint.FontMetrics这个类获得。

float top = fontMetrics.top;
float ascent = fontMetrics.ascent;
float leading = fontMetrics.leading;
float descent = fontMetrics.descent;
float bottom = fontMetrics.bottom;

具体含义如下图所示:

image.png

一图胜千言。

3.2文本的真实宽高

获取文本的真实宽高:

        Rect rect = new Rect();
        mTextPaint.getTextBounds(text, 0, text.length(), rect);
        int width = rect.width();//文本的宽度
        int height = rect.height();//文本的高度

如下图矩形黑框所示:


image.png

这个矩形黑框的宽高为上面求得的宽高值,起点的x,y坐标不能确定。我是通过不断的调整坐标参数看是否能够正好完全包含文字内容而得出结论:
getTextBounds()获得值就是文本真实的宽高值。

3.3drawText文本绘制的起点

当我们调用drawText("afg",getWidth()/2,getHeight()/2,mPaint);这个方法时,文本绘制的起点是哪里呢?

如下图所示:

image.png

这个点的y坐标在leading线上,而x坐标在第一个字符靠左一点点距离。

你可能感兴趣的:(Android View 体系)