设置文本字体大小

设置文本字体大小的方式

  • 在Java代码中通过调用 文本视图对象的setTextSizeI()方法
  • 在xml文件中通过android:textSize属性设置字体大小,此时需要指定字号单位
    注:Android在布局文件中字号单位通常用sp

尺寸单位相关知识补充

像素(Pixel):又称为图像元素,是构成图像的基本单元,一个像素的大小无法确定,根据屏幕尺寸和像素数量的关系变化,一个像素点为1px。

分辨率(Resolution):分辨率指屏幕垂直和水平方向上的像素数量,如果分辨率是1920*1080,就代表垂直方向上有1920个像素,水平方向上有1080个像素。

像素密度Dpi:像素密度指屏幕上每英寸有多少个像素点。(1英寸=2.54厘米)。

假如一台手机的屏幕尺寸为4.95英寸,屏幕分辨率为1920*1080,则这台手机的Dpi计算如下:

  1. 计算屏幕对角线像素数量: 1920^2+1080^2=2202^2。
  2. 4.95英寸指的是屏幕对角线长度,计算Dpi:2202 / 4.95 = 445。
  3. 这个设备的像素密度Dpi为 445,即每英寸的距离中有 445个像素点。

独立像素Dip/dp:dip是长度单位,相同的单位长度在不同屏幕上显示效果不同,跟屏幕像素密度有关。

sp:sp的原理跟dp差不多,但它专门用来设置字体大小。在系统设置里可以调整字体的大小(小、标准、大、超大)。设置普通字体时,同数值dp和sp的文字看起来一样大;如果设置为大字体,用dp设置的文字没有变化,用sp设置的文字就变大了。

  在java代码中设置文本大小:

 

TextView tv_hello = findViewById(R.id.tv_hello);
tv_hello.setTextSize(30);//java代码中设置文本字体大小不用写单位,系统默认单位是sp

 

所有显示到屏幕上的图像都是以px作为单位的,dip是我们开发过程中使用的长度单位,最后也会转换为px。一台设备上dip跟px的换算关系为

px = Dpi/160  * dip          

根据换算关系:一台3.6寸,分辨率为320*480的手机,其像素密度dpi为160,在这台手机上1px = 1dip。

为什么要有Dip呢,我们来看两个实验

结论:dp的UI效果只在相同尺寸的屏幕上相同,如果屏幕尺寸相差过大,则需要做dp适配

实验一

相同分辨率,不同尺寸的两台手机A和B    

代号 分辨率 尺寸 dpi dp
手机A 320*480 3.6寸 160 1dp = 1px
手机B 320*480 7.2寸 80 1dp = 0.5px

 

如果通过代码设置一个宽度为100dp的TextView

代号 通过代码设置的宽度 在手机上实际显示的宽度 屏幕宽度 比例关系
手机A 100dp 100px 320px 10:32
手机B 100dp 50px 320px 5:32

得到结论:相同分辨率的不同手机,屏幕越大,通dp组件占用屏幕比例越小,如图

实验二

相同尺寸,不同分辨率的两台手机A和B 

代号 分辨率 尺寸 dpi dp
手机A 320*480 3.6寸 160 1dp = 1px
手机B 640*960 3.6寸 320 1dp = 2px

 如果通过代码设置一个宽度为100dp的TextView

代号 通过代码设置的宽度 在手机上实际显示的宽度 屏幕宽度 比例关系
手机A 100dp 100px 320px 10:32
手机B 100dp 200px 640px 10:32

得到结论:对于相同尺寸的手机,即使分辨率不同,同dp组件所占屏幕比例相同,如图

 

posted @   六味地黄丸  阅读(872)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
点击右上角即可分享
微信分享提示