Android 适配说明

首先这篇适配说明是来自技术群分享,这里进行保存,以备不时之需!

只针对手机app适配

目前android 手机分辨率主流有

480*800  480*854  540*960

720*1280

1080*1920

1440*2560

以上不包括屏幕内虚拟机键。 一般540*960 加虚拟机 540*800多 720p的是1100多

首先适配光考虑分辨率是不够的, 还有考虑分辨率的dpi

android 手机主要朝两个方向发展,一个是手机型 一个是pad型的

先说dpi的不同,同样分辨率的手机 dpi不同

比如:1、 4.3寸 4.6寸720*1280的分辨率的手机 他们的dpi 是2 用的是xdpi的图

  2、 6.0寸 5.8寸720*1280的分辨率的手机 他们的dpi 是 1.5 用的是hdpi的图

这样就导致如果用多套图的话 第2套图的hpi 会跟正常的480*800  480*854  540*960

冲突,你可以再加一套图...但是这样图加下去是无止境的,而且多套图的话 貌似 540*960的手机 如果带虚拟键的话引用的图有可能有问题。 可以拿htc 540*960的带虚拟机的手机 的测试下

所以关键适配在布局上做手脚。

布局上适配 其实也不难,

主流的

540*960

720*1280

1080*1920

这3个分辨率其实是成比例的,所以以dip为单位的话 适配一个其他3个都会适配了 前提是手机型的适配。

pad型的适配 其实就是把控件缩小了,或者你可以理解成 布局拉长了,相对的怎么理解都行。

控件缩小是这样理解的  图左

比如你 100dip*100dip的方的布局

在xdpi上面 显示的是 200px*200px

在 hpi上面 显示的则是 150px*150px

布局拉伸的理解

如图 比如你在4.3寸的手机上显示 宽占了2/3 但是在大屏上 可能占了1/2 感觉布局横向拉长了。

首先要理解了 pad型跟手机型的区别 剩下的就好说了

接下来就是 实际中布局的应用。

记着一点就是 布局的时候 想象着  布局被拉伸后显示的位置 

还有就是毋庸置疑的 布局的单位都是dip

 

举例1.  头部栏

这是两种 理解显示的样子, 左边的是 假设两个屏幕尺寸一样 分辨率一样 dpi不一样的时候显示, 右侧是 现实中显示出来的 样子

先看左侧的  比如导航栏高是100dip  那么左边第1个图高 就是200px,第2个图高就是150px

这个是合理的  因为你看右边的图的 实际的展示 虽然高是150px 但是实际上他展示的区域跟 200px 展示的区域是差不多一样大的。

所以pad型的定义就是为了 展示更多的内容

后面就不花 两种图了 太累了,

所以头部栏的布局 就是高  dip固定值, 宽用fill, 如果宽不用fill 用固定值的话, 就会出现 比如 左1宽 360dip  刚好 720px 但是左2 360dpi只有 360*1.5<720p,

所以适配一般背景什么的 宽是fill 高是固定dip

然后看具体的控件 icon icon如右图  其实icon大小也是合理的,所以icon的大小也是dip的固定值, 关键是布局。

左边的是 左对齐 距左多少像素  右边的是右对齐 距右多少像素, 所以即使控件拉长了 也是对齐的,

如果当前右边的那个布局不是右对齐的话 就会出现 按钮右边多出了空白。

所以布局的时候 还是前面说的那句话 要考虑拉伸之后的位置,然后用距左 距右 或者权重

2.随屏幕拉长而拉长的布局 或者不变的布局

这个非常常见  比如

图 布局 1 2 3

布局1为正常要做的效果, 2 3为大屏手机显示,

如果1的布局 给每个item 布局的宽设了固定的值 屏幕是720px 就是360dip 比如 设置340dip 居中那天距左距右大概各留了10dip,

如果是让上面的写法 居中 宽340dip的话 运行到大屏就是第2个图的效果 明显不是我们想要的

如果是直接写 宽fill margin左右10dip的话 那就是 图3的效果

根据各自情况,首先要想到布局拉长后的样子!

3. 比较特殊的格子布局 或者瀑布流布局

比如一个方格的gridview 画的不太方=  = 那他适配后肯定也是方的。就那gridview来说吧

布局里面是不知道手机屏幕的宽高的,而且如果是用dpi为单位的话 那么宽就会变小的,有些人会用权重 weight,宽是可以。 但是高呢=  = 。。

像这种情况 只能通过代码 在adapter里面设置 计算屏幕的宽/列数 就是item的宽高的值。

特别是 这种 有的 肯定是代码里面计算的 布局肯定是做不到的。

那是那句 即时你适配了宽 但是高会缩。。

总结 就是布局的时候想象着  布局被拉伸后显示的位置 

还有就是  考虑虚拟键盘, 有些高度没虚拟键盘的 刚好一屏的 记得外面加scrollview滚动。。 不然适配后高度不够。

 

 

补:

至于用哪套图, 目前折中用的720p的图,因为要向下兼容,如果直接用1080p的图 低分辨率 内存不后, 然后用480 或540的图 1080p 或者后面的2k的显示可能会模糊,

折中的话 就用720*1280的图片。

后面2k 1080k普及的话 可能就不用720p的图的。用1080的图也有可能

时间: 2024-10-29 06:10:20

Android 适配说明的相关文章

Android适配方案小结(三)

在Android适配方案小结(一).(二)中,我们了解了一些基本概念. 那么在具体开发中,我们应该注意什么呢. 首先,我们必须要知道,其实适配的关键在于两点: (1)不同分辨率设备的适配,这点在单位的使用上用dp.sp以及图片资源存放于不同的drawable文件夹就可以解决问题: (2)不同尺寸的适配,这点主要靠将相关值以及布局文件放置于不同的文件夹中来解决. 2.1 values文件夹 可以在工程下创建不同的values文件夹:values-sw480dp, values-sw600dp, v

Android适配器之DataModifyHelper数据操作类的封装

编写适配器代码时常常被以下几个问题所困扰: 1.业务层和适配器中对同一组数据进行维护,难以管理 2.在业务层针对数据进行修改后必须通知适配器更新,否则提示The content of the adapter has changed but ListView did not receive anotification 3.业务层修改数据时充斥大量的非空&数据标准化等冗余代码 针对前两个问题,可以将数据交由适配器去管理,业务层对数据的增删改查均通过适配器进行处理,这样仅需要维护好adapter中的数

Android 适配(一)

一.Android适配基础参数 1.常见分辨率(px) oppx 2340x1080 oppR15 2280x1080 oppor11sp 2160*1080 1080*1920 (主流屏幕16:9) 1080*2160 18:9 手机主流分辨率: 1080*2160 高端 16:9 手机主流分辨率: 1080P (1080*1920) 或 2K (1440*2560) 分辨率 低端 16:9 手机主流分辨率:720P (720*1280) 分辨率 退到五六年前,一般 Android 手机的主流

Android适配不同的设备

感谢原作者的整理: http://blog.csdn.net/chenyjays/article/details/41308887 适配不同的语言 把UI中的字符串存储在外部文件,通过代码提取. 创建区域设置目录和字符串文件 为了支持多国语言,在res/中创建一个额外的values目录以连字符和ISO国家代码结尾命名,比如values-es/ 是为语言代码为"es"的区域放置简单的资源文件的目录.Android会在运行时根据设备的区域设置,加载相应的资源. 若你决定支持某种语言,则需要

Android适配方案小结(二)

该节主要记录从代码中获取与屏幕适配相关的各个参数: Java代码如下 public class ScreenUtil { /** * Note: * 只有activity可以使用getWindowManager,否则应该使用 * Context.getResources().getDisplayMetrics()来获取 */ /** * 获取DisplayMetric相关参数 * @param context * @return */ public static String getMetric

Android适配

这篇文章主要讲两点: 一.xxxhdpi.560dpi.xxhdpi.xhdpi.hdpi.mdpi.ldpi (还有tvdpi 主要用于电视,不去讨论) 在某个dpi缺失的情况下,如果去找寻. 二.values-xxhdpi-1920X1080 这种以dpi加屏幕分辨率的适配方案是什么规律. 一.各种dpi之间的关系 [1]:由于网上以及存在一篇很好的文章,所以就不细讲了,这里给出链接地址:http://blog.csdn.net/a220315410/article/details/1189

Android 适配toolbar后windowSoftInputMode=&quot;adjustResize&quot; 不生效

一.发现问题 项目中适配了Android最新的MaterialDesign,其中最主要修改的一个就是将actionbar 替换成了toolbar,如果对toolbar没有了解的话可以参考 这篇文章 适配toolbar,请看 这篇文章 由于我们要用toolbar替代actionbar,所以我们首先要做的就是隐藏actionbar,我们在theme中声明 <style name="AppTheme" parent="Theme.AppCompat.Light.NoActio

请告诉美工Android适配时切图要按标准来

在Android官方看到的Android各分辨率适配时的比例,以mdpi为基础,切图时请告诉美工,提升用户体验哇,别在那边瞎切. 比如: ldpi: 36px    0.75 mdpi: 48px    1.0 hdpi: 72px    1.5 xhdpi: 96px     2.0 xxhdpi: 144px   3.0

android适配_相关概念和应用

有几个概念以及相关公式先理解下:1.dp:device independent pixels(设备独立像素),是像素和密度的比dp = px / density 2.dpi(dot per inch每英寸的点数)和ppi相等,是屏幕对角线的像素数和屏幕尺寸的比例dpi = ppi = (√(screenHeight^2 + screenWidth^2)) / 屏幕大小(inch) 3.密度是dpi和160的比例density = dpi / 160 4.英寸是相许和dpi或ppi的比例inch

Android适配(屏幕适配、国际化适配)

首先来说一下Android的屏幕适配: 关于Android屏幕的一些基本概念知识,自行充电..在此只介绍实际开发过程中的使用 1.说到Android的屏幕适配,首当其冲的就是图片的适配 图片适配遵循两个原则: ①尽量使用9.path图来自动适应屏幕 ②尽量使用最少的图片资源 关于第一点使用9.path图片:比如topBar.底部导航.侧滑菜单等等各种按钮的背景处理时尽量使用9.path图片,一套图通吃 关于第二点使用最少的图片资源:很多人喜欢切好几套图去适配屏幕,一来占用内存空间,二来美工会受不