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;
    
  • 相关阅读:
    NumPy:数组计算
    Matplotlib模块:绘图和可视化
    量化投资与Python
    vue-cli脚手架(框架)
    vue 之webpack打包工具的使用
    vue之node.js的简单介绍
    es6简单介绍
    ECMAScript 6 入门
    爬虫框架之Scrapy
    angular5使用httpclient时解决跨域问题
  • 原文地址:https://www.cnblogs.com/baimiyishu/p/13961085.html
Copyright © 2011-2022 走看看