IT培训网 - IT职场人学IT技术上IT培训网
32种Android开发不同屏幕尺寸应对方法
时间:2016-08-17 11:34:59 来源:Android培训网 作者:IT培训网 已有:名学员访问该课程
Android的屏幕适配一直以来都在折磨着我们这些开发者,在Android的大世界里有超过100种不同的屏幕尺寸,当然,解决屏幕适配的方法也很多。本文用32种方法来解决Android开发的不同屏幕尺寸问题。
为了进行Android的屏幕适配,你需要确定以下两件事情:
1、对不同的屏幕分辨率和尺寸有一个良好的布局和结构来适应它
2、UI图像能够适应不同分辨率的手机
这些都是独立的任务,也许你有一个超级的tablet布局,但布局上的图片看起来很糟。接下来我会依次讨论它们。
为不同的屏幕尺寸设计布局
1、Android Lint可以得到错误信息。
它可以给你的代码提供很详细的信息,并在你出错之前就可以给做出提示。
2、用可以帮助你减少视图层次结构。
这是一种简单的方式来去除多余的层次。好的文章都对此有所解释,而且在 Android Developer中它也显得与众不同。
第二个表单比第一个难看的多,事实上是相当的糟糕:我们已经介绍过一个完整的新元素了。但是假如我们要给每个Box里加入一个图片,一般的我们将这样做:
A Box在屏幕左半边 图片 | B Box在屏幕右半边 图片
用第一中方法,你得创建一个有两个层次的LinearLayout,如果用第二种方法,你可以直接在同一个RelativeLayout中加入图片,比如要指定第一个图片必须在“dummy_center”的左边,而且一个TextView A必须也在其左侧。那么你就得用7个元素3个视图层次了(LinearLayout 方式),而(RelativeLayout方式)只用6个元素2个层次,这样所有的工作添加完成。
3、用一些扩展工具如DDMS。
这可以帮助你发现一些不必要的网络调用、查看电池使用量、垃圾回收信息,状态变化(例子:当回调onStop和onDestroy时)等。LittleEye是我目前比较喜欢的工具。
4、用AsyncTasks。
Anroid工程团队受够了人们经常在UI线程里面实现网络调用(注:耗时操作,容易阻塞UI刷新),所以他们实现了一些可产生编译级错误信息的API。但是仍然在很多app中的一些工作会拖垮UI线程,我们要考虑到UI布局要快以及提高UI的响应性。
目标机器空间小
5、一些Aandroid设备有100mb空间大小的限制。
现在情况已有变化了,但是仍然有很多用户还会担心5Mb大小的app会浪费空间。如果你可以选择将app装入SD卡的话,这就不是问题了,但如果你的app需要在onBoot里启动的话你就不能装入SD卡了(例子:如一些窗体小部件).甚至对于一些新的设备,如果能很快的下载一个小的APK的话,用户还是很高兴的。
6、用XML资源(我发誓上次我已经说过了),这将比PNG资源节省很多空间。
当你仅仅需要一个可以满足很多屏幕大小的配置时,一个XML文件会比能实现同样功能的PNG省空间。
7、如果要用PNG,最好优化一下(用PNGCrush或ImageOptim)
目标Bug
8、在Android控制台里检查所有被自动检测出来的bug。
9、ProGuard现在是默认启动着的。
Proguard太好用了 (提高你app的速度和降低文件大小),但这也让StackTraces 非常难以处理。你将需要重新追踪你的StackTraces,因此你将需要继续保留在每次构建中创建的Proguard的映射文件。我把它们都放到以代码版本号命名的文件夹里。
10、为了显示StackTraces里的行数,你需要修改ProGuard的配置。
确认你的proguard.cfg拥有下面这句话:
-keepattributes SourceFile,LineNumberTable
11、使用staged rollouts。测试5%的基础用户,并且观察bug报告。
39、使用真实设备测试平台。
Device Anywhere and Perfecto Mobile提供了虚拟测试平台,在那里,你可以使用真正的移动设备。我发现他们有一些不好的地方,假如连续不断地进行测试的话,会导致有一些不好的情况发生。如果你在办公的环境里工作,或者有一些Android开发的好友,那么去启动一个“设备池”吧。
12、一般用ScrollView+ListView轻松搞定它
当我们有一系列不同屏幕尺寸的手机时,它们之间最大的不同就是屏幕的高度。因此ScrollView和ListView通常显示良好,虽然有时侯它们并不能完全覆盖整个屏幕。在OpenSignal中的Dashboard标签下我们可以看到所有东西,他们不需要滑动,然而对于许多高级控件来说,滑动展示并非一件坏事。如果你能够让你的应用适配各种不同尺寸的手机,那就很完美了,否则这两个控件会让你用最小的代价来保证你的应用适配大多数不同的屏幕尺寸。
13、使用文件夹结构
Android 的res文件夹结构非常强大, 它允许开发者更改图片、文字、布局文件、尺寸规格、颜色等资源。
14、160dp = 1英寸。320 dp = 2英寸。dp = dip。
15、你可以用这些目录结构技巧来应付所有资源类型。
比如xml布局用指定的大小来解决,例如layout-sw360dp目录可以适配目标宽是360dp的机型5、res资源命名规则:
16、如果你不想这样布局的话,可以采用 dimens.xml 文件。
如果你刚才用心看了,你就会发现刚才我的values目录里有很多dimens.xml,因为我更喜欢在布局文件里设置值
17、让空白大小大于图像大小,让图像大小大于按钮大小。
如果将按钮,多选框,切换控件放大后是很丑的。一个100dip(0.63″)大小的按钮是不想在平板上显示为原来两倍宽度200dip(1.25″)的,原因是屏幕变大了,但是这不代表平板是给巨人用的。我们可以这么做,在按钮和图片扩展的位置添加空白。
18、用GraphicalLayout工具快速预览。
GraphicalLayout是一种WYSIWG XML编辑器。不过我喜欢直接写代码,而不是拖放控件而丢弃的编程,但在添加一些元素之后,可以在GraphicalLayout的下拉选择菜单里选择不同屏幕尺寸进行测试。
19、不要对所有的图片进行缩放。
用布局文件来适应不同屏幕尺寸的方法只是成功的一半,布局里的控件(如:图片)也要能在高分辨率屏幕下良好展示。比较简单的方式就是创建一套完整的图片目录让它们与各种drawable目录进行匹配。
drawable-sw600dp-ldpi
drawable-sw600dp-mdpi
drawable-sw600dp-hdpi
drawable-sw600dp-xhdpi
drawable-sw600dp-xxhdpi等等…
然而其实并不需要这样做,一般来说有drawble-ldpi, drawable-hdpi等目录就足够了,并不需要将所有的都加上。
20、尽量避免使用位图(bitmap)(jpg、png)。
对于一些图标来说,位图是个不错的选择,因为它们使用简单。但是如果可以避免使用位图,你可以节省很多空间,采用不同的方法也可以达到很好的结果。
21、用XML进行绘图。
位图都可以用XML绘图来代替的,虽然XML绘图不是万能的,但是它的方便性还是使我感到震惊,在Android开发文档中有详细的介绍,
22、为什么要用9-patch(当你可以用xml、drawables的时候)?
Android具有使用.9文件来定义drawables的选择,有些教程阐述了怎样用它们来做一个按钮,这样可以在拉伸的时候保持几个边角的大小不变 (并且避免了像素处理)。如果你已经知道怎样使用.9,可能是从Web设计中学会的,那么它们或许值得一用。如果你对9-patches并不熟悉,建议你保持原样。如果你想适应一些诸如圆角或者颜色,这就像回到了图像编辑器的时代。许多用.9实现的效果也可以通过XML实现。
23、通过重写onDraw()方法实现自定义控件。
有些事情XML并不能完全实现,我们在OpenSignal和WeatherSignal中画过许多图像,为此有许多的库,但是我们要为自定义图像自己编写代码。这很有趣,或许你永远也不需要做这个,但为了使图像高度动态并实现自定义,这经常是唯一可行的办法。
24、在不能使用XML的地方使用SVG。
有时候覆盖onDraw()并勤勤恳恳的为自定义view编写代码画出需要的线条与弧线是过于技术化了。毕竟有一种矢量图像语言Scalable Vector Graphics(可扩展矢量图形)。它也是史上最酷的Android应用之一——Androidify的动力来源。事实上他们创建这个库就是为了那款应用,他们将它发布在这里:SVG for Android 。这也就是我们在OpenSignal中画仪表盘所用到的。
25、对SVG文件GZip压缩,将它们变得更小它们就会处理的更快。
26、SVG库也并非支持一切.
在一些特定的alpha通道中似乎不能正常工作,你甚至不得不在代码中将它们移除。
达到在Android所有版本里展示一致的目标
27、在一些android系统里(如TouchWhizz/HTC Sense/MotoBlur等等),默认的Button和其他UI组件会跟谷歌原生系统里的看起来差别很大。我希望这不是真的,但事实却是如此。
28、自定义UI控件。
为了保证你的app在所有的设备里看起来是一样的效果,你将需要自定义所有的东西。这其实没有你想象中那么难,只要你做到了,你将能更加好地把握你的app的展示外观。
29、Jake Wharton写的Android开源组件都是API向下兼容的精心杰作。更让人欣慰的是,ABS 拥有强大的功能用来定义ActionBar。
把响应速度作为目标
30、在运行慢的手机上测试。
你将在运行慢的手机上发现很多问题,即使它让你抓狂,因为没人会喜欢运行慢的程序。
31、尽量减少XML布局层次。
更多的层次意味着系统将为解析你的代码付出更多的工作,这将会让图像渲染的更慢。
32、用Android Lint检查程序。
在工程目录上右键选择Eclipse>Android Tools>Run Lint。它将会得到应用的一些相关信息,并能提高程序的运行速度,或者它能让你得代码更加清爽。
通过这32条Android开发方法,我相信你已经对于Android的屏幕适配有了一定得了解,把这些方法运用到你的开发中,你将有所收获!
每期开班座位有限.0元试听抢座开始!
温馨提示 : 请保持手机畅通,咨询老师为您
提供专属一对一报名服务。