问题:

1、如何计算设备的最小屏幕宽度呢?

2、布局文件里一个view的宽我写多少dp能刚好充满呢?

3、res下有values-sw384、values-sw392、...values-sw1280等等我怎么知道一个设备会自动去找哪个适配文件呢?

这三个问题其实是一个问题,下面来解答:

首先获取屏幕宽、高(单位是px)和像素密度

DisplayMetrics dm = context.getResources().getDisplayMetrics();
int width = dm.widthPixels;
int height = dm.heightPixels;
int density = dm.density

这里解析下像素密度density,我们一定听说过“两倍的图”、“三倍的图”,在安卓中,系统密度为160dpi密度的手机屏幕为基准屏幕,那么2倍就是基准屏幕的2倍 就是320dpi,3倍就是480dpi,这里的density的值就是这个倍数,比如1、1.5、2、3等。

换算关系:px = dp * density

下面来计算最小屏幕宽度sw

width > height 时(例如平板) sw = height / density

width < height 时(例如手机) sw = width / density

举个例子:一部小米手机 720 * 1344 ,density = 2 ,那么sw = 720 / 2 = 360,就是说在这个手机上,你布局文件里的view宽度设置为360dp,就刚好充满屏幕。此时你的res下有values-sw361、values-sw310 请问这部手机会去加载哪个资源文件呢?

很明显361更接近360,但是经过验证会去加载310的资源文件,因为系统的判断逻辑不是找最近而是找小于当前sw的最近的值,

或者说是向下取最近,a < x < b  则取a。

基于sw的适配方案,推谷歌提供的场景 ScreenMatch。

Android开发 如何计算最小屏幕宽度sw相关推荐

  1. Android开发——用户在屏幕上的手势识别

    0. 前言   转载请注明出处:http://blog.csdn.net/seu_calvin/article/details/52462493 Android开发中,我们常常需要获取用户的手势操作事 ...

  2. Android开发实践:屏幕旋转的处理

    最近开发Android Camera相关的程序,被屏幕旋转搞得头大,一方面得考虑屏幕旋转后布局的变化,另一方面得搞清楚屏幕的旋转方向.角度与Camera的Preview角度的关系.本来通过重载Acti ...

  3. android开发获取手机屏幕分辨率

    android开发基础过程中获取手机屏幕分辨率用来加载不同的UI,图片等,如何获取手机屏幕分辨率? DisplayMetrics displayMetrics=new DisplayMetrics() ...

  4. Android开发系列之屏幕密度和单位转换

    由于Android的开源性,所以目前市面上面Android手机的分辨率特别多,这样的话就给我适配带来了一定的难度.要想做好适配,我们首先应该明白什么是分辨率.PPI.屏幕大小等概念,还有在不同的屏幕密 ...

  5. Android开发时手机屏幕实时同步显示在电脑上

    1.下载 Android Screen Monitor http://code.google.com/p/android-screen-monitor/ (1) 下載 ASM_2_40.zip 并解压 ...

  6. Android开发之调节屏幕亮度

    在很多app中进入二维码显示界面时会自动调整屏幕亮度,那么如何实现调节app的屏幕亮度呢?下面我来为大家介绍: 注:调节屏幕亮度的核心思想就是对安卓系统提供的ContentProvider进行操作 1 ...

  7. android开发双击唤醒屏幕,安卓手机双击唤醒原理是什么 安卓双击唤醒原理介绍...

    很多安卓智能手机屏幕的唤醒方式各种各样,最常规的方式就是按一下电源键点亮屏 幕. 手机电源键位置 由于手机 机身大小的限制和手感问题越来越不好触碰到,因此双击亮屏功能就产生了.市场上 一些小软件在安装 ...

  8. android修改屏幕方向软件,Android开发之修改屏幕方向

    途牛网 5 月 9 日挂牌 5 月 9 日消息,据美国财经网站 iposcoop 网站报道,途牛旅游网将于今晚(5 月 9 日)在纳斯达克正式挂牌上市. 途牛网 4 月 4 日首次提交 IPO 招股书 ...

  9. Android开发精要2--Android组件模型解析

    本文的主要内容如下: 2.1 基于Mashup的应用设计 2.2 界面组件Activity解析 2.3 服务组件Service解析 2.4 触发器组件BroadcastReceiver解析 2.5 数 ...

最新文章

  1. Spring(十八):Spring AOP(二):通知(前置、后置、返回、异常、环绕)
  2. 源码篇:Python 实战案例----银行系统
  3. Navicat连接MySQL8.0出现2059错误
  4. 把类成员改成指针_C++之this指针
  5. vue3+typescript引入外部文件
  6. 2010 Stanford Local ACM Programming Contest-H解题报告
  7. 精读《手写 SQL 编译器 - 回溯》
  8. 虚拟机linux挂载光盘显示:mount: you must specify the filesystem type
  9. 广西工学院2000级计算机系,广西工学院管理系信管教研室李明 - 欢迎访问广西科技大学.ppt...
  10. 递增三元组蓝桥杯c语言,蓝桥-递增三元组-蓝桥
  11. html的toggle属性,HTML ontoggle事件属性
  12. html canvas drawrect 变形,canvas图形变换
  13. html5分镜头脚本范例,分镜头脚本模板(小故事分镜头脚本范例)
  14. python可以在多平台运行 体现了python语言的,Python 可以在多平台运行,这体现了 Python 语言的 特性。...
  15. php strpos无效,php问题:strpos功能不起作用
  16. C#实现中国身份证验证问题
  17. HDMI RGB_TO_DVI模块
  18. 自媒体如何多平台发文章?
  19. 三方支付四方支付聚合支付系统 集成 支付宝分账 代付 多商户 短信邮件 谷歌令牌验证
  20. 数字音频接口(I2S,PCM/TDM)

热门文章

  1. Anaconda 本地包安装
  2. css 实现火焰效果
  3. 【杂文随笔1】学习笔记(含欧氏空间、范数、李群与李代数、单满双射、矩阵求导等)
  4. IaaS、PaaS、SaaS、BaaS、FaaS和Serverless的含义
  5. c语言二维函数杨辉三角,C语言编写杨辉三角(二维数组方法)
  6. Deep Facial Expression Recognition: A Survey 笔记
  7. 基于目标识别的区域入侵检测——详细实现从获取区域到检测入侵目标
  8. Failed to load resource: the server responded with a status of 404 ()解决办法
  9. android busybox脚本,在BusyBox中创建和控制启动脚本
  10. java的单引号怎么输_单引号怎么打出来-输入单引号的方法 - 河东软件园