android精确绘制文字位置的方法
android 中使用Canvas的drawText绘制文本的位置,是基于基线的。
例如以下图:
当中字母Q的小尾巴在横线以下了。
怎么样找准字母的中心位置呢?
先看以下的样例:(右边的数字,表示字体的 left, top, right, bottom)
这里面的关键是Paint.getTextBound。 getTextBound会填充一个Rect,这个Rect表示的就是一个字的left, top, right, bottom。
注意到left和top并非从0,0開始的。 left和right应该是从0坐标開始的。而top和bottom相对于基线而言的。这个信息足够我们找准文字的中心了。
最后上一下代码:
- @Override
- public void onDraw(Canvas canvas) {
- mPaint.setTextSize(40f);
- mPaint.setAntiAlias(true);
- mPaint.setColor(0xffff0000);
- canvas.drawText(alphas, 30, 60, mPaint);
- mPaint.setColor(0xff000000);
- canvas.drawLine(0, 60, 1000, 60, mPaint);
- for(int i = 0; i < alphas.length(); i ++) {
- int y = i*70+100;
- mPaint.getTextBounds(alphas, i, i+1, mBound);
- mPaint.setColor(0xff000000);
- canvas.drawText(String.format("%d,%d,%d,%d", mBound.left,mBound.top, mBound.right,mBound.bottom), 150, y, mPaint);
- mPaint.setColor(0xffff0000);
- canvas.drawCircle(60, y, 30, mPaint);
- mPaint.setColor(0xffffffff);
- canvas.drawText(alphas, i, i+1, 60 - (mBound.right + mBound.left)/2, y - (mBound.bottom + mBound.top)/2, mPaint);
- mPaint.setColor(0xff000000);
- canvas.drawLine(30, y, 90, y, mPaint);
- canvas.drawLine(60, y-30, 60, y+30, mPaint);
- }
- }
- }
android精确绘制文字位置的方法的更多相关文章
- Android ToolBar标题文字居中的方法
在项目的开发中,使用苹果手机的产品,出的界面效果图极有可能(我这里是一定)完全是按照苹果的界面风格来出的,例如界面顶部的title文字位置是水平居中 如图: 那么问题来了,当我们使用ToolBar控件 ...
- Android bitmap绘制文字自动换行
public Bitmap getNewBitMap(String text) { Bitmap newBitmap = Bitmap.createBitmap(,, Config.ARGB_4444 ...
- 【朝花夕拾】Android自定义View篇之(三)Canvas绘制文字
前言 转载请声明,转自[https://www.cnblogs.com/andy-songwei/p/10968358.html],谢谢! 前面的文章中在介绍Canvas的时候,提到过后续单独讲Can ...
- Android绘制文字时垂直居中
canvas.drawText(String text, float x, float y, Paint paint); 是Android中绘制文本的方法,其中的x代表文字绘制时在X轴的起始点,而y是 ...
- Android 使用View绘制文字(DrawText)技术总结
转载请注明出处: http://www.cnblogs.com/renhui/p/7453534.html 这里的绘制文字不是直接调用TextView.setText(String content)去 ...
- Android 使用Canvas在图片上绘制文字
一个小应用,在图片上绘制文字,以下是绘制文字的方法,并且能够实现自动换行,字体自动适配屏幕大小 private void drawNewBitmap(ImageView imageView, Stri ...
- Android View各种尺寸位置相关的方法探究
Android View各种尺寸位置相关的方法探究 本来想做一个View间的碰撞检测之类的. 动手做了才发现不是想象的那么简单. 首先,写好了碰撞检测的工具类如下: package com.mengd ...
- Android视图绘制流程完全解析,带你一步步深入了解View(二)
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/16330267 在上一篇文章中,我带着大家一起剖析了一下LayoutInflater ...
- 用TextPaint来绘制文字
TextPaint是paint的子类,用它可以很方便的进行文字的绘制,一般情况下遇到绘制文字的需求时,我们一般用TextPaint所提供的方法.开始学习如何绘制文字之前,我们必须要先了解下androi ...
随机推荐
- 洛谷——P1958 上学路线_NOI导刊2009普及(6)
P1958 上学路线_NOI导刊2009普及(6) 题目描述 你所在城市的街道好像一个棋盘,有a条南北方向的街道和b条东西方向的街道.南北方向的a条街道从西到东依次编号为l到a,而东西方向的b条街道从 ...
- Codeforces Round #260 (Div. 1) Boredom(DP)
Boredom time limit per test 1 second memory limit per test 256 megabytes input standard input output ...
- ansible用playbook实现定期监控各机器磁盘和进程状态
目标:用ansible定期监控各机器的磁盘空间状况 和进程运行状况 1)配置playbook脚本,实现对磁盘空间 和 特定进程运行状态的每日检查: 2)通过邮件插件,把检测结果发到ops邮箱: 一.p ...
- phongap开发中安卓平台上如何调用第三方播放器来播放HLS视频
前文曾经讲了关于在安卓平台上利用phonegap开发播放HLS的解决方案,其实最好的方案就是自己针对HLS视频开发自己的播放器,但是开发播放器是一个浩大的工程,必须对原生安卓开发非常熟悉,并且对视频播 ...
- Codeforces 500 E. New Year Domino
\(>Codeforces \space 500 E. New Year Domino<\) 题目大意 : 数轴上有序排列着 \(n\) 块多米诺骨牌, 第 \(i\) 块骨牌坐标为 \( ...
- 【枚举】XVII Open Cup named after E.V. Pankratiev Stage 4: Grand Prix of SPb, Sunday, Octorber 9, 2016 Problem D. Cutting Potatoes
题意:有n个土豆,每个有体积V(i),你可以将每个土豆等分为不超过K份,问你最大块和最小块比值最小为多少. 直接枚举切法,只有n*K种,然后保证其为最大块,去算其他块的切法,即让其他块切得尽可能大即可 ...
- 【序列莫队】BZOJ2038- [2009国家集训队]小Z的袜子(hose)
[题目大意]给出1-N只袜子的颜色,多次询问L-R中选出一双同色袜子的概率. [思路] 裸莫队.基本的莫队步骤:①分组(每组大小为根号sqrt(n),共sqrt(n)组)②排序(左边界分组,右边界在组 ...
- Codeforces Round #343 (Div. 2) B. Far Relative’s Problem 暴力
B. Far Relative's Problem 题目连接: http://www.codeforces.com/contest/629/problem/B Description Famil Do ...
- 基于tiny4412的Linux内核移植 -- MMA7660驱动移植(九)
作者信息 作者: 彭东林 邮箱:pengdonglin137@163.com QQ:405728433 平台简介 开发板:tiny4412ADK + S700 + 4GB Flash 要移植的内核版本 ...
- Mybatis注解方法操作数据库
Java中使用Mybatis操作数据库主要有两种方法:注解和xml配置,注解相对比较简单和方便,两种方式的效果一致.本文以注解的方式说明用Mybatis访问数据库的方法 一.创建数据表(MySql) ...