手机目前常见的分辨率 手机常见分辨率及对应DPI "HVGA mdpi" 480*320 (Half-size VGA) 4:3 120(dpi) "WVGA hdpi " 800*480 (Wide VGA) 5:3 "FWVGA hdpi " "QHD hdpi " 960*540 16:9 ; 如果drawable-hdpi,drawable-mdpi中有图片资源,drawable-ldpi中没有,系统会加载drawable-mdpi中的资源,其他同理,使用最接近的密度级别。 2.1.2 横屏竖屏目录区分 drawable a) drawable-hdpi该图片即适用于横屏,也适用于竖屏; b) drawable-land-hdpi,当屏幕为横屏,且为高密度时,加载此文件夹的资源 ; c) drawable-port-hdpi,当屏幕为竖屏,且为高密度时,加载此文件夹中的资源。
首先要介绍一下drawable-mdpi、drawable-hdpi-1280x800、drawable-hdpi。这个相信好好看一下也明白。 -- values-hdpi 480X800 --> <dimen name="imagewidth">320dip</dimen> </resources> <resources> <! -- values-hdpi-1280x800 --> <dimen name="imagewidth">320dip</dimen> </resources> <? -- values-hdpi 480X320 --> <dimen name="imagewidth">320dip</dimen> </resources>
首先要介绍一下drawable-mdpi、drawable-hdpi-1280x800、drawable-hdpi。这个相信好好看一下也明白。 -- values-hdpi 480X800 --> <dimen name="imagewidth">320dip</dimen> </resources> <resources> <! -- values-hdpi-1280x800 --> <dimen name="imagewidth">320dip</dimen> </resources> <? -- values-hdpi 480X320 --> <dimen name="imagewidth">320dip</dimen> </resources>
320 x 480 ( HVGA ) , 对应素材放在 素材放在 res/mmap-mdpi 目录下 ; 屏幕像素密度 ( DPI , Dots Per Inch ) 为 240 dpi 时 ( hdpi ) , 对应屏幕分辨率 480 x 800 ( WVGA ) , 对应素材放在 素材放在 res/mmap-hdpi 目录下 ; 屏幕像素密度 ( DPI , Dots Per Inch ) 为 mmap-xhdpi 目录下 , 放在其它目录下会出现失真的情况 ; 二、屏幕像素密度 DPI 与 屏幕密度限定符 xhdpi 关联 ---- 不同屏幕像素密度下的像素比例 : \rm mdpi : hdpi : xxhdpi : xxxhdpi=2 : 3 : 4 : 6 : 8 其中 mdpi 也就是 160 dpi 下 , 1像素 px = 1密度无关像素 dip ; 上述 \rm mdpi 、 hdpi < dpi \leq 120 , 对应图标大小 36 \times 36 ; mdpi : \rm 120 < dpi \leq 160 , 对应图标大小 48 \times 48 ; hdpi
, 这些在Android 3.2以上版本开始不建议使用,转而使用最小屏幕宽度如 sw600dp,最小宽度,最小高度等) 屏幕方向(port 竖屏,land 横屏) 屏幕像素密度(ldpi,mdpi,hdpi Android把像素密度按区间分成几种: ldpi – low dpi, 低密度 mdpi – medium dpi 中密度 hdpi – high dpi 高密度 xhdpi – extra high 其次,不同像素密度,系统给定了其对应比例和倍数如下: 分类目录 ldpi mdpi hdpi xhdpi xxhdpi xxxhdpi 密度(dpi) ~160 ~240 ~320 ~480 ~640 由于图片存放在hdpi目录,除以hdpi对应倍数1.5 ,得到图片宽度为 96/1.5 = 64 将I619设备测试结果验证,符合以上结论。 这里72×72就是系统默认hdpi下机器人图标大小,按照上述表格给的比例放置图片就不会有ImageView控件大小不一样的问题。
配置 generatedDensities 选项 , 之后进行项目构建时 , Gradle 会创建不同分辨率的 PNG 图片 , 这些分辨率在 generatedDensities 中指定 , ['hdpi xxxhdpi'] 是一个 Set 集合 , 元素是 String 字符串 ; android { defaultConfig { generatedDensities = ['hdpi android / defaultConfig 层级下 , 配置 generatedDensities 选项 ; // ★ 矢量图生成 PNG 配置 generatedDensities = ['hdpi 编译应用 ; 分析生成的 apk 文件 , 在 apk 的不同分辨率的资源目录中 , 分别生成了不同分辨率的 ic_plane.png 图片 ; 在 build.gradle 构建脚本中 , 设置了 ‘hdpi 这几个分辨率 , 那么生成 APK 时 , 就会在对应上述 5 个分辨率对应的资源文件中生成该矢量图对应的 PNG 位图 ; // ★ 矢量图生成 PNG 配置 generatedDensities = ['hdpi
什么是mdpi、hdpi、xdpi、xxdpi?如何计算和区分? 题图中的每一个矩形都代表着一种Android设备。Android系统碎片化问题的严重性,让我们不得不面对屏幕适配的问题。 mdpi、hdpi、xdpi、xxdpi: mdpi、hdpi、xdpi、xxdpi用来修饰Android中的drawable文件夹及values文件夹,用来区分不同像素密度下的图片和dimen值。 常见手机屏幕像素及对应分别率级别: ldpi 320*240 mdpi 480*320 hdpi 800*480 xhdpi 1280*720 xxhdpi 1920*1080 ? dp 和 px 之间的简单换算关系: ldpi 的手机 1dp=0.75px mdpi 的手机 1dp=1.0px hdpi 的手机 1dp=1.5px xhdpi 的手机 1dp=2.0px xxhdpi 因此同样的各个资源文件夹中的图片尺寸同样符合ldpi:mdpi:hdpi:xhdpi:xxhdpi=3:4:6:8:12的规律。 ?
有四种一般的尺寸: 小,一般大,大,超大 还有四种一般的像素密度: 低 (ldpi), 中 (mdpi), 高 (hdpi), 超高 (xhdpi) 为了声明你想要使用在不同屏幕上的布局和位图 为了生成这些图像,你应该从矢量格式的源生资源开始,使用如下尺寸范围为每一种项目密度生成图像 : xhdpi: 2.0 hdpi: 1.5 mdpi: 1.0 (基线) ldpi: 0.75 这就意味着如果你为xhdpi设备生成了一张 200x200 图片,你就应该用 150x150 为hdpi , 100x100 为 pi, 以及 75x75 为ldpi设备生成同样的资源 . 将这些文件放到对应的图形资源路径中 : MyProject/ res/ drawable-xhdpi/ awesomeimage.png drawable-hdpi 当你提供了hdpiWhen you provide hdpi 资源, 系统会将它们缩小一半来适配 ldpi 的屏幕. 更多有关为应用创建图标资源的提示和指南,见 图标设计指南.
4Visual Studio 2013关键词:64位EnC,async调试器 2014-05-05.NET Framework 4.5.2CLR 4Visual Studio 2013关键词:HDPI 2015-07-20.NET Framework 4.6CLR 4Visual Studio 2015关键词:RyuJIT,HDPI,TLS1.1/1.2 2015-11-30.NET Framework 1.1Visual Studio 2017关键词:性能,Azure,SQL 2016 2017-04-05.NET Framework 4.7CLR 4Visual Studio 2017关键词:HDPI 2017关键词:Windows ARM32,Tiered Compilation 2019-04-18.NET Framework 4.8CLR 4Visual Studio 2019关键词:HDPI
1136*640 小米1 854*480(FWVGA) 小米2 1280*720 分辨率对应DPI “HVGA mdpi” “WVGA hdpi “ “FWVGA hdpi “ “QHD hdpi “ “720P xhdpi” “1080P xxhdpi “ 发布者:全栈程序员栈长,转载请注明出处:https://
icon.png" /> <icon density="mdpi" src="res/icon/android/drawable-mdpi/icon.png" /> <icon density="<em>hdpi</em> " src="res/icon/android/drawable-<em>hdpi</em>/icon.png" /> <icon density="xhdpi" src="res/icon/android/drawable-xhdpi -- 以下是欢迎页面,可根据需要进行添加 --> <splash density="land-hdpi" src="res/screen/android/splash-land-hdpi.png density="land-xhdpi" src="res/screen/android/splash-land-xhdpi.png" /> <splash density="port-<em>hdpi</em> " src="res/screen/android/splash-port-<em>hdpi</em>.png" /> <splash density="port-ldpi" src="res/screen/
drawable—hdpi看他的单词名肯定知道他是放置高分辨率的图片,drawable—mdpi放置中等分辨率的图片,drawable—ldpi放置低分辨率的图片。 你的手机屏幕有那么大但是他会将图片拉伸,当加载图片后让你感觉该屏幕没有实际的大小,而如果将图片放到drawable—hdpi中则该问题就不会存在了。 layout-640×360 根据屏幕尺寸 layout-xhdpi 根据屏幕尺寸 layout-xhdpi-v19 根据屏幕尺寸和sdk版本 2)hdpi、mdpi、ldpi 在之前的版本中,只有一个 drawable,而2.1版本中有drawable-mdpi、drawable-ldpi、drawable-hdpi三个,这三个主要是为了支持多分辨率。 相关概念 PPI = Pixels per inch,每英寸上的像素数,即 “像素密度” xxxhdpi: 4.0 xxhdpi: 3.0 xhdpi: 2.0 hdpi: 1.5 mdpi: 1.0
android将实际的屏幕密度进行划分(low,medium,high,and extra high,extra extra high) 一般情况下的普通屏幕:ldpi是120dpi,mdpi是160dpi,hdpi “ “FWVGA hdpi “ “QHD hdpi “ “720P xhdpi” “1080P xxhdpi “ nodpi里面的资源不会被缩放,无论尺寸是否满足条件。 此时会有一个疑问,手机的像素密度可以是任何值,Android手机只有mdpi,hdpi,ldpi,xhdpi,xxhdpi,xxxhdpi等有限的几个适配目录,Android手机如何适配呢,所以可以推测 ),则drawable的寻找顺序为,首先查找xhdpi目录 如果没找到,依然查找xxhdpi,如果还没有找到xxxhdpi,还没有找到查找nodpi,如果还没有查找hdpi,然后查找mdpi,如果在xxhdpi 而在480×800(hdpi,240dpi)的手机上1dp=1.5px.所以dp和px的换算以屏幕密度为准则而不是屏幕的实际密度。
大家都知道,安卓有 mdpi、hdpi、xhdpi后缀的文件,具体使用有 drawable-mdpi、drawable-hdpi,或者mipmap-mdpi、mipmap-hdpi, 又或者 values-mdpi 、values-hdpi, 这些都是安卓自带的屏幕适配方案,只是不太好用吗,经常出问题。 那么,这些文件都是怎么使用的呢,这又涉及到了屏幕密度这个属性,关联如下: dpi 屏幕密度 drawable-ldpi 0.75 drawable-mdpi 1(baseline) drawable-hdpi ,所以属于hdpi 平板B 三星平板P355C 的屏幕密度是1,属于mdpi ldpi:mdpi:hdpi:xhdpi:xxhdpi:xxxdpi = 0.75:1:1.5:2:3:4 = 3:4:6: 8:12:16 上述比值乘以12,就是 36:48:72:144:192,刚好就是icon尺寸 我们会看到,最小宽度适配方案,values-hdpi 的值是 values-mdpi 的值乘以 0.8 0.8
/ // 为hdpi屏幕准备的png/jpg图片├── drawable-xhdpi/ // 为xhdpi屏幕准备的png/jpg图片├── drawable-xxhdpi/ // 为 xxhdpi屏幕准备的png/jpg图片├── mipmap-hdpi/ // 只放应用图标 ic_launcher.png├── mipmap-xhdpi/ // 只放应用图标 放置路径示例:res/drawable-mdpi/bg_home.jpg (通常不需要,但遵循规范的话应该提供)res/drawable-hdpi/bg_home.jpgres/drawable-xhdpi 如果你把主页背景图 bg_home.jpg 放在 mipmap-xxhdpi/ 目录下,然后在一个 hdpi 的设备上运行:系统会去 mipmap-hdpi/ 找,但你没提供这个版本。 它会直接使用 mipmap-xxhdpi/ 里的原图,这张图在 hdpi 设备上会显得非常大,可能超出屏幕,导致显示异常。
AndroidManifest.xml设置 在中Menifest中添加子元素 android:anyDensity=”true”时,应用程序安装在不同密度的终端上时,程序会分别加载xxhdpi、xhdpi、hdpi ,那么系统会去加载drawable_mdpi文件夹中的资源; 2) 如果drawable-hpdi中有高密度图片,其它两个文件夹中没有对应图片资源,那么系统会去加载drawable-hdpi中的资源,其他同理 ; 3) 如果drawable-hdpi,drawable-mdpi中有图片资源,drawable-ldpi中没有,系统会加载drawable-mdpi中的资源,其他同理,使用最接近的密度级别。 2.1.2 横屏竖屏目录区分 1) drawable a) drawable-hdpi该图片即适用于横屏,也适用于竖屏; b) drawable-land-hdpi,当屏幕为横屏,且为高密度时,加载此文件夹的资源 ; c) drawable-port-hdpi,当屏幕为竖屏,且为高密度时,加载此文件夹中的资源。
ldpi: 屏幕密度为120的手机设备 mdpi: 屏幕密度为160的手机设备(此为baseline,其他均以此为基准,在此设备上,1dp = 1px) hdpi: 屏幕密度为240的手机设备 xhdpi 如果是800x480的切图,则应该放入drawable-hdpi目录下, 如果是1280x720的切图,则应该放在drawable-xhdpi目录下。 android手机先根据当前分辨率选择最近的一个文件夹读取,比如你可以把1080P放在hdpi中,那么高分辨率手机先读hdpi这里面的,没有就找mdpi,依次类推。
等于mdpi的2倍,也就是xhdpi的分辨率,所以推导关系如下: 对应@x1的标准分辨率时(iPhone2、3还有iPad1、2) mdpi文字/图标/间距 = (@x1)*1 = px; hdpi 间距= (@x1)*2.25 = px; 对应@x2的高清分辨率时(iPhone4、4s、5、5s还有iPad Retina) mdpi文字/图标/间距 = (@x2/2)*1 = px; hdpi xxdpi文字/图标/间距= (@x2/2)*2.25 = px; 对应@x3的高清分辨率时(iPhone6、6p) mdpi文字/图标/间距 = (@x3/3)*1 = px; hdpi
2.4 像素密度 Android中对图片的分类是通过Screen pixel density (像素密度:以dpi为数值单位)进行的,包括ldpi、mdpi、hdpi、xhdpi这四个主要的级别。 hdpi: High-density screens; approximately 240dpi. 这四种屏幕密度之间存是3:4:6:8的缩放比例,所以,一个ldpi下的9x9像素的bitmap(位图)在mddpi下就是12x12,在hdpi下是18x18,在xhdpi下是24x24。 ,那么在hdpi下图片应该是150x150,在mdpi下是100x100,在ldpi下是75x75. 例如,设备像素密度为ldpi,应用提供了hdpi的图片,那么系统会选择对hdpi的图片缩放0.5。
今天在安卓项目中 res-drawable-hdpi 替换图片的时候出现这个问题 问题现象为项目显示一个叉号,但是在项目内容的任何文件都不显示叉号, 搞了半天没发现是什么问题,然后就去项目的文件夹下 的 res-drawable-hdpi文件夹下找了找替换的那几个照片,发现了问题所在 原来我原来的图片和我替换的图片都存在,而且两者的名字还是一样的,那么出错的原因就是替换图片失败了,同样名字的两张图片同时存在所以报错