• Android 开发学习进程0.25 自定义控件


    自定义控件

    自定义控件空指针问题 ,构造函数要写成

      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;
    
  • 相关阅读:
    Java——static
    Java——package与import
    Java——方法重写
    Java——super
    Java——类的继承、访问控制
    Java——API文档
    Java——对象转型
    Java——动态绑定和多态
    Java——抽象类
    redis在linux上的安装和配置
  • 原文地址:https://www.cnblogs.com/baimiyishu/p/13961085.html
Copyright © 2020-2023  润新知