Android 设备兼容与适配
2023-09-27 14:27:35 时间
dp:虚拟像素单位,1 dp 约等于中密度屏幕(160dpi;“基准”密度)上的 1 像素
px:屏幕像素
sp:缩放像素 (sp)(切勿将 sp 用于布局尺寸),默认情况下,sp 单位与 dp 大小相同,但它会根据用户的首选文本大小来调整大小
1.将 dp 单位转换为像素单位
在某些情况下,您需要以 dp
表示尺寸,然后将其转换为像素。dp 单位转换为屏幕像素很简单:
px = dp * (dpi / 160)
*DisplayMetrics.density 字段根据当前像素密度指定将 dp 单位转换为像素时所必须使用的缩放系数。在中密度屏幕上,DisplayMetrics.density 等于 1.0;在高密度屏幕上,它等于 1.5;在超高密度屏幕上,等于 2.0;在低密度屏幕上,等于 0.75。此数字是一个系数,用其乘以 dp 单位,即可得出当前屏幕的实际像素数。
获取 Android 系统常用的距离:ViewConfiguration
可通过 getScaledTouchSlop() 来获取框架用作滚动阈值的距离(以像素为单位)
ViewConfiguration.get(mContext).getScaledTouchSlop();
2. 适用于不同像素密度的配置限定符
密度限定符 | 说明 |
---|---|
ldpi | 适用于低密度 (ldpi) 屏幕 (~ 120dpi) 的资源。 |
mdpi | 适用于中密度 (mdpi) 屏幕 (~ 160dpi) 的资源(这是基准密度)。 |
hdpi | 适用于高密度 (hdpi) 屏幕 (~ 240dpi) 的资源。 |
xhdpi | 适用于加高 (xhdpi) 密度屏幕 (~ 320dpi) 的资源。 |
xxhdpi | 适用于超超高密度 (xxhdpi) 屏幕 (~ 480dpi) 的资源。 |
xxxhdpi | 适用于超超超高密度 (xxxhdpi) 屏幕 (~ 640dpi) 的资源。 |
nodpi | 适用于所有密度的资源。这些是与密度无关的资源。无论当前屏幕的密度是多少,系统都不会缩放以此限定符标记的资源。 |
tvdpi | 适用于密度介于 mdpi 和 hdpi 之间的屏幕(约 213dpi)的资源。这不属于“主要”密度组。它主要用于电视,而大多数应用都不需要它。对于大多数应用而言,提供 mdpi 和 hdpi 资源便已足够,系统将视情况对其进行缩放。如果您发现有必要提供 tvdpi 资源,应按一个系数来确定其大小,即 1.33*mdpi。例如,如果某张图片在 mdpi 屏幕上的大小为 100px x 100px,那么它在 tvdpi 屏幕上的大小应该为 133px x 133px。 |
您应遵循六种主要密度之间的 3:4:6:8:12:16 缩放比。例如,如果您有一个可绘制位图资源,它在中密度屏幕上的大小为 48x48 像素,那么它在其他各种密度的屏幕上的大小应该为
- 36x36 (0.75x) - 低密度 (ldpi)
- 48x48(1.0x 基准)- 中密度 (mdpi)
- 72x72 (1.5x) - 高密度 (hdpi)
- 96x96 (2.0x) - 超高密度 (xhdpi)
- 144x144 (3.0x) - 超超高密度 (xxhdpi)
- 192x192 (4.0x) - 超超超高密度 (xxxhdpi)
相关文章
- Android数据库使用指南(上)
- 报告显示Android设备比iPhone更可靠
- Linux内核现流量劫持缺陷 8成Android设备中枪
- 还在为Android表情开发烦恼吗,快来试试Android Emoji吧
- 2021年Android岗位BAT大厂面试题知识点小结,小白也能看明白
- Android---控制设备照相机
- Android权限 uses-permission
- Android ADB命令大全(通过ADB命令查看wifi密码、MAC地址、设备信息、操作文件、查看文件、日志信息、卸载、启动和安装APK等)
- Android设备管理器——DevicePolicyManager
- 针对Android设备的开源手机银行木马BankBot / Mazain分析
- android emulator虚拟设备分析第四篇之framebuffer
- android emulator虚拟设备分析第二篇之pipe
- Python写一个Windows下的android设备截图工具
- Android 多线程之HandlerThread 完全详解
- Android 判断小于等于android10的设备
- 最终版Android 10发布 谷歌争取年内登陆更多设备
- Android 判断app是否在前台还是在后台运行
- android gridview的item放大问题,setOnItemSelectedListener不执行的解决办法。
- Android 5.0+ 自定义普通按钮的ripple波纹效果
- 让 Android 5.0 前的设备支持 Material Design
- 【Android 电量优化】电量优化特性 ( Doze 低电耗模式 | Standby 应用待机模式 | 白名单设置 | 白名单添加系统设置界面 | 指定应用的白名单添加界面 | 测试应用 )
- android 真机调试出现错误 INSTALL_FAILED_INSUFFICIENT_STORAGE 的解决方法。
- android Studio NDK
- 我的Android进阶之旅------>解决Android Studio全局搜索搜不到结果的问题
- Android系统移植与调试之------->如何修改Android设备的开机第一阶段Logo