一、关于布局适配建议
1、不要使用绝对布局
2、尽量使用match_parent 而不是fill_parent 。
3、能够使用权重的地方尽量使用权重(android:layout_weight)
4、如果是纯色背景,尽量使用android的shape 自定义。
5、如果需要在特定分辨率下适配,可以在res目录上新建layout-HxW.xml的文件夹。比如要适配1080*1800的屏幕(魅族MX3采用此分辨率)则新建layout-1800x1080.xml的文件夹,然后在下面定义布局。Android系统会优先查找分辨率相同的布局,如果不存在则换使用默认的layout下的布局。 二、术语和概念
四种屏幕尺寸分类:: small, normal, large, and xlarge
四种密度分类: ldpi (low), mdpi (medium), hdpi (high), and xhdpi (extra high)
需要注意的是: xhdpi是从 Android 2.2 (API Level 8)才开始增加的分类.
xlarge是从Android 2.3 (API Level 9)才开始增加的分类.
DPI是“dot per inch”的缩写,每英寸像素数。
一般情况下的普通屏幕:ldpi是120,mdpi是160,hdpi是240,xhdpi是320。 三、如何做到自适应屏幕大小呢?
1)界面布局方面
需要根据物理尺寸的大小准备5套布局,layout(放一些通用布局xml文件,比如界面中顶部和底部的布局,不会随着屏幕大小变化,类似windos窗口的title bar),layout-small(屏幕尺寸小于3英寸左右的布局),layout-normal(屏幕尺寸小于4.5英寸左右),layout-large(4英寸-7英寸之间),layout-xlarge(7-10英寸之间)
2)图片资源方面
需要根据dpi值准备5套图片资源,drawable,drawalbe-ldpi,drawable-mdpi,drawable-hdpi,drawable-xhdpi
Android有个自动匹配机制去选择对应的布局和图片资源 四、两种获取屏幕分辨率信息的方法:
DisplayMetrics metrics = new DisplayMetrics();
Display display = activity.getWindowManager().getDefaultDisplay();
display.getMetrics(metrics);
//这里得到的像素值是设备独立像素dp
//DisplayMetrics metrics=activity.getResources().getDisplayMetrics(); 这样获得的参数信息不正确,不要使用这种方式。
不能使用android.content.res.Resources.getSystem().getDisplayMetrics()。这个得到的宽和高是空的。

最新文章

  1. Lind.DDD.Aspects通过Plugins实现方法的动态拦截~Lind里的AOP
  2. 从零自学Hadoop(14):Hive介绍及安装
  3. 使用C#反射中的MakeGenericType函数,来为泛型方法和泛型类指定(泛型的)类型
  4. AJAX原生JS代码
  5. 深入PHP内核之in_array
  6. MongoDB常用操作一查询find方法db.collection_name.find()
  7. Codeforces Beta Round #12 (Div 2 Only) D. Ball sort/map
  8. Linux 上的数据可视化工具
  9. 一种基于FSIM对视频编码图像质量客观评价的方法
  10. HDU 1028 HDU Ignatius and the Princess III
  11. C# DateTime变量不能赋null值
  12. MySQL Sniffer
  13. Arch Linux之pacman调用axel多线程加速下载
  14. 谈下spring下的 aop日志记录
  15. DevExpress WinForms使用教程:皮肤颜色和LookAndFeel
  16. jvm各区域OutOfMemory测试方法
  17. sql中base64解码、译码
  18. Vue.Js初学踩坑
  19. 874. Walking Robot Simulation
  20. 有用的 Angular CLI 命令参数

热门文章

  1. 解决k8s出现pod服务一直处于ContainerCreating状态的问题的过程
  2. Docker 在Windows上的安装
  3. 转载:XGBOOST算法梳理
  4. Golang 2018.1.2激活及使用技巧
  5. PHP.ini 能不能加载子配置文件 ?
  6. md5sum命令详解
  7. 将本地开发完的SDK代码上传到SVN上面:an error occurred while contacting the repository The server may be unreachable or the URL may be incorrect
  8. servlet 和 threadlocal 与 web容器(理解threadlocal)
  9. No.1010_第七次团队会议
  10. 面向对象程序设计第三次作业-Calculator