Android开发 如何计算最小屏幕宽度sw
问题:
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相关推荐
- Android开发——用户在屏幕上的手势识别
0. 前言 转载请注明出处:http://blog.csdn.net/seu_calvin/article/details/52462493 Android开发中,我们常常需要获取用户的手势操作事 ...
- Android开发实践:屏幕旋转的处理
最近开发Android Camera相关的程序,被屏幕旋转搞得头大,一方面得考虑屏幕旋转后布局的变化,另一方面得搞清楚屏幕的旋转方向.角度与Camera的Preview角度的关系.本来通过重载Acti ...
- android开发获取手机屏幕分辨率
android开发基础过程中获取手机屏幕分辨率用来加载不同的UI,图片等,如何获取手机屏幕分辨率? DisplayMetrics displayMetrics=new DisplayMetrics() ...
- Android开发系列之屏幕密度和单位转换
由于Android的开源性,所以目前市面上面Android手机的分辨率特别多,这样的话就给我适配带来了一定的难度.要想做好适配,我们首先应该明白什么是分辨率.PPI.屏幕大小等概念,还有在不同的屏幕密 ...
- Android开发时手机屏幕实时同步显示在电脑上
1.下载 Android Screen Monitor http://code.google.com/p/android-screen-monitor/ (1) 下載 ASM_2_40.zip 并解压 ...
- Android开发之调节屏幕亮度
在很多app中进入二维码显示界面时会自动调整屏幕亮度,那么如何实现调节app的屏幕亮度呢?下面我来为大家介绍: 注:调节屏幕亮度的核心思想就是对安卓系统提供的ContentProvider进行操作 1 ...
- android开发双击唤醒屏幕,安卓手机双击唤醒原理是什么 安卓双击唤醒原理介绍...
很多安卓智能手机屏幕的唤醒方式各种各样,最常规的方式就是按一下电源键点亮屏 幕. 手机电源键位置 由于手机 机身大小的限制和手感问题越来越不好触碰到,因此双击亮屏功能就产生了.市场上 一些小软件在安装 ...
- android修改屏幕方向软件,Android开发之修改屏幕方向
途牛网 5 月 9 日挂牌 5 月 9 日消息,据美国财经网站 iposcoop 网站报道,途牛旅游网将于今晚(5 月 9 日)在纳斯达克正式挂牌上市. 途牛网 4 月 4 日首次提交 IPO 招股书 ...
- Android开发精要2--Android组件模型解析
本文的主要内容如下: 2.1 基于Mashup的应用设计 2.2 界面组件Activity解析 2.3 服务组件Service解析 2.4 触发器组件BroadcastReceiver解析 2.5 数 ...
最新文章
- Spring(十八):Spring AOP(二):通知(前置、后置、返回、异常、环绕)
- 源码篇:Python 实战案例----银行系统
- Navicat连接MySQL8.0出现2059错误
- 把类成员改成指针_C++之this指针
- vue3+typescript引入外部文件
- 2010 Stanford Local ACM Programming Contest-H解题报告
- 精读《手写 SQL 编译器 - 回溯》
- 虚拟机linux挂载光盘显示:mount: you must specify the filesystem type
- 广西工学院2000级计算机系,广西工学院管理系信管教研室李明 - 欢迎访问广西科技大学.ppt...
- 递增三元组蓝桥杯c语言,蓝桥-递增三元组-蓝桥
- html的toggle属性,HTML ontoggle事件属性
- html canvas drawrect 变形,canvas图形变换
- html5分镜头脚本范例,分镜头脚本模板(小故事分镜头脚本范例)
- python可以在多平台运行 体现了python语言的,Python 可以在多平台运行,这体现了 Python 语言的 特性。...
- php strpos无效,php问题:strpos功能不起作用
- C#实现中国身份证验证问题
- HDMI RGB_TO_DVI模块
- 自媒体如何多平台发文章?
- 三方支付四方支付聚合支付系统 集成 支付宝分账 代付 多商户 短信邮件 谷歌令牌验证
- 数字音频接口(I2S,PCM/TDM)
热门文章
- Anaconda 本地包安装
- css 实现火焰效果
- 【杂文随笔1】学习笔记(含欧氏空间、范数、李群与李代数、单满双射、矩阵求导等)
- IaaS、PaaS、SaaS、BaaS、FaaS和Serverless的含义
- c语言二维函数杨辉三角,C语言编写杨辉三角(二维数组方法)
- Deep Facial Expression Recognition: A Survey 笔记
- 基于目标识别的区域入侵检测——详细实现从获取区域到检测入侵目标
- Failed to load resource: the server responded with a status of 404 ()解决办法
- android busybox脚本,在BusyBox中创建和控制启动脚本
- java的单引号怎么输_单引号怎么打出来-输入单引号的方法 - 河东软件园