Android Studio 之像素

server/2024/9/22 19:38:20/
Android支持的像素单位有:px(像素)、in(英寸)、mm(毫米)、pt(磅,1/72英寸)、dp(与设备无关的显示单位)、dip(就是dp)、sp(用于设置字体大小)。其中,常用的有px、dp和sp三种。具体来说,px是手机屏幕上可显示的最小单位,与物理设备的显示屏有关。一般来说,同样尺寸的屏幕(比如5寸的手机)看起来越清晰,像素的密度越高,以px计量的分辨率也越大。dp与物理设备无关,只与屏幕的尺寸有关。一般来说,同样尺寸的屏幕以dp计量的分辨率是一样的,无论这个手机是哪个厂家生产的,dp大小都一样。sp的原理跟dp差不多,专门用于设置字体大小。手机在系统设置里可以调整字体的大小(小、普通、大、超大)。设置普通字体时,同数值dp和sp的文字看起来一样大;如果设置为大字体,用dp设置的文字没有变化,用sp设置的文字就变大了。所以说,dp与系统设置的字体大小没有关系,而sp会随系统设置的字体大小变大或变小。dp和px之间的联系取决于具体设备上的像素密度,像素密度就是DisplayMetrics里的density参数。当density=1.0时,表示一个dp值对应一个px值当density=1.5时,表示两个dp值对应3个px值当density=2.0时,表示一个dp值对应两个px值具体的转换函数如下:
    // 根据手机的分辨率从dp的单位转成px(像素)public static int dip2px(Context context, float dpValue){// 获取当前手机的像素密度final float scale = context.getResources().getDisplayMetrics().density;return (int)(dpValue*scale + 0.5f) // 四舍五入取整}// 根据手机的分辨率从px(像素)的单位转成为dppublic static int px2dip(Context context, float pxValue){// 获取当前手机的像素final float scale = context.getResources().getDisplayMetrics().density;return (int)(pxValue / scale + 0.5f); // 四舍五入取整}
在XML布局文件中,为了让不同设备屏幕拥有统一的显示效果,除了sp用于设置文字大小外,其余要用尺寸大小的地方都用dp。在代码中情况又有所不同,Android用于设置大小的函数都以px为单位。无论是LayoutParams里的width和height,还是setMargins和setPadding,参数单位都是px,要想在代码中使用dp设置布局大小或间距,得先把dp值转换成px值。代码示例如下:
 // 将10dp的尺寸大小转换为对应的px数值int dip_10 = Utils.dip2px(this, 10L);// 从布局文件中获取名叫tv_padding的文本视图TextView tv_padding = findViewById(R.id.tv_padding);// 设置该文本视图的内部文字与控件四周的间隔大小tv_padding.setPadding(dip_10, dip_10, dip_10, dip_10);


http://www.ppmy.cn/server/34234.html

相关文章

C++ 字符串补充

1、string类型和const char *类型 const char类型是C语言中用来表示字符串的一种数据类型,通常以字符数组的形式表示,以空字符\0结尾。而string类型是C中的标准库中提供的字符串类,是一个封装了char数组的字符串对象,可以动态地改…

MySql#MySql安装和配置

目录 一、卸载不需要的环境 二、安装mysql yum 源 三、开始安装 四、如果保证安装成功呢? 五、MySql 启动! 六、登录mysql 七、配置文件说明 八、设置开机启动! 本次安装是在Linux环境在centos7中完成 首先先将自己切换成root 一、…

【系统架构师】-选择题(十三)

1、在某企业的营销管理系统设计阶段,属性"员工"在考勤管理子系统中被称为"员工",而在档案管理子系统中被称为"职工",这类冲突称为( 命名冲突)。 同一个实体在同系统中存在不同的命名&am…

目标检测正负样本区分和平衡

1、正负样本定义 rpn和rcnn的正负样本定义都是基于MaxIoUAssigner,只不过定义阈值不一样而已。 MaxIoUAssigner的操作包括4个步骤: 首先初始化时候假设每个anchor的mask都是-1,表示都是忽略anchor 将每个anchor和所有gt的iou的最大Iou小于…

leetcode 1235

leetcode 1235 代码 class Solution { public:int jobScheduling(vector<int>& startTime, vector<int>& endTime, vector<int>& profit) {int n startTime.size();vector<vector<int>> jobs(n);for(int i0; i<n; i){jobs[i] …

python的scapy库基础使用

scapy库 一.概述 Scapy是一个功能强大且灵活的Python库&#xff0c;用于操作和探索计算机网络中的数据包。它允许用户构建各种类型的网络数据包&#xff0c;并支持多种网络协议&#xff0c;如TCP、UDP、ICMP、ARP等。Scapy不仅可以发送和接收数据包&#xff0c;还可以捕获、修…

ApacheCordova 12 +Vs 2022 项目搭建教程_开发环境搭建教程

一、安装 cordova cli 并使用命令创建项目 npm install –g cordova 详细参考: Apache Cordova开发环境搭建(二)VS Code_天马3798-CSDN博客_cordova vscode 二、 Vs 2022 Android 开发搭建+调试 .Net MAUI 搭建Android 开发环境-CSDN博客 三、配置 JDK 环境变量、配置…

NPM 基础

介绍 npm 是 JavaScript 编程语言的一个包管理器&#xff0c;它允许开发者安装、共享和管理依赖项。npm 与 Node.js 紧密集成&#xff0c;是 Node.js 生态系统中不可或缺的一部分。它提供了一个命令行工具&#xff0c;使得开发者能够轻松地安装、配置和管理项目所需的各种包。…