当前位置: 首页 > news >正文

Android 手机屏幕适配方式和原理

其适配原理主要是根据dp/sp与px的转换,而dp/sp与px的转换又与DisplayMetrics的density相关,所以可以通过改变DisplayMetrics的density,scaledDensity和densityDpi的值来适配不同分辨率机型。

在开始分析之前,我们需要了解一些概念,如:

DisplayMetrics:是Android屏幕显示的信息描述,如尺寸size,密度desity,字体缩放值font scaling
Resources:是应用的资源管理类(High level api),可以调用应用中的color,string,drawable等资源
AssetManager:是可以直接访问应用的raw资源(Low level api)
BitmapFactory: Bitmap工厂类,可以根据多种来源创建Bitmap。
在说Android适配原理之前,我们先来了解一些基础概念。

一、基础概念
1. dip/dp

是Density independent pixel的缩写,指的是抽象意义上的像素。跟设备的屏幕密度有关系。它是Android里的一个单位,dip和dp是一样的。

2. sp

scale-independent pixel,安卓开发用的字体大小单位。

3.px

想像把屏幕放大再放大,对!看到的那一个个小点或者小方块就是像素了。

4.dpi

是dot per inch的缩写,就是每英寸的像素数,也叫做屏幕密度。这个值越大,屏幕就越清晰。iPhone5S的dpi是326; Samsung Note3 的dpi是386

5.分辨率

是指屏幕上垂直方向和水平方向上的像素个数。比如iPhone5S的分辨率是1136*640;Samsung Note3的分辨率是1920*1080;

6.屏幕尺寸(screen size)

就是我们平常讲的手机屏幕大小,是屏幕的对角线长度,一般讲的大小单位都是英寸。在api版本13之前(3.2),屏幕被分成四大组:small,normal,large,xlarge。但是在13往后,可以支持更加精确的屏幕区分:sw600dp,sw720dp,w600dp等。
 

相关文章:

  • javafx-在listview中添加了点击事件后会执行多次
  • C++ 预处理详解
  • C语言进阶之路-数组与指针
  • 电商项目之Web实时消息推送(附源码)
  • 类和对象——(7)this指针
  • 5G常用简称
  • 初识Linux——基本指令(详解)1
  • Centos7.4安装nginx1.24.0_安装详细步骤---Linux工作笔记066
  • shell读取python版本
  • Ubuntu18.04 本地安装CVAT标注工具
  • Python 调用企业微信群机器人发送消息及文件
  • AI助力智慧农业,基于YOLOv5全系列模型【n/s/m/l/x】开发构建不同参数量级农田场景下庄稼作物、杂草智能检测识别系统
  • Linux下的java环境搭建
  • 【无标题】从0到1 搭建一个vue3+Django项目
  • 力扣二叉树--第三十九天
  • 分享的文章《人生如棋》
  • 【159天】尚学堂高琪Java300集视频精华笔记(128)
  • 【翻译】babel对TC39装饰器草案的实现
  • android高仿小视频、应用锁、3种存储库、QQ小红点动画、仿支付宝图表等源码...
  • chrome扩展demo1-小时钟
  • Facebook AccountKit 接入的坑点
  • happypack两次报错的问题
  • HTTP--网络协议分层,http历史(二)
  • Nacos系列:Nacos的Java SDK使用
  • ⭐ Unity 开发bug —— 打包后shader失效或者bug (我这里用Shader做两张图片的合并发现了问题)
  • 从零搭建Koa2 Server
  • 从零开始的无人驾驶 1
  • 湖南卫视:中国白领因网络偷菜成当代最寂寞的人?
  • 坑!为什么View.startAnimation不起作用?
  • 排序(1):冒泡排序
  • 前端面试之CSS3新特性
  • 使用Tinker来调试Laravel应用程序的数据以及使用Tinker一些总结
  • 算法-插入排序
  • 线上 python http server profile 实践
  • 学习笔记TF060:图像语音结合,看图说话
  • 验证码识别技术——15分钟带你突破各种复杂不定长验证码
  • 继 XDL 之后,阿里妈妈开源大规模分布式图表征学习框架 Euler ...
  • ​比特币大跌的 2 个原因
  • !!Dom4j 学习笔记
  • #设计模式#4.6 Flyweight(享元) 对象结构型模式
  • #我与Java虚拟机的故事#连载08:书读百遍其义自见
  • (arch)linux 转换文件编码格式
  • (HAL)STM32F103C6T8——软件模拟I2C驱动0.96寸OLED屏幕
  • (笔试题)合法字符串
  • (二)基于wpr_simulation 的Ros机器人运动控制,gazebo仿真
  • (十一)手动添加用户和文件的特殊权限
  • (学习日记)2024.01.19
  • (原創) 如何刪除Windows Live Writer留在本機的文章? (Web) (Windows Live Writer)
  • (转) Face-Resources
  • (转)LINQ之路
  • (转)详解PHP处理密码的几种方式
  • (转)一些感悟
  • (转载)Google Chrome调试JS
  • .NET Core 实现 Redis 批量查询指定格式的Key
  • .Net 访问电子邮箱-LumiSoft.Net,好用