一般来说,屏幕分配分为,屏幕尺寸,屏幕方向,屏幕像素密度。

(1)屏幕尺寸

屏幕尺寸是根据屏幕大小进行匹配,例如small,normal,large,xlarge等等这一类匹配目前已经很少使用。

(2)屏幕方向

屏幕方向分为port竖屏和land横屏两种,通常开发时如果支持横屏显示,都会另写一套横向的布局文件。

(3)屏幕像素密度

屏幕像素密度指单位长度屏幕显示的像素,即常说的dpi(dots per inch),每英寸点数。密度越高显示画面就越清晰。

Android根据像素密度按区间范围分成几种:

密度区间 ldpi mdpi hdpi xhdpi xxhdpi xxxhdpi
dpi 120 160 240 320 480 640
1dp对应像素数 0.75 1.0 1.5 2.0 3.0 4.0

当新建一个Android工程时,在res目录下可以看到drawable-xxx目录,就是对应不同像素密度的资源。系统会优先从该目录中寻找图片,如果找不到会从其他目录寻找。因此对应不同密度设备,我们需要为其准备不同画质的图片,以便获得更好的效果。

Android将mdpi像素作为基准线进行匹配,dp与px的换算关系如下,

px= dp * (dpi / 160 )

官方建议使用dp作为布局单位,这样不同的dpi设备上,换算出来的px也会相应的自适应。

为了更清楚地看清不同dpi机型上的px的换算规律,做了以下实验。

测试机型:

(1)   320dpi机型 A

(2)   160dpi机型 B

测试图片:

一张48×48的图片分别存放在drawable,drawable-mdpi,drawable-hdpi目录下,图片名称分别为

test1.png,test2.png,test3.png。

实验结果:

机型A上面显示效果,

test1.png 显示大小为 96×96像素

test2.png 显示大小为 96×96像素

test3.png 显示大小为 64×64像素

机型B上面显示效果,

test1.png 显示大小为 48×48像素

test2.png 显示大小为 48×48像素

test3.png 显示大小为 32×32像素

实验结论:

通过如上实验,我们知道一张图片实际显示大小与机型dpi和drawable文件夹dpi均相关。

手机显示像素 =  图片实际像素尺寸 × 机型DPI / 所在资源目录DPI

例如,在320dpi的机型上,将48×48像素的图片放入drawable-hdpi目录,该图片实际显示像素 = 48* 320/ 240 = 64像素。

所以为了获得更好的显示效果,每种dpi分辨率的机型,均需要搭配一张对应尺寸图片,以防止被缩小或者拉大。

1、选用主要 分辨率 适配 :480X800,720X1280,1080X1920  2、各个 分辨率 单独 适配 ,res,dimens里设置各个对应的px,再统一调用,有系统筛选。  3、用weight和match等,少用dp在位置布局里
以华为荣耀10为例,在720 分辨率 下,通过方法 获取状态栏高度为60px;调整 分辨率 为1080后,状态栏高度为90px; 由此可知,**同一设备在 不同 分辨率 下状态栏高度px是 不同 的,但是符合我们的换算比例 2/3/4,还是可以使用dp进行处理的!** * 获取状态栏高度 * @param context * @return public static int getStatusBarHeight(Context context) {
MediaMetadataRetriever retriever = new MediaMetadataRetriever(); retriever.setDataSource(path); String width = retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDE...
随着 Android 设备的多样化,越来越多 不同 尺寸的 手机 ,它们有着 不同 屏幕 尺寸和 像素 密度。 为了使界面适应 不同 屏幕 ,我们需要 适配 不同 屏幕 上的 应用 构建。 屏幕 尺寸 一般是 手机 实际 物理尺寸,即 屏幕 的对角线的长度。单位是英寸/in,1in = 2.54cm。 屏幕 分辨率 屏幕 显示 像素 个数,单位尺寸内 像素 点越多, 分辨率 越高, 显示 效果就越精细和细腻。单位是 像素 /px,1px = 1个 像素 点。 现在市场上主流 手机 分辨率 为:720 * 1280 和 1080 * 1920 屏幕 密度 表示 屏幕 每英寸
今天在用genymotion模拟器时,发现在相同 分辨率 (720*1280)下有 不同 的dpi,于是好奇地启动了一下 不同 的dpi,竟然发现在相同 分辨率 下dpi越大, 显示 的内容越大,相同的内容竟然 显示 不全了。这与window 显示 分辨率 正好相反。 这是720*1280 分辨率 下的160dpi 显示 的情况: 这是720*1280 分辨率 下的320dip 显示 的情况   于是好奇心就上来了,开始分析dpi的 计算 由来。
看了几篇相关的博客,根据自己的 实际 开发,总结了一下。 首先要搞清楚, 图片 分辨率 单位是 像素 ,也就是px,比如72x72的 图片 ,就是长宽都是72px; 手机 屏幕 分辨率 图片 类似,但是它还有个很重要的指标:dpi,叫做 像素 密度,代表单位 屏幕 面积里面能够 显示 像素 数量(没记错的话是1平方毫米),其实说白了就是 屏幕 的清晰度,dpi值越大 屏幕 看上去越清晰。 为什么要 适配 ?因为 手机 屏幕 的dpi种类繁多,如
项目开发中UI设计经常会问开发一个问题。比喻我现在有三款 手机 分别是A 手机 (1920*1080)B 手机 (2244*1080)C 手机 (2340*1080)这三款 手机 都是用的同一代码,都是使用1080p的设计方案开发的。出现了一种现象A 手机 和B 手机 显示 图片 大小 是一样的而C 手机 显示 图片 要比A 手机 和B 手机 小一些。设置为什么 我们可以通过代码获取到这三部 手机 的dpi 大小 。代码如下: public static String getScreenResolution() { if (dm == n
2011-08-09 0:36 一: 不同 的layout Android 手机 屏幕 大小 不一,有480x320, 640x360, 800x480.怎样才能让App自动适应 不同 屏幕 呢?    其实很简单,只需要在res目录下创建 不同 的layout文件夹,比如layout-640x360,layout-800x480,...
今天碰到的问题  是  ImageView  里 显示 的图 要求等比例 显示 但是图 显示 了  但是ImageView  的宽和高 有一边会 和他的父布局一样 大小 要求是 图 显示 多大了  ImageView   的宽高 和 显示 图片 的一样  不是和原来的 图片 一样的 大小 需要两个属性即可: android :scaleType="centerInside" 图片 正好全部 显示 android
http://blog.csdn.net/JeterPong/article/details/53106470 今天给大家分享一下AS的一个强大功能,自定义生成几种 分辨率 图片 ,供开发使用,再也不愁怎么弄 不同 分辨率 图片 啦! 打开 Android Studio ,打开你的项目,在res目录下 右击选中Image...
Android Studio支持多种 分辨率 模拟器,可以帮助开发者测试 不同 分辨率 下的 应用 效果。在 Android Studio中,可以通过以下步骤设置模拟器 分辨率 : 1. 打开 Android Studio,并启动模拟器。 2. 点击模拟器界面上的“三个点”按钮,选择“Virtual Device Manager”。 3. 在Virtual Device Manager中,选择要修改的模拟器,点击“Edit”按钮。 4. 在“Edit Virtual Device”界面中,找到“Resolution”选项。 5. 选择合适的 分辨率 ,或者手动输入 分辨率 数值。 6. 点击“Finish”按钮保存修改,重新启动模拟器即可看到修改后的 分辨率 效果。 需要注意的是, 不同 分辨率 应用 的布局、字体 大小 等可能会有所 不同 ,开发者需要在 不同 分辨率 下进行测试和优化。