
Android 开发学习进程0.25 自定义控件
发布日期:2021-05-09 00:48:51
浏览次数:9
分类:博客文章
本文共 1282 字,大约阅读时间需要 4 分钟。
自定义控件
自定义控件空指针问题 ,构造函数要写成
public MineTextTool(Context context) { this(context,null); } public MineTextTool(Context context, @Nullable AttributeSet attrs) { this(context, attrs,0); } public MineTextTool(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); getAttrs(attrs); init(); }
paint绘制文字
paint.fontmetriccs 类度量字体有一下属性:
- 基准点是baseline
- Ascent是baseline之上至字符最高处的距离
- Descent是baseline之下至字符最低处的距离
- Leading文档说的很含糊,这个我还不清楚,但有人说是上一行字符的descent到下一行的ascent之间的距离,也有人说不是
- Top指的是指的是最高字符到baseline的值,即ascent的最大值
- 同上,bottom指的是最下字符到baseline的值,即descent的最大值即从上到下依次为 top ascent baseline desent buttom 同时需要注意的是top为负值,判断距离需要使用math.abs()获取绝对值。
TextPaint textPaint = new TextPaint(); textPaint.setTextSize(textSizePx); textPaint.setColor(textColor); int width = (int) Math.ceil(textPaint.measureText(text)); Paint.FontMetrics fontMetrics = textPaint.getFontMetrics(); int height = (int) Math.ceil(Math.abs(fontMetrics.bottom) + Math.abs(fontMetrics.top)); Bitmap bitmap = Bitmap.createBitmap(width,height, Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(bitmap); canvas.drawText(text,0,Math.abs(fontMetrics.ascent),textPaint); return bitmap;
发表评论
最新留言
能坚持,总会有不一样的收获!
[***.219.124.196]2025年04月13日 02时59分18秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
上周热点回顾(12.16-12.22)
2021-05-09
云计算之路-阿里云上:“黑色30秒”走了,“黑色1秒”来了,真相也许大白了
2021-05-09
云计算之路-阿里云上:奇怪的CPU 100%问题
2021-05-09
云计算之路-阿里云上:2014年6月12日12点IIS请求到达量突降
2021-05-09
上周热点回顾(6.9-6.15)
2021-05-09
上周热点回顾(6.16-6.22)
2021-05-09
上周热点回顾(10.20-10.26)
2021-05-09
上周热点回顾(2.16-2.22)
2021-05-09
上周热点回顾(3.2-3.8)
2021-05-09
.NET跨平台之旅:借助ASP.NET 5 Beta5的新特性显示CLR与操作系统信息
2021-05-09
上周热点回顾(7.27-8.2)
2021-05-09
上周热点回顾(9.28-10.4)
2021-05-09
上周热点回顾(5.2-5.8)
2021-05-09
上周热点回顾(5.9-5.15)
2021-05-09
上周热点回顾(8.8-8.14)
2021-05-09
.NET跨平台之旅:将示例站点升级至 .NET Core 1.1 Preview 1
2021-05-09
上周热点回顾(1.16-1.22)
2021-05-09
上周热点回顾(1.23-1.29)
2021-05-09
上周热点回顾(3.20-3.26)
2021-05-09
上周热点回顾(4.24-4.30)
2021-05-09