1首先利用canvas获取画布的宽高,

//获取屏幕的宽和高

int width = canvas.getWidth();

int height = canvas.getHeight();

2获取文字的宽度,

private int getTextWidth(Paint paint, String text){

int iRet = ;

if (text != null && text.length() > ) {

int len = text.length();

float[] widths = new float[len];

paint.getTextWidths(text, widths);

for (int j = ; j < len; j++) {

iRet += (int) Math.ceil(widths[j]);

}

}

return iRet;

}

3计算文字最左边的位置。

分析了一下,假如我们知道画布宽度为200,文字宽度为100;那么我们有如下公式计算文字最左边的位置;

+2x=

那么我们求解x就是我们text在绘制的时候left的值。

eg:

String text = getResources().getString(R.string.scan_text);

int textLeft = (width-getTextWidth(paint,text))/;

canvas.drawText(text,textLeft, (float) (frame.bottom + (float)TEXT_PADDING_TOP *density), paint);

Android Canvas drawText实现中文垂直居中

目标: 把中文字符绘制到目标矩形的居中位置. 问题: Android的Canvas绘图,drawText里的origin是以baseline为基准的,直接以目标矩形的bottom传进drawText, ...

关于Android Canvas&period;drawText方法中的坐标参数的正确解释

canvas.drawText("www.jcodecraeer.com", x, y, paint);  x和y参数是指定字符串中心的坐标吗?还是左上角的坐标?这个问题的直观印象 ...

Android Canvas&period;drawText方法中的坐标参数的正确解释

摘要 canvas.drawText(www.jcodecraeer.com, x, y, paint); x和y参数是指定字符串中心的坐标吗?还是左上角的坐标?这个问题的直观印象应该是左上角的坐标, ...

Android ToolBar标题文字居中的方法

在项目的开发中,使用苹果手机的产品,出的界面效果图极有可能(我这里是一定)完全是按照苹果的界面风格来出的,例如界面顶部的title文字位置是水平居中 如图: 那么问题来了,当我们使用ToolBar控件 ...

Android、IOS文字居中偏离的解决方案

前言 移动端开发,经常会遇到的问题,就是文字居中.一般都只能往css方向去fix这个问题. 自己以前也用过position:relative;top:-*px的方式去解决.

android开发之---文字居中---android中去掉标题栏

1. 让textView里面的内容水平居中 :    android:gravity="center_horizontal" 2. 让textView控件在它的父布局里水平居中   ...

android canvas drawtext 字高

Paint pFont = new Paint(); Rect rect = new Rect(); pFont.getTextBounds("豆", 0, 1, rect); L ...

android中画文字的换行 办法(对于遇到canvas&period;drawText&lpar;String s &rpar;无法实现换行问题的解决)

在使用canvas.drawText()绘制文字的时候,发现,如果需要绘制的文字较长,需要换行,通过在文字中加上“\n"或者”\r\n"都无法实现换行,如果非要使用canvas.d ...

【朝花夕拾】Android自定义View篇之(三)Canvas绘制文字

前言 转载请声明,转自[],谢谢! 前面的文章中在介绍Canvas的时候,提到过后续单独讲Can ...

随机推荐

MFC---给按钮加上快捷键

现在快捷键的使用已经很频繁了.快捷键可以使我们的操作变得更简单,更快捷.如何给自己的按钮加一个快捷键呢.    如下图:我们希望给我们的参照按钮加一个快捷键CTR + F. 不要以为在按钮的标题上加上 ...

学习 opencv---&lpar;1&rpar; opencv3&period;1&period;0 组件结构浅析

本系列是根据 浅墨大神 的opencv系列而写的,,应该大部分内容会一样..如有侵权还请告知........... 开发环境:win7 + VS2013 + opencv3.1.0 至于OpenCV组 ...

Linux 性能优化工具 perf top

1. perf perf 是一个调查 Linux 中各种性能问题的有力工具. NAME perf - Performance analysis tools for Linux SYNOPSIS per ...

转:你需要知道的NoSQL数据库10件事

你需要知道的NoSQL数据库10件事 NoSQL的5个优势 1.弹性扩展 多年来,数据库管理员一直依赖于向上扩展(scale up)-随着数据库负载的增加购买更大的数据库服务器―而不是向外扩展-随着负 ...

Gap 锁

14.3.1 InnoDB Locking InnoDB 锁 本章节描述InnoDB 使用的锁类型: Shared and Exclusive Locks Intention Locks Record ...

django csrf&lowbar;token生成

django模板中生成csrf_token的不同方式 系统环境 CENTOS 6.4 python 2.7.6 django 1.7.1 当post提交表单的的时候,是需要 csrf_token的, ...

ubuntu下面配置apache

1.在这个目录下面修改这个文件 把那个注释了 2.在这个目录下面修改这个文件 把这个改为index的目录

SQL判断语句

,,decode(tts.execute_state,,'false','true')) from twf_tech_schedule tts sql判断语句

MyRolan &lpar;快速启动小工具&rpar;

类似 Rolan的快速启动工具. 启动后隐藏,当鼠标移至左上角时,窗口显示,点击项目可运行程序. GitHub地址: MyRolan . #if defined(UNICODE) && ...

利用final定义方法:这样的方法为一个不可覆盖的方法。

常量(这里的常量指的是实例常量:即成员变量)赋值: ①在初始化的时候通过显式声明赋值.Final int x=3: ②在构造的时候赋值. 局部变量可以随时赋值.   利用final定义方法:这样的 ...