本人一直在寻找可以一劳永逸的屏幕适配方案,今日头条是选定基准分辨率,基于设备屏幕分辨率计算出新的屏幕密度进行适配,保证所有设备的显示效果一致,完美避开上面那款设备的问题。推荐给大家。...我们看看上面的数据,可以看到按照三星6.0基准进行缩放,效果图在三星4.1这款设备宽度上的显示,是按768乘以new density ,也就是 1.04166 进行放大,不用按计算器了,就是800px,...大家都知道,安卓有 mdpi、hdpi、xhdpi后缀的文件,具体使用有 drawable-mdpi、drawable-hdpi,或者mipmap-mdpi、mipmap-hdpi, 又或者 values-mdpi...8:12:16 上述比值乘以12,就是 36:48:72:144:192,刚好就是icon尺寸 我们会看到,最小宽度适配方案,values-hdpi 的值是 values-mdpi 的值乘以 0.8 0.8...按今日头条适配: 768px * 1.04166 = 799.99488,图片可以看成显示成 800 px 优点很明显,布局更简单 严谨的你,可能会问了,那显示超过768px呢?
,都可以找到对应的分类。...首先,Android将mdpi即中密度作为基准线,即以密度160 dpi 作为参考值。...因此对应不同密度设备,我们需要为其准备不同画质的图片,以便获得更好的效果。...由于图片存放在hdpi目录,除以hdpi对应倍数1.5 ,得到图片宽度为 96/1.5 = 64 将I619设备测试结果验证,符合以上结论。...另外本测试可以看出,放在drawable目录的情况跟mdpi目录的情况一致,推测这两个对应的比例和倍数应该是一样的。
3、什么是mdpi、hdpi、xdpi、xxdpi、xxxdpi?如何计算和区分?...在Google官方开发文档中,说明了 mdpi:hdpi:xhdpi:xxhdpi:xxxhdpi=2:3:4:6:8 的尺寸比例进行缩放。...例如,一个图标的大小为48×48dp,表示在mdpi上,实际大小为48×48px,在hdpi像素密度上,实际尺寸为mdpi上的1.5倍,即72×72px,以此类推。...smallestWidth 是设备的固定屏幕尺寸特性;设备的 smallestWidth 不会随屏幕方向的变化而改变。 设备的 smallestWidth 将屏幕装饰元素和系统 UI 考虑在内。...这对于确定是否使用多窗格布局往往很有用,因为即使是在 平板电脑设备上,您也通常不希望竖屏像横屏一样 使用多窗格布局。
什么是mdpi、hdpi、xdpi、xxdpi?如何计算和区分? 题图中的每一个矩形都代表着一种Android设备。Android系统碎片化问题的严重性,让我们不得不面对屏幕适配的问题。...sp,即scale-independent pixels,与dp类似,但是可以根据文字大小首选项进行放缩,是设置字体大小的御用单位。...mdpi、hdpi、xdpi、xxdpi: mdpi、hdpi、xdpi、xxdpi用来修饰Android中的drawable文件夹及values文件夹,用来区分不同像素密度下的图片和dimen值。...其实之前还有个ldpi,但是随着移动设备配置的不断升级,这个像素密度的设备已经很罕见了,所在现在适配时不需考虑。...因此同样的各个资源文件夹中的图片尺寸同样符合ldpi:mdpi:hdpi:xhdpi:xxhdpi=3:4:6:8:12的规律。 ?
Android手机适配是非常让人头疼的一件事,尤其是图片,android为了做到是适配提供了很多文件夹来存放不同大小的图片,比如:drawable-ldpi、drawable-mdpi、drawable-hdpi...ldpi: 屏幕密度为120的手机设备 mdpi: 屏幕密度为160的手机设备(此为baseline,其他均以此为基准,在此设备上,1dp = 1px) hdpi: 屏幕密度为240的手机设备 xhdpi...不同设备显示效果相同,一般我们HVGA代表320x480像素,这个用的比较多。...将dip作为其他元素的单位。...图片放在drawable中,等同于放在drawable-mdpi中,原因为:drawable目录不具有屏幕密度特性,所以采用基准值,即mdpi 图片放在某个特定drawable中,比如drawable-hdpi
px:我们通常说的手机分辨率比如小米4 是 1920 x 1080 那单位就是px,如果你把手机屏幕放大到一定程度,会看到密密麻麻的小正方形格子,竖列有1920个横列有1080个,这个单位是绝对的,不同的设备不同的显示屏显示效果是相同的...那么如何将图片正确存放到不同的drawable 和 mipmap文件夹下呢?...ldpi: 屏幕密度为120的手机设备 mdpi: 屏幕密度为160的手机设备(此为baseline,其他均以此为基准,在此设备上,1dp = 1px) hdpi: 屏幕密度为240的手机设备 xhdpi...如果是480x320的切图,则应该放在drawable-mdpi目录下。...android手机先根据当前分辨率选择最近的一个文件夹读取,比如你可以把1080P放在hdpi中,那么高分辨率手机先读hdpi这里面的,没有就找mdpi,依次类推。
基础知识 MDPI HDPI XHDPI XXHDPI XXXHDPI density(像素密度) 160 240 320 480 640 分辨率 360x640 540x960 720x1280 1080x1920...dp 设备独立像素值,也就是我们定义在布局文件中的值,但是最终会根据系统计算转为 px。...也就是 mdpi 到 hdpi 是 1.5 倍,mdpi 到 xhdpi 是 2倍,以此类推。...图片内存体积优化 根文件存储格式无关 通过上面的分析我们可以知道图片占用内存的大小是和图片本身的大小没有关系的。...,我们可以知道 在不同的 dpi 设备中,同个界面的相同图片所占用的内存大小可能不一样,同个图片在不同的资源文件中加载到内存后所占用的大小也可能不一样。
例如,为不同的尺寸和分辨率的屏幕提供不同的图片资源,这样可以让你的应用在不同的设备上显示最适合此设备分辨率/尺寸的不同大小的图片。...对于一个图片,它在不同像素密度级别下的缩放系数如下: xhdpi: 2.0 hdpi: 1.5 mdpi: 1.0 (参考标准) ldpi: 0.75 如果在xhdpi的设备下使用的合适的图片尺寸是200x200...,那么在hdpi下图片应该是150x150,在mdpi下是100x100,在ldpi下是75x75....drawable 资源放在res目录下不同的子目录中——使用不同的像素密度修饰符对应不同的像素密度: drawable-ldpi/ :对应ldpi drawable-mdpi/ :对应mdpi drawable-hdpi...例如,设备像素密度为ldpi,应用提供了hdpi的图片,那么系统会选择对hdpi的图片缩放0.5。
android将实际的屏幕密度进行划分(low,medium,high,and extra high,extra extra high) 一般情况下的普通屏幕:ldpi是120dpi,mdpi是160dpi...” “WVGA hdpi “ “FWVGA hdpi “ “QHD hdpi “ “720P xhdpi” “1080P xxhdpi “ nodpi里面的资源不会被缩放,无论尺寸是否满足条件...此时会有一个疑问,手机的像素密度可以是任何值,Android手机只有mdpi,hdpi,ldpi,xhdpi,xxhdpi,xxxhdpi等有限的几个适配目录,Android手机如何适配呢,所以可以推测...原则,然后按比例缩放图片如果当前为xhdpi设备(项目中只有xxhdpi,xhdpi,xxhdpi,nodpi,mdpi,hdpi),则drawable的寻找顺序为,首先查找xhdpi目录 如果没找到,...依然查找xxhdpi,如果还没有找到xxxhdpi,还没有找到查找nodpi,如果还没有查找hdpi,然后查找mdpi,如果在xxhdpi中找到目标图片,则压缩2/3来使用(因为系统认为它找到了一个比合适尺寸大的图片
文章目录 一、屏幕像素密度 DPI 与素材大小关联 二、屏幕像素密度 DPI 与 屏幕密度限定符 xhdpi 关联 参考文档 : 设备兼容性概览 屏幕兼容性概览 支持不同的像素密度 声明受限屏幕支持 一..., 对应屏幕分辨率 1440 x 2560 ( 1440P ) , 对应素材放在 素材放在 res/mmap-xxxhdpi 目录下 ; 当美工给的设计图尺寸是 720 x 1280 时 , 应该将素材放在...: hdpi : xhdpi : xxhdpi : xxxhdpi=2 : 3 : 4 : 6 : 8 其中 mdpi 也就是 160 dpi 下 , 1像素 px = 1密度无关像素 dip ; 上述...\rm mdpi 、 hdpi 、 xhdpi 、 xxhdpi 、 xxxhdpi 就是屏幕密度限定符 ; 屏幕像素密度 DPI 与 屏幕密度限定符 关联 : ldpi : \rm 0 < dpi...\leq 120 , 对应图标大小 36 \times 36 ; mdpi : \rm 120 < dpi \leq 160 , 对应图标大小 48 \times 48 ; hdpi :
有四种一般的尺寸: 小,一般大,大,超大 还有四种一般的像素密度: 低 (ldpi), 中 (mdpi), 高 (hdpi), 超高 (xhdpi) 为了声明你想要使用在不同屏幕上的布局和位图...更多有关Android如何选择对应的资源的信息可以在 提供资源 指南中找到 ....为了生成这些图像,你应该从矢量格式的源生资源开始,使用如下尺寸范围为每一种项目密度生成图像 : xhdpi: 2.0 hdpi: 1.5 mdpi: 1.0 (基线) ldpi: 0.75...这就意味着如果你为xhdpi设备生成了一张 200x200 图片,你就应该用 150x150 为hdpi , 100x100 为 pi, 以及 75x75 为ldpi设备生成同样的资源 ....drawable-hdpi/ awesomeimage.png drawable-mdpi/ awesomeimage.png
另外,将icon放置在mipmap文件夹还可以让我们程序的launcher图标自动拥有跨设备密度展示的能力,比如说一台屏幕密度是xxhdpi的设备可以自动加载mipmap-xxxhdpi下的icon来作为应用程序的...总体匹配规则就是这样,那么比如说现在终于在drawable-mdpi文件夹下面找到android_logo这张图了,但是系统会认为你这张图是专门为低密度的设备所设计的,如果直接将这张图在当前的高密度设备上使用就有可能会出现像素过低的情况...代码修改这么多就可以了,然后将图片移动到drawable-mdpi文件夹下。...下面我们来开始分析,mdpi密度的最高dpi值是160,而xxhdpi密度的最高dpi值是480,因此是一个3倍的关系,那么我们就可以猜测,放到drawable-mdpi文件夹下的图片在xxhdpi密度的设备上显示会被放大...可以这样来分析,根据我们刚才所学的内容,如果将一张图片放在低密度文件夹下,那么在高密度设备上显示图片时就会被自动放大,而如果将一张图片放在高密度文件夹下,那么在低密度设备上显示图片时就会被自动缩小。
Canvas - 名为画布,我们可以看作是一种处理过程,使用各种方法来管理Bitmap、GL或者Path路径,同时它可以配合Matrix矩阵类给图像做旋转、缩放等操作,同时Canvas类还提供了裁剪、选取等操作...Paint - 我们可以把它看做一个画图工具,比如画笔、画刷。他管理了每个画图工具的字体、颜色、样式。...你的手机屏幕有那么大但是他会将图片拉伸,当加载图片后让你感觉该屏幕没有实际的大小,而如果将图片放到drawable—hdpi中则该问题就不会存在了。...比如手机屏幕的大小为420*800如果你将图片放在drawable—mdpi中,那么你就要准备一张340*525分辨率的图片。...72*72 mdpi:48*48 ldpi:36*36 dp是虚拟像素,在不同的像素密度的设备上会自动适配,比如: 在320×480分辨率,像素密度为160,1dp=1px 在480×800分辨率,像素密度为
dpi范围 密度 0dpi ~ 120dpi ldpi 120dpi ~ 160dpi mdpi 160dpi ~ 240dpi hdpi 240dpi ~ 320dpi xhdpi 320dpi ~...如果将xxhdpi下的图片剪切到drawable-mdpi中,效果如下,可以看到图片明显变大。...原因:系统在加载图片时,首先去对应的文件夹查找,没找到,又依次按照顺序一直在drawable-mdpi找到,但是系统会认为你这张图是专门为低密度的设备所设计的,如果直接将这张图在当前的高密度设备上使用就有可能会出现像素过低的情况...,于是系统自动帮我们做了这样一个放大操作。...缩放倍数:以mdpi为基准,drawable-mdpi : drawable-hdpi : drawable-xhdpi : drawable-xxhdpi : drawable-xxxhdpi = 1
可以用来指定密度资源的配置限定符有ldpi(低)、mdpi (中等), hdpi (高), and xhdpi (超高)。例如,高密度屏幕的位图应该选hdpi。...例如,当系统在寻找一个低密度资源且这个资源是不可用时,系统更喜欢降低高密度版本的资源,因为系统可以简单地乘以0.5系数将高密度资源降低为低密度,与调整中等密度资源乘以0.75系数相比,这样用到很少的工件...配置实例 为了帮助实现一些为不同类型的设备设计的目标,下面是一些典型的屏幕宽度的数值: 320dp:一种典型的手机屏幕 (240x320 ldpi, 320x480 mdpi, 480x800 hdpi...例如,一个50x50 像素的mdpi屏幕的位图要在hdpi屏幕上扩大为75x75像素(如果此时没有可替代资源给hdpi),系统会这样返回此值。...例如,可以使用Density来定义位图是为哪种密度设计的,用Scaled去指定位图是否应该调整到匹配当前设备的屏幕密度。
Android项目的res目录下一般加上我们自己创建的,会有6个目录,分别是:drawble drawble-ldpi drawble-mdpi drawble-hdpi drawble-xhdpi...步骤1:以某一分辨率为基准,生成所有分辨率对应像素数列表 现在我们以320x480的分辨率为基准: 将屏幕的宽度分为320份,取值为x1~x320 将屏幕的高度分为480份,取值为y1~y480 然后生成该分辨率对应像素数的列表...,因此我们提供的位图资源应该始终可以满足各类密度的要求: 步骤1:根据以下尺寸范围针对各密度生成相应的图片。...比如说,如果我们为 xhdpi 设备生成了 200x200 px尺寸的图片,就应该按照相应比例地为 hdpi、mdpi 和 ldpi 设备分别生成 150x150、100x100 和 75x75 尺寸的图片...即一套分辨率=一套位图资源(这个当然是Ui设计师做了) 步骤2:将生成的图片文件放在 res/ 下的相应子目录中(mdpi、hdpi、xhdpi、xxhdpi),系统就会根据运行您应用的设备的屏幕密度自动选择合适的图片
但是你可以在所有的设备上通过为每个图标提供多尺寸 来为你的图标提供更好的视觉效果。当你的app运行时,安卓检查设备屏幕的特性并且加载适当的指定密度的你app中的资源文件。...这个意思是 基线(MDPI)的资源是 48x48 px,并且 高密度(HDPI)资源应该指定为1.5倍于基线的尺寸即72x72像素,并且 x高密度(x-hight 密度)资源应该是2倍于基线即96x96...例如,启动图标是 48,72,96,或者144像素宽度的,依赖于不同的屏幕密度(mdpi, hdpi, xhdpi, and xxhdpi, 分别的)。...例如,如果一个被绘制在 mdpi的 60x60 的圆形被显示在 hdpi下将被重画为90x90 的圆型。...帮助保持多份拷贝的文件的安全和容易去找到,我们建议 在你的工作空间 创建一个 基于目标屏幕密度来组织资源文件的文件夹结构。例如: art/... mdpi/...
我们理解一些基本概念。 那么详细的开发,我们应该重视起来。 首先,我们需要知道。关键的事实是,这两个适配器: (1)。...仅依据尺寸推断就能够了: 320dp: a typical phone screen (240x320 ldpi, 320x480 mdpi, 480x800 hdpi, etc). 480dp: a...tweener tablet like the Streak (480x800 mdpi). 600dp: a 7” tablet (600x1024 mdpi). 720dp: a 10” tablet...(720x1280 mdpi, 800x1280 mdpi, etc). 600dp的含义是:代表这个设备的最短的那一边。...; 这个时候拿smallestScreenWidth 与600想比較就能够知道该设备是否能读取里面的资源了。
尽管概念不同,但是对于移动设备的显示屏,可以看作ppi=dpi 。...也就是说更接近物理呈现,而px则不行。...根据单位换算方法,可总结出: 当运行在mdpi下时,1dp=1px :也就是说设计师在PS里定义一个item高48px,开发就会定义该item高48dp ; 当运行在hdpi模式下时,1dp=1.5px...hdpi xhdpi 分辨率 36*36px 48*48px 72*72px 96*96px b、操作栏图标,代表用户在app中可以使用到的最重要的图标 整体大小为32 x 32dp ,图形实际区域为...密度 ldpi mdpi hdpi xhdpi 实际区域分辨率 12*12px 18*18px 24*24px 整体大小分辨率 16*16px 24*24px 32*32px d、通知图标 如果
drawable- hdpi、drawable- mdpi、drawable-ldpi的区别: (1)drawable-hdpi里面存放高分辨率的图片,如WVGA (480x800),FWVGA (480x854...) (2)drawable-mdpi里面存放中等分辨率的图片,如HVGA (320x480) (3)drawable-ldpi里面存放低分辨率的图片,如QVGA (240x320) 测试的时候可以设定模拟器的分辨率知道了手机屏幕手机大小的分类以后...如果模拟器尚未启动,可以在Eclipse的项目Run as=>Open Run Dialog对话框中设置,如果android模拟器已经启动后,可以使用快捷键F12或Ctrl+F11来切换。...,所以不同的设备会有不同的显示方向....如果用户旋转设备这屏幕会横竖屏切换。 "nosensor" 忽略物理感应器,这样就不会随着用户旋转设备而更改了 ( "unspecified"设置除外 )。
领取专属 10元无门槛券
手把手带您无忧上云