[置顶] android屏幕适配原理
2016-12-20 21:00
211 查看
Android设备碎片化非常严重, 如图,每个小色块代表一种设备分辨率
各种分辨率的设备要想全部完美适配是不可能的,那么就可以理解,如上几个文件夹划分了一部分区间,拿过来一个机器,它的像素密度参数接近哪个就用哪个文件夹的图片
做测试:
heightPixels widthPixels density densityDpi
G35: 752 1280 1.0 160(baseLine)
G200: 723 1366 1.0 160
Huawei: 720 1280 2.0 320
比较huaWei与G200,一个是我的5英寸手机,一个是老平板,有我手机三个大,尺寸悬殊,但是分辨率却相差不大。
DensityDpi是什么:顾名思义 dpi就是dot per inch,也就是2.54厘米长度有多少个像素点
density是为了表征densityDpi的比例 系统提供的baseLine 也就是基准1是160,记为1,那么其他dpi的比例就可以计算出来了,比如320dpi的密度是320/160=2,有种120dpi的老爷机密度是120/160=0.75:
不过实际计算出来的dpi和Android系统定义的dpi之间是有区别的:
由勾股定理公式:
dpi = √(长度像素数² + 宽度像素数²) / 屏幕对角线英寸数
假如分辨率1280*700,计算dpi, 那么5英寸计算出来的是300,与displayMetrics显示的并不相同,这么多尺寸的安卓设备,这样计算出来的dpi应该也会有明显的碎片化倾向,但事实上,每部安卓手机屏幕都有一个初始的固定dpi值,这些数值固定为120、160、240、320、480,可以看作为“系统密度”。安卓对界面元素进行缩放的比例依据正是系统定义的dpi值,而不是实际计算出来的dpi。所以设备运行安卓程序寻找hdpi文件夹还是mdpi文件夹就是用的这个系统密度。
(图片来自http://blog.csdn.net/xiebudong/article/details/37040263/,单位ppi(pixels per inch)与dpi同义)
以我的华为手机为例,算出来的dpi为300,在图中最接近320dpi,那么就去xhdpi文件夹找图片,找不到,就去xxhdpi中找,找不到再往密度高的文件夹中去,如果到头了还找不到,就从hdpi中找,找不到就往下找,一直到找到为止。
各种分辨率的设备要想全部完美适配是不可能的,那么就可以理解,如上几个文件夹划分了一部分区间,拿过来一个机器,它的像素密度参数接近哪个就用哪个文件夹的图片
做测试:
heightPixels widthPixels density densityDpi
G35: 752 1280 1.0 160(baseLine)
G200: 723 1366 1.0 160
Huawei: 720 1280 2.0 320
比较huaWei与G200,一个是我的5英寸手机,一个是老平板,有我手机三个大,尺寸悬殊,但是分辨率却相差不大。
DensityDpi是什么:顾名思义 dpi就是dot per inch,也就是2.54厘米长度有多少个像素点
density是为了表征densityDpi的比例 系统提供的baseLine 也就是基准1是160,记为1,那么其他dpi的比例就可以计算出来了,比如320dpi的密度是320/160=2,有种120dpi的老爷机密度是120/160=0.75:
不过实际计算出来的dpi和Android系统定义的dpi之间是有区别的:
由勾股定理公式:
dpi = √(长度像素数² + 宽度像素数²) / 屏幕对角线英寸数
假如分辨率1280*700,计算dpi, 那么5英寸计算出来的是300,与displayMetrics显示的并不相同,这么多尺寸的安卓设备,这样计算出来的dpi应该也会有明显的碎片化倾向,但事实上,每部安卓手机屏幕都有一个初始的固定dpi值,这些数值固定为120、160、240、320、480,可以看作为“系统密度”。安卓对界面元素进行缩放的比例依据正是系统定义的dpi值,而不是实际计算出来的dpi。所以设备运行安卓程序寻找hdpi文件夹还是mdpi文件夹就是用的这个系统密度。
(图片来自http://blog.csdn.net/xiebudong/article/details/37040263/,单位ppi(pixels per inch)与dpi同义)
以我的华为手机为例,算出来的dpi为300,在图中最接近320dpi,那么就去xhdpi文件夹找图片,找不到,就去xxhdpi中找,找不到再往密度高的文件夹中去,如果到头了还找不到,就从hdpi中找,找不到就往下找,一直到找到为止。
相关文章推荐
- Android各种屏幕适配原理
- Android屏幕适配原理
- Android屏幕适配原理
- [置顶] Android屏幕适配总结
- [置顶] Android手机 全面屏(18:9屏幕)适配指南
- Android屏幕适配原理
- cocos2d-x c++ (多种屏幕Android与iOS的适配原理)
- [置顶] 关于Android屏幕适配的问题
- Android屏幕适配原理
- Android屏幕适配原理
- [置顶] Android APP多屏幕适配
- Android用命名含sw的文件夹做屏幕适配原理
- [置顶] Android屏幕适配 AutoLayout2
- [置顶] Android屏幕适配全攻略(最权威的官方适配指导)
- [置顶] Android屏幕适配 超级解决方案percent-support-lib
- Android各种屏幕适配原理
- 【官网翻译】Android屏幕适配从原理到最佳实践(很全的教程)
- 【android】图片放错文件夹引起显示大小不同的原因与屏幕适配原理
- [置顶] Android 屏幕适配总结
- Android屏幕适配原理