浅谈android如何同时适配pad和手机

标签: android pad 手机 | 发表时间:2015-07-26 08:28 | 作者:u013560890
出处:http://blog.csdn.net

前期的注意事项和技巧

前段时间公司要做的一个android app,同时要做到适配pad跟手机。刚开始觉得这根本不可能实现,因为我们市场上见到的app都是要两个版本的,分别是手机版和pad版。因为手机和屏幕的尺寸相差太大,所以一般都不会说一个app同时兼容两个版本。

  为了做到屏幕的兼容,所以我专门去网上查找资料,看看目前市场上主流的手机尺寸和分辨率分别是多少。主要找到的情况如下图所示:

而pad的话每个厂家出产的pad的分辨率都会跟手机的一样,所以可以先做完手机页面的适配再考虑pad的页面适配。

考察了目前主流手机屏幕分辨率和尺寸的分布之后,就得考虑android适配中另外一个重点,就是屏幕的ppi值,所谓的屏幕的ppi值就是:Pixels Per Inch所表示的是每英寸所拥有的像素(Pixel)数目。而android系统默认会根据获取屏幕的分辨率而将屏幕划分为idpi、mdpi、hdpi、xhdpi、xxhdpi这五个等级,每个等级都对应相应的ppi值,其对应关系如下图所示:

美工一般都会出一套切图(切图建议分辨率是480x800,这样网上做页面适配的兼容容易很多,px和dp的换算倍率刚好也是1:1)和尺寸图(反正我遇到的美工没有每种分辨率来一套,这样工作量确实大),而讲到尺寸图,美工在上面标的尺寸一般都是以px为单位的,而在android布局当中我们经常用到的单位是dp和sp。这样我们就得对px和dp进行换算,具体换算规则可以看这里: px和dp的换算规则

编码中的注意事项和技巧

上面说了一些页面适配的一些前期的准备和注意事项,接下来就说一下编码中的一些页面适配的注意事项和技巧。1、在xml布局当中,尽量用weight值来均衡分布,尽量少用固定值去定义容器或者控件的大小。容器建议用fill_parent这类的值。如果控件或容器实在没办法得使用固定值,那就用固定值。一般手机都不会走样。如果出现走样,那就得在 values 、values-ldpi、values-mdpi、values-hdpi、values-xhdpi,根据不同屏幕分辨率对应然后在文件夹的diamen的文件里面定义一个变量然后在布局文件里面引用,如图:


这样子就可以对不同分辨率的屏幕做适配了。

兼容了手机后对pad的适配

由于手机切图会相对较小,如果pad引用的话就会失真。所以就得找另外一份pad版的切图和尺寸图。现在就有两套切图,经过试验发现,android系统是根据屏幕最小宽度来区分手机还是pad的,当屏幕最小宽度>=600px的时候就当做该设备为pad,当屏幕最小宽度 < 600px的时候就认为是手机。所以可以在定义两种类型的drawable文件夹,一个是drawable-sw600dp-hdpi(这个是用来放pad版的切图),另一个是drawable-xhdpi(这个是用来放手机版的切图)。而value文件夹也是类似,values-sw600dp(这是放pad版的diamen等文件)values(这是放手机版的diamen等文件)。

如果你不知道自己的手机的最小屏幕宽度可以用下面这段代码运行在自己手机上查看:

<pre name="code" class="java"><span style="font-size:18px;">		Configuration config = getResources().getConfiguration();

        int  smallestScreenWidth = config.smallestScreenWidthDp;</span>
<span style="font-size:18px;">
</span>
有时候,有些布局只是有某些分辨率有一点点偏差,就可以在代码中获取屏幕最小宽度然后进行微调。

 

作者:u013560890 发表于2015/7/26 0:28:12 原文链接
阅读:316 评论:0 查看评论

相关 [android pad 手机] 推荐:

浅谈android如何同时适配pad和手机

- - CSDN博客推荐文章
前段时间公司要做的一个android app,同时要做到适配pad跟手机. 刚开始觉得这根本不可能实现,因为我们市场上见到的app都是要两个版本的,分别是手机版和pad版. 因为手机和屏幕的尺寸相差太大,所以一般都不会说一个app同时兼容两个版本.   为了做到屏幕的兼容,所以我专门去网上查找资料,看看目前市场上主流的手机尺寸和分辨率分别是多少.

华硕 Eee Pad Transformer 3G 版本台湾地区 Android 3.2 更新,Eee Pad Slider 也开卖啰!

- martin - Engadget 中国版
华硕 Eee Pad Transformer 作为销售量最出色的 Android 平板,使用者希望尽快得到更新也是合理的吧. 幸好华硕没有因为销量好就放慢手脚,继 Wi-Fi 版本后,昨天下午三时也开始为 Eee Pad Transformer 的 3G 版本提供 Android 3.2 的更新(更新顺序将依出厂序号排程),而且更令人高兴的是,不想随身携带多一个键盘的朋友,由今天起就可以买到 Eee Pad Slider 了.

[AHK]Scratch Pad:简单的便笺脚本

- greenar - idv2
以前我非常喜欢IpMsg这款著名的局域网IM软件. 不过除了IM之外,我更喜欢用它作为快捷便笺使用——想记录电话号码,或是记录idea,或是给一小段文字排版时,可以随手用Ctrl-Alt-S调出,用完后直接关闭. 没办法,只好用AutoHotKey写一段脚本来实现这个功能了. 默认的呼叫和隐藏热键都是Ctrl-Alt-S.

在Android手机上运行Ubuntu

- Alex Yu - Solidot
51开源社区 写道 "HTC Desire手机在经过简单的破解步骤后,已经可以相对稳定地运行以桌面应用为主的Linux操作系统Ubuntu. 破解方法是由一位论坛ID叫“Bergfex”的开发者发布的. 整个破解过程十分简便,仅需要在指定的文件夹——如SD卡的根目录和电脑的某个位置——中加载相应的zip文件,然后将手机设置成bootloader模式下加载,之后再将手机和电脑连接后重启即可.

HTC宣布将不锁定Android手机

- Ra白菜 - Solidot
HTC首席执行官周永明(Peter Chou)宣布,该公司未来的Android智能手机将不再锁定bootloader. HTC去年12月发布了Android 2.2 for Wildfire,更新了bootloader,不允许用户再修改固件. 由于HTC不太可能再发布新的更新,这意味着Wildfire用户无法获得新系统带来的新功能,或者安装新的自制固件,如CM7.

中国Android手机遭病毒攻击

- Benny Wen - Solidot
路透社报道,安全研究人员周四称,名为Geinimi的病毒正通过中国Android第三方应用商店传播,是第一种有类似僵尸网络功能的Android恶意程序. 安全公司Lookout Mobile Security估计,被该病毒感染的手机数量在数万到数十万部之间. 他们目前只在中国Android第三方应用商店中发现了含有该病毒的软件,而官方的Android电子市场似乎是安全的.

Cobra Tag + Android 手机帮你找东西

- 可可 - 谷安——谷奥Android专题站
钥匙或什么东西放到哪儿搞忘了. Cobra Tag 可以帮你找到. Cobra Tag 是一种钥匙挂饰,你可以将它挂到你的钥匙上或放到钱包中,而通过专用的(Android)智能手机应用,当挂饰在信号范围内时,就会发出蜂鸣声、震动等来提示你,当这些挂饰离开你一定的范围时手机应用也会提醒器(对防盗来说也有一定的功效).

超实用Android手机指令大全

- MZ - 乐淘吧
【超实用Android手机指令大全】快速设定手机,快速查看手机,全部都告诉你,Android手机用户一定要保存的Android手机指令大全. 我用android手机一定是好男人. [博海拾贝]有时候,最痛苦的不是失去,而是得到以后不快乐. [博海拾贝]与其诅咒黑暗 不如点起一根蜡烛.  » 非特殊声明本站所有文章,图片,视频全部来自网络,如有侵权>,请通知本站.

Android 手机的桌面通知

- liusp - I, KDE
Android手机有一个项目,可以将Android手机的通知推送到电脑上. 这个项目本身其实是用java外加swt完成的,在KDE的桌面中需要配置成使用libnotify作为通知机制才能在桌面看到. 本身可以通过蓝牙或者网络发送通知. Chakra和Archlinux需要分别在CCR或者AUR安装android-notifier-desktop,然后启动这个程序.

Pantech Android 手机使用 DDR2 内存

- David Z - Engadget 中国版
Pantech 在港台市场没有太高的知名度,手机也很难买到,但他们推出的手机一直以来在韩国也有不错的销量,加上话题性的规格,未来若大力发展韩国以外的市场,销量应该不会太差. Pantech 日前发布全球第一部使用 DDR2 内存的 Android 手机,名为 Vega Xperss. Vega Xpress 配备 4寸 800X480 LCD 屏幕、Android 2.2 系统、WIFI 802.11n、500万像素自动对焦镜头、1500mAh 电池.