Android Cannas.drawTextView 方法坐标问题
来源:互联网 发布:网络保密心得体会 编辑:程序博客网 时间:2024/06/05 11:09
Android Cannas.drawTextView 方法坐标问题
- 先看看我们把drawText方法里面x,y的位置设置为0的效果吧
canvas.drawText("哈哈哈", 0, 0, mPaint);
- 看到上面的图片了吧,是不是觉得很奇怪,为什么只显示字体的脚呢 ?
- 我们输入的坐标0.0,是在控件的左上角,按我们之前对android坐标系的了解,大家是不是都觉的文字应该是在左上角从上到下的显示出来,而不是只显示在左上角的位置,其实这个跟基线有关系.
- 如果我们y坐标设置为0的话,那基线的位置就是在0,这样就会导致我们的文字只显示脚的问题了
- 我们现在就来让文字显示在控件的中间吧,要实现这个效果其实很简单,只要我们修改基线的位置就ok了,让文字居中有3中方式,其实都是差不多的,所以这里我就只讲解其中一种了
- 思路:
- 在Paint中我们可以获取到上图所有线的位置
- 先计算出字体的总高度,其实就是Ascent 到 Descent 的位置了
- 再用Ascent - 去字体高度的一半,就得到了我们要移动基线的距离了
private void initPaint() { mPaint = new Paint(Paint.ANTI_ALIAS_FLAG); mPaint.setColor(Color.RED); mPaint.setStyle(Paint.Style.STROKE); mPaint.setTextSize(30); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); String str = "哈哈哈"; //方式一 float textWidth = mPaint.measureText(str); //获取文字的宽度 float x = (getMeasuredWidth() - textWidth) / 2; //x的位置 float y = getMeasuredHeight() / 2 + (-mPaint.ascent() - (mPaint.descent() - mPaint.ascent()) / 2); canvas.drawText(str, x, y, mPaint); }
阅读全文
2 0
- Android Cannas.drawTextView 方法坐标问题
- drawTextView
- Android 坐标转换方法
- android 坐标问题
- cannas柱状图
- Android获取View坐标方法
- Android中获取坐标方法
- android 获取坐标的方法
- Android中的坐标以及获取坐标的方法
- android webkit 调试坐标位置方法
- Android坐标的简单方法介绍
- 百度地图 Android SDK - 坐标转换方法
- Android 根据坐标获取控件方法
- 百度地图 Android SDK - 坐标转换方法
- 百度地图Android SDK坐标转换方法
- Android坐标系统常用方法属性总结
- Android坐标系统常用方法属性总结
- 百度地图 Android SDK - 坐标转换方法
- 实习第一天
- "Open With Atom"右键菜单失效
- Ubuntu安装vsftpd服务
- 动态分配解决回文数问题
- Linux网络编程——广播
- Android Cannas.drawTextView 方法坐标问题
- JVM(8):JVM知识点总览-高级Java工程师面试必备
- 一篇就够了系列之Activity全解析
- 为什么排序后的数组比没有排序过的数组运行快?
- tolua++ 编译 及使用 简单介绍 标签: tolua++luaC++
- 20 Parallelism
- C++ 获取exe路径
- 简单的记忆回退功能
- Apache的三种MPM模式比较:prefork,worker,event