博客
关于我
Android 开发学习进程0.25 自定义控件
阅读量:402 次
发布时间:2019-03-06

本文共 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 类度量字体有一下属性:

  1. 基准点是baseline
  2. Ascent是baseline之上至字符最高处的距离
  3. Descent是baseline之下至字符最低处的距离
  4. Leading文档说的很含糊,这个我还不清楚,但有人说是上一行字符的descent到下一行的ascent之间的距离,也有人说不是
  5. Top指的是指的是最高字符到baseline的值,即ascent的最大值
  6. 同上,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;

转载地址:http://rdpkz.baihongyu.com/

你可能感兴趣的文章
C语言的数值溢出问题(上)
查看>>
8051单片机(STC89C52)以定时器中断模式实现两倒计时器异步计时
查看>>
vue项目通过vue.config.js配置文件进行proxy反向代理跨域
查看>>
android:使用audiotrack 类播放wav文件
查看>>
聊聊我的五一小假期
查看>>
数据库三个级别封锁协议
查看>>
ACM/NCPC2016 C Card Hand Sorting(upc 3028)
查看>>
ubuntu学习笔记-常用文件、命令以及作用(hosts、vim、ssh)
查看>>
SLAM学习笔记-求解视觉SLAM问题
查看>>
程序员应该知道的97件事
查看>>
create-react-app路由的实现原理
查看>>
openstack安装(九)网络服务的安装--控制节点
查看>>
shell编程(六)语言编码规范之(变量)
查看>>
vimscript学习笔记(二)预备知识
查看>>
SSM项目中遇到Could not autowire. No beans of ‘XXX‘ type found.错误
查看>>
Android数据库
查看>>
HTML基础,块级元素/行内元素/行内块元素辨析【2分钟掌握】
查看>>
STM8 GPIO模式
查看>>
23种设计模式一:单例模式
查看>>
Qt中的析构函数
查看>>