8种机械键盘轴体对比

本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?

在android自定义控件中经常用到canvas.drawText方法来绘制文本,我自己在用这个方法的时候,有很多迷惑,首先对参数含义不明白,其次对实现文本居中的计算公式也不太理解。

经过自己查阅相关博文以及请教一些大神,终于算是对这两个疑点理解好了,下面就进行一下总结。

一、方法参数介绍

首先可以看一下API上对这个方法的描述

可以看到,这四个参数依次为:text:需要绘制的文本;

x:文本的水平方向原点距其所在view左边的距离。原点默认是字符串的的最左边,如果设置了paint.setTextAlign(Paint.Align.CENTER);那么原点就是字符串的中心了;

y:表示文本的baseline距离所在view的顶部的距离;

paint:用来绘制文本的画笔。

二、绘制居中文本首先需要了解一个类,Paint.FontMetrics

这个类的在API中的介绍如下:

baseline为文本的基准线ascent:是baseline之上至字符最高处的距离;

bottom:是文本中字符的最下边到baseline的距离,即descent的最大值;

descent:是baseline之下至字符最低处的距离;

leading:上一行文本的descent到当前行ascent之间的距离;

top:是文本中字符的最上边到baseline的距离,即ascent的最大值。

注:top、ascent是负数,bottom、descent是正数。具体top、bottom与ascent、descent有什么区别从上面的描述中根本看不出来(上面的描述文字是借用的),如果哪位大神对top和ascent的区别比较清楚不妨指点我一下,谢谢。

他们之间的关系用图表示如下:(图是借用的)

文本居中baseline距view上边距的距离计算公式

公式一:中心轴线距view顶部的距离-文本高度的一半+|ascent|

int baseLine = (getMeasuredHeight() - fontMetrics.bottom + fontMetrics.top) / 2 - fontMetrics.top;

公式二:中心轴线距view顶部的距离+文本高度的一般-descent

int baseLine = getMeasuredHeight()/2 + (fontMetrics.descent- fontMetrics.ascent)/2 - fontMetrics.descent;

两个公式中top可以用ascent替换,bottom可以用descent替换,成对替换哦。

这两个公式的理解:

首先,文本居中的话那么文本的水平中心轴线应该和所在view的水平中心线重合;

接下来,descent-ascent的值可以看做文本的高度,这里ascent是负数所以是减号(我之前看着公式弄迷糊了就是因为不清粗ascent是负数);

能力有限,这些都只是整理网上别人写的博文加上自己的理解,如果有不妥的地方还望指正,不胜感激!

android drawtext参数,drawText参数介绍及绘制居中文本相关推荐

  1. ReactNative入门之android与rn初始化参数的传递

    1.基本理念 RN APP本质上也是原生APP,只是在原生APP中加入了React Native视图的支持. 因此获取RN APP的启动参数的方法原生APP是一样的,获取启动参数后再通过合适的方法传递 ...

  2. android rn动态技术,ReactNative入门之android与rn初始化参数的传递

    1.基本理念 RN APP本质上也是原生APP,只是在原生APP中加入了React Native视图的支持. 因此获取RN APP的启动参数的方法原生APP是一样的,获取启动参数后再通过合适的方法传递 ...

  3. vivo+x21+android版本,vivo X21参数_vivo X21配置怎么样-太平洋IT百科

    vivo X21配置怎么样?vivo X21硬件参数是大家比较关注的话题,vivo X21已经上市,这款产品可谓是vivo年度产品,相比上一代V20有着极大的全面升级,相信会成为今年下线爆款产品,那么 ...

  4. R:热图解释 | pheatmap包参数及详细聚类图绘制流程(一篇解决热图绘制问题)

    热图解释及pheatmap绘制热图 一.热图绘制原理 1.1 热图介绍 1.2 热图绘制准备--均一化 1.3 热图绘制方式 1.4 热图数据查看示例 二.pheatmap包简介 2.1 pheatm ...

  5. 在linux kernel或android中解析cmdline参数

    文章目录 ★★★ 友情链接 : 个人博客导读首页-点击此处 ★★★ Kernel command line: earlycon androidboot.selinux=permissive uart_ ...

  6. android settext 参数,Android TextView.setTextColor()的参数设置方式

    摘要:Android TextView.setTextColor()的参数设置方式 查了下资料发现setTextColor()的参数应该写成以下的这种形式: setTextColor(0xFF0000 ...

  7. uploadify插件可选参数的详细介绍

    uploadify插件可选参数的详细介绍     以下是可选项的参数说明:(红色的属性代表常用的) 1 uploader 上传控件的主体文件,flash控件 默认值='uploadify.swf' 2 ...

  8. Android 系统(260)---Android 读取SIM卡参数

    Android 读取SIM卡参数 package com.water.activity; import java.util.List; import android.app.Activity; imp ...

  9. Hadoop MapReduce Job 相关参数设置 概念介绍与理解

    Hadoop MapReduce  Job 相关参数设置 概念介绍与理解 InputFormat: 作用:将输入的文件分成 一个个split,并且将split 拆分成一个个<key,value& ...

最新文章

  1. 人类首次登月50年后,这60家公司决心重返月球
  2. FPS手游《战地先锋》性能案例精讲
  3. 程序员制作出价值5亿外卖神器却不能取消订单,你知道吗?
  4. python脚本文件格式_Python 基础语法_Python脚本文件结构
  5. 使用Pytorch简单实现混合密度网络(Mixture Density Network, MDN)
  6. Linux内核启动:setup_arch
  7. MOVE降低高水位 HWM
  8. 深度篇——目标检测史(五) 细说 SSD 目标检测
  9. oracle连续周数,oracle周数计算
  10. HTML技巧篇——禁止网页元素被右击、拖动、选中、复制
  11. mysql的group by语句不会产生_MySQL:为什么查询列表中多了它,GROUP BY语句就会报错呢?...
  12. macOS Big Sur 11.2.3 (20D91) 虚拟机 ISO 镜像
  13. aiohttp 高并发web服务_python后台——asyncio,aiohttp入门教程,多进程+asyncio
  14. JavaScript基本原理常识
  15. linux系统--文件目录
  16. 回溯法经典算法 求集合中所有的子集
  17. 物理科普读物推荐:《物理精神》——人类文明创新的原动力
  18. dp的sst模式下training流程
  19. TCP IP学习笔记① 互联网通信过程
  20. 欧盟委员会开源计划办公室启动漏洞赏金

热门文章

  1. 突然断电导致虚拟磁盘的自我保护而打不开
  2. json解析异常(转义符处理)
  3. 汽车融资租赁订单流程-自营模式
  4. SuperMap 二维数据建造三维模型
  5. 致远表单函数自定义-groovy代码:阿拉伯数字转大写汉字
  6. iOS 12 更新 遇到的坑以及解决方法
  7. 安装oculus运行时出现问题_PC单机游戏安装运行常见问题及解决方法
  8. 塔吊上的导电滑环,导电滑环在起重小车上的作用
  9. 为何一套心理素质测评解决不了员工入职的心理筛查问题?
  10. 能拯救你的,只有你自己