zoukankan      html  css  js  c++  java
  • 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;
    
  • 相关阅读:
    Bash Shell 快捷键
    vector-swap
    vector-swap
    vector-size
    Android网络篇
    应用 Valgrind 发现 Linux 程序的内存问题
    树莓派初学者?先做做这十个项目吧
    树莓派 (为学习计算机编程教育设计的一种微型电脑)
    微软windows10 IOT支持PI3之后,树莓派3更是将获得Android官方原生支持
    Linux基金会宣布JS Foundation基金会成立 前身为jQuery团队
  • 原文地址:https://www.cnblogs.com/baimiyishu/p/13961085.html
Copyright © 2011-2022 走看看