Android hdpi,xhdpi,xxhdpi一些你没注意到的事
2016-03-10 17:28
537 查看
一、drawable-dpi文件夹图片尺寸比例
我们都知道安卓系统会根据不同的手机的分辨率去取不同文件夹里的图片,但是具体这些文件夹里放什么尺寸比例的图片,怕是不少人都没有关注过吧。可能有人会说,这是UI部门该了解的事,那如果UI部门的同学也不知道呢,那该怎么办。这种情况我就遇到过一次 = =!xhdpi: 2.0
hdpi: 1.5
mdpi: 1.0 (baseline)
ldpi: 0.75
以mdpi为基准,相同切图,hdpi文件夹里的图应该是mdpi的1.5倍,xhdpi文件夹里的图应该是mdpi的2倍,以此类推,只有根据这个比例来放切图,在不同分辨率手机上展示才会相对协调。PS: xxhdpi: 3.0,xxxhdpi: 4.0
Question: 那是不是一种切图,所有的dpi文件夹都要放一份呢?
Developer Training: Note: Low-density (ldpi) resources aren’t always necessary.
When you provide hdpi assets, the system scales them down by one half to properly fit ldpi screens.
也就是说,低分辨率的切图并不是必须的。在ldpi的设备上,需要一张切图,如果你的工程ldpi文件夹没有提供相对应的图,不要方,只要hdpi文件夹有对应的图,安卓就会帮你自动把hdpi长宽缩减一半,供ldpi的设备使用,从而保证适配。当然你只给xhdpi也是一样会按相应比例缩放。但是如果你只放ldpi或hdpi的切图,靠安卓系统自动帮你放大就有可能出现图片模糊的问题,低清图片放大出现马赛克的道理大家都懂。至于是只放一个较高dpi文件夹的切图还是全放,就是时间换空间或空间换时间的问题了,仁者见仁智者见智吧。
二、如何知道手机是hdpi,xhdpi,还是xxhdpi
density = getResources().getDisplayMetrics().density; // return 0.75 if it's LDPI // return 1.0 if it's MDPI // return 1.5 if it's HDPI // return 2.0 if it's XHDPI // return 3.0 if it's XXHDPI // return 4.0 if it's XXXHDPI
switch (getResources().getDisplayMetrics().densityDpi) { case DisplayMetrics.DENSITY_LOW: // ... break; case DisplayMetrics.DENSITY_MEDIUM: // ... break; case DisplayMetrics.DENSITY_HIGH: // ... break; case DisplayMetrics.DENSITY_XHIGH: // ... break; }
----from StackOverFlow
当然还有更好的办法啦!不用写代码,不用run!快使用adb!
Windows环境下在Android Studio的Terminal里输入adb shell dumpsys | findStr mBaseDisplay(Mac 把"findStr"替换成"grep"即可)
Tips : "density 320"对应DENSITY_XHIGH,“density
480"对应DENSITY_XXHIGH,更多参见http://developer.android.com/reference/android/util/DisplayMetrics.html
相关文章推荐
- android 设备标识
- [IMX6Q][Android5.1]移植笔记 --- kernel停在Starting kernel 分析
- 五步搞定Android开发环境部署——非常详细的Android开发环境搭建教程
- Android - Adapter的使用
- Switch控件详解
- Android系统启动分析
- Android仿网易上下双导航简单实现
- ionic android双击退出应用和物理返回按钮隐藏键盘的实现
- Android SDK 配置镜像服务器
- Android Gradle实战中遇到的问题与经验
- Android ALARM_SERVICE服务
- Android LauncherMode个人见解
- Android 5.0+ 自定义普通按钮的ripple波纹效果
- Android Service的生命周期及使用方法
- CrashHandler实现UncaughtExceptionHandler拦截android异常
- Android中异步消息处理机制
- Android Studio常用快捷键
- Android 常用的系统服务简介
- android的接口回调
- Android系统的常用权限