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 ################## ...
随机推荐
- mybatis动态排序
如果我们要传入排序字段作为一个参数到mybatis中,用以实现按照指定字段来排序的功能,那么我们需要使用$,而不是像其他参数一样,使用#.如下所示. <if test="sortnam ...
- java_23 File类
1.File类定义: 文件和目录路径的抽象表达形式,java中将路径或者文件封装成File对象. 2.File类的静态成员变量(pathSeparator 分隔符,字符串 separat ...
- Tomcat的三种部署方式
Tomcat是目前web开发中非常流行的Web 服务器,也就是tomcat在部署项目的时候,必须要把应用程序中所用到的jar包放到tomcat的lib目录下,然后再一起部署到服务器上. 那么tomca ...
- Scatter 散点图
散点图 首先,先引入matplotlib.pyplot简写作plt,再引入模块numpy用来产生一些随机数据.生成1024个呈标准正态分布的二维数据组 (平均数是0,方差为1) 作为一个数据集,并图像 ...
- 使用手势对UIImageView进行缩放、旋转和移动
// 添加所有的手势 - (void) addGestureRecognizerToView:(UIView *)view { // 旋转手势 UIRotationGestureRecognizer ...
- 连续子数组和的最大值plus
package wodeshiyao; import java.io.BufferedWriter; import java.io.File; import java.io.FileInputStre ...
- Java程序员职业生涯规划完整版:从程序员到CTO( 摘)
在技巧方面无论我们怎么学习,总感觉需要晋升自已不知道自己处于什么水平了.但如果有清晰的指示图供参考还是非常不错的,这样我们清楚的知道我们大概处于那个阶段和水平. Java程序员 高等特性 反射.泛型. ...
- J2CACHE 两级缓存框架
概述 缓存框架我们有ehcache 和 redis 分别是 本地内存缓存和 分布式缓存框架.在实际情况下如果单台机器 使用ehcache 就可以满足需求了,速度快效率高,有些数据如果需要多台机器共享这 ...
- 内置函数_range()
range() range()语法格式为 range([start,] stop [,step])# 有三种用法range(stop)range(start,stop)range(start,stop ...
- 背水一战 Windows 10 (86) - 文件系统: 获取文件夹的属性, 获取文件夹的缩略图
[源码下载] 背水一战 Windows 10 (86) - 文件系统: 获取文件夹的属性, 获取文件夹的缩略图 作者:webabcd 介绍背水一战 Windows 10 之 文件系统 获取文件夹的属性 ...