DPI 计算及速查表
【来源】ExMobi 二次开发手册
手机屏幕根据密度范围分为五种:低、中、高、超高、超超高,为了确保界面元素在不同的屏幕都能合适的展示,在设计界面元素的 UI 时,UI 工程师建议统一采用 dpi (Dots Per Inch) 来定义界面元素。
计算手机dpi,需要知道手机屏幕尺寸和手机分辨率。即

| 手机分辨率 | 屏幕尺寸(Inch) | 实际 DPI | 分屏 | DPI 值 |
| 480 x 800 | 4 英寸 | 233 | 高分屏 [188,300) | 240 |
| 480 x 854 | 3.7 英寸 | 265 | 高分屏 [188,300) | 240 |
| 1024 x 768 | 9.7 英寸 | 132 | 中分屏 [121,188) | 160 |
| 320 x 480 | 3.5 英寸 | 165 | 中分屏 [121,188) | 160 |
| 640 x 960 | 3.5 英寸 | 330 | 超高分屏 [300,420) | 320 |
| 1920 x 1080 | 5 英寸 | 440 | 超超高分屏 [420, ) | 480 |
【示例】
三星 i9000,屏幕尺寸 4 英寸,分辨率 480 * 800。套入公式

计算结果取近似值 233,即三星 i9000 的 dpi 为 233。介于高分屏区间 [188,300],所以取 240.
在实际设计中,UI 度量单位以 640*960 设计图为基准,测量实际尺寸除以 2。现在以 720*1280 设计图为基准。
/**
* 获得屏幕相对的宽度和高度<br />
* 横屏时候宽度大于高度,竖屏时候高度大于宽度
*
* param windowManager
* return <br />
* point.x:宽度,point.y:高度
*/
@SuppressLint("NewApi")
public static Point getScreenSize(WindowManager windowManager) {
Point point = new Point(0, 0);
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB_MR2) {
point.x = windowManager.getDefaultDisplay().getWidth();
point.y = windowManager.getDefaultDisplay().getHeight();
} else {
windowManager.getDefaultDisplay().getSize(point);
} return point;
}
获得屏幕的宽度和密度
public static int getScreenWidth(Context context) {
WindowManager manager = (WindowManager) context
.getSystemService(Context.WINDOW_SERVICE);
Display display = manager.getDefaultDisplay();
return display.getWidth();
}
public static float getScreeDensity(Context context){
WindowManager manager = (WindowManager) context
.getSystemService(Context.WINDOW_SERVICE);
DisplayMetrics metric = new DisplayMetrics();
manager.getDefaultDisplay().getMetrics(metric);
float density = metric.density; // 密度(0.75 / 1.0 / 1.5 / 2.0)
//int densityDpi = metric.densityDpi;
return density;
}
根据屏幕大小调整尺寸
// 根据屏幕和图片大小调整显示尺寸
int justShowViewHeight = mScreenSize.x * 150 / 640;
LayoutParams justShowParams = mJustShowImg.getLayoutParams();
justShowParams.height = justShowViewHeight;
mJustShowImg.setLayoutParams(justShowParams);
Picasso.with(mActivity).load(R.drawable.fragment_main_justshow).into(mJustShowImg);
DPI 计算及速查表的更多相关文章
- python 下的数据结构与算法---2:大O符号与常用算法和数据结构的复杂度速查表
目录: 一:大O记法 二:各函数高阶比较 三:常用算法和数据结构的复杂度速查表 四:常见的logn是怎么来的 一:大O记法 算法复杂度记法有很多种,其中最常用的就是Big O notation(大O记 ...
- Java, C#, Swift语法对比速查表
原文:Java, C#, Swift语法对比速查表 Java 8 C# 6 Swift 变量 类型 变量名; 类型 变量名; var 变量名 : 类型; 变量(类型推断) N/A var 变量名= ...
- Git 命令速查表
Git 命令速查表 1.常用的Git命令 命令 简要说明 git add 添加至暂存区 git add-interactive 交互式添加 git apply 应用补丁 git am 应用邮件格式补丁 ...
- Git 常用命令速查表(图文+表格)
一. Git 常用命令速查 git branch 查看本地所有分支git status 查看当前状态 git commit 提交 git branch -a 查看所有的分支git branch -r ...
- OpenStack 命令行速查表
OpenStack 命令行速查表 updated: 2017-07-18 08:53 Contents 认证 (keystone) 镜像(glance) 计算 (nova) 实例的暂停.挂起.停止 ...
- 【转】shell速查表
shell速查表 转自:https://www.jianshu.com/p/a98a334bfb25 1. 变量 #!/bin/bash msg="hello world" ech ...
- numpy-帮助文档 & 速查表.md
目录 转相关资料: 速查表 速查代码 转相关资料: 官方手册 易佰教程 gitbook ZMonster's Blog 速查表 速查代码 # -*- coding: utf-8 -*- "& ...
- GNU Emacs命令速查表
GNU Emacs命令速查表 第一章 Emacs的基本概念 表1-1:Emacs编辑器的主模式 模式 功能 基本模式(fundamental mode) 默认模式,无特殊行为 文本模式(text m ...
- vim基本命令速查表
来源:https://github.com/skywind3000/awesome-cheatsheets/blob/master/editors/vim.txt ################## ...
随机推荐
- 项目总结18-使用textarea无法判断空值之坑
项目总结18-使用textarea无法判断空值之坑 今天使用js判断textarea为空,发现怎么都无法成功仔细做了对比测试,发现结果如下: 1-JS代码 if($("#content&qu ...
- VUE项目小试牛刀
首先安装webstorm:http://www.jetbrains.com/webstorm/ (推荐) 再安装node.js:https://nodejs.org/en/download/ (必 ...
- 浏览器DOM事件触发
除用户人为交互触发事件外,用js脚本触发事件的一般流程为 创建事件 var e = Event('event_name', {key: value, ...}) 分发事件到 event.target ...
- 48-Python 安装pyautogui失败解决办法
转载自:https://www.cnblogs.com/SH170706/p/9809830.html Python 安装pyautogui 在Python中使用PyAutoGui模拟键盘和鼠标操作 ...
- 3U - 算菜价
妈妈每天都要出去买菜,但是回来后,兜里的钱也懒得数一数,到底花了多少钱真是一笔糊涂帐.现在好了,作为好儿子(女儿)的你可以给她用程序算一下了,呵呵. Input 输入含有一些数据组,每组数据包括菜种( ...
- 杨其菊201771010134《面向对象程序设计(java)》第六周学习总结
<面向对象程序设计(java)>第六周学习总结 第一部分:理论知识 1)类.超类和子类2)Object:所有类的超类 3)泛型数组列表4)对象包装器和自动打包 5)参数数量可变的方法 6) ...
- list(zip(*querySet))使用
teacher_cls_list = obj.cls.all().values_list('id', 'caption') #list(zip(*list)),将数组中的元组中的每一项取出,添加到一起 ...
- 日常LINUX操作一
1.use root accounthttp://blog.csdn.net/sunxiaoju/article/details/51993091http://blog.csdn.net/gongch ...
- nodeJS实现一个在线填表应用
1.构建一个web服务器 以前玩php和jsp时用过Apache.汤姆猫服务器,nodejs则有不同,他是需要自己createServer. //server.jsvar http = require ...
- W5100S芯片特性
W5100S是一款硬连线TCP / IP嵌入式以太网控制器,可使使用SPI(串行外设接口)和并行系统的嵌入式系统更容易实现互联网连接 W5100S适合需要稳定的Internet Connectivit ...