一般来说,屏幕分配分为,屏幕尺寸,屏幕方向,屏幕像素密度。
(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”按钮保存修改,重新启动模拟器即可看到修改后的
分辨率
效果。
需要注意的是,
不同
分辨率
下
应用
的布局、字体
大小
等可能会有所
不同
,开发者需要在
不同
分辨率
下进行测试和优化。