关于适配,我想说。。。

来源:互联网 发布:c语言中左移右移 编辑:程序博客网 时间:2024/05/02 04:35



QQ拼音截图未命d名.png
看到上面的图,亲,你熟悉吗。亲你头晕吗。心里有说不出的滋味吧。
我们再来看一张统计数据。
QQ拼音截图sss未命名.png
没错。这就是我们android程序员苦恼的地方之一——屏幕适配。不像苹果,android因其开源性,不管是国外,还是国内,纷纷出自己的手机,更传言罗永浩也要。。。。
    展望未来说不定我们人人都可以DIY自己的手机。。。。扯远了哈。、

先说说手机基本的屏幕吧。
QVGA = 320 * 240;
WQVGA = 320 * 480;
WQVGA2 = 400 * 240;
WQVGA3 = 432 * 240;
HVGA = 480 * 320;
VGA = 640 * 480;
WVGA = 800 * 480;
WVGA2 = 768 * 480;
FWVGA = 854 * 480;
DVGA = 960 * 640;
PAL = 576 * 520;
NTSC = 486 * 440;
SVGA = 800 * 600;
对于android屏幕的适配问题,我想界内人士基本都很默契的达成一致。
采用官方的分包建立不同的皮肤。
采用layout_weight。
Web网页开发
与ScrollView的结合。
使用android特有的9.png。
一.对于官方的建议
我们不得不了解一些Android系统的长度单位:
px:像素,终端上的一个物理像素点,例如,480*800的屏幕在横向有320个象素,在纵向有480个象素。
dip(dp):与终端上的物理像素点无关,是一种基于屏幕密度抽象单位,被称作“设备独立像素”,会随着屏幕的密度进行自动的大小调整.
sp:比例像素,主要处理字体大小,可以根据用户的字体大小首选项进行缩放.
in:英寸,标准长度单位
mm:毫米,标准长度单位
pt:磅,标准长度单位,1/72英寸、
不过,也有app是采用只要对一种屏幕设计一套UI,Android总能通过放大或者缩小来适应屏幕来保证设计意图,这个前提是布局里的单位是dip。也算是一种创意吧。
二.Layout-weight堪称android布局的神器
layout_weight 用于给一个线性布局中的诸多视图的重要度赋值。 所有的视图都有一个layout_weight值,默认为零,意思是需要显示 多大的视图就占据多大的屏幕空 间。若赋个高于零的值,则将父视 图中的可用空间分割,分割大小具体取决于每一个视图layout_weight 值以及该值在当前屏幕布局的整体 layout_weight值和在其它视图屏幕布 局的layout_weight值中所占的比率而定。 layout_widthfill_parent时,对于一个组件,该组件相对于其它组件的layout_weight值越小时,它的宽度相对于其它组件越大。但最大不超过fill_parent
layout_widthwrap_content时,对于一个组件,该组件相对于其它组件的layout_weight值越小时,它的宽度相对于其它组件越小。但最小不小于wrap_content


三.人们常说一个优秀的android攻城狮,必定是一个优秀的web开发工程师。
android的适配也可以通过采用HTML5CSS3制作界面,然后在WebView视图上进行显示,然后通过JavaScript进行事件的交互是一种很不错的开发技巧。而且现在javascriptandroid可以完美交互,实在是不错的选择。
而且现在已经有比较成熟的开发平台使用 HTML5+CSS3+JavaScript+Rexsee扩展的API 。其号称即使不会android只要会web开发的就能在一分钟搞定android,虽然很夸张,但是也是有点道理的。
神奇的是现在的JQuery也出了jQueryMobile。他的Write less ,do more。理念再次在手机上得到了印证http://jquerymobile.com/
QQ拼音截图未命名.png
上面如此复杂的布局,其实html语言也就那么几句。
好玩的是,官方网站上提供了设计界面的小工具,有空的话可以体验一下。
android web开发的还是推荐使用jQuery。力挺!!!

最后,与ScrollView的结合是让屏幕不在限制,不过需要来回滑动,与用户的交互性不是很好,好的交互性才是app的王道啊。
使用android特有的9.png。9.png。又一种很神奇的android资源,能根据内容自动缩放,也是很好用的工具。
好了,关于适配没有哪个app敢说完美适配,我们能做的就是尽量吧。
虽然适配的方法有很多,不过个人觉得weight和web开发,还是比较好用的。

特别注意
Android毕竟是有限的硬件资源,优化更是重中之重。布局也是。
通过inflateActivity中布局是个有性能消耗的过程。每增加一个嵌套的布局和视图都会对应用的性能造成很大的影响。
总之,好的实践是尽量保持布局尽可能简单,尤其是要避免嵌套inflate操作整个新的布局,这是为更新已经存在布局的小变化。
以下几点是包含在Android最佳实践指导原则里的,当然并不绝对:

  • 避免不必要的嵌套:不要把一个布局放置在其他布局里,除非是必要的。
  • 避免使用太多视图:在一个布局中每增加一个新的视图,都会在inflate操作时耗时和消耗资源。任何时候都不要在一个布局中包含超过80个视图,否则,消耗在inflate操作上的时间会很大。
  • 避免深度嵌套:布局可以任意嵌套,这极易于创建复杂和深度嵌套的布局层次。如果没有硬性限制,将嵌套限制在10层以下是好的实践。
优化布局层次,比如减少没效率的或者不必要的嵌套布局,是十分重要的。
Android SDK包含了layoutopt,一个命令行工具,来辅助这个优化工作。运行该命令,参数是布局文件或者布局文件的目录,将分析并给出改善的建议。

2。网友传言三星的猎户座处理器兼容性不是很好。软件的运行必须要考虑到硬件。
l以下是网友总结的三星i9100运行游戏时候出现的情况:
《近地联盟先遣队2》(N.O.V.A 2) ——看到标题画面后就退出《地城守护者》(Dungeon Defense) —— 一半画面不见了《地牢猎手2》(DungeonHunter 2) ——看到标题画面后就退出《不朽的神迹》(Eternal Legacy) ——看到标题画面后就退出《狂野飙车5》(Asphalt6) ——看到标题画面后就退出《速度与激情5》(Fast andFurious 5) ——看到标题画面后就退出《阿凡达》(Avatar) ——所有物体都变成白色《背刺》(Backstab) ——看到标题画面后就退出《极品飞车13:变速》(NFSShift) ——看到标题画面后就退出《奥秘2》(Mystique 2)——游戏画面没有任何渲染《美式足球高清版》(Back Breaker) ——看到标题画面后就退出《奇幻飞翔2》(Glyder 2)能进入游戏,但控制全是反的《罪恶之城》(Gangster) ——所有物体都变成白色《孤侠魅影》(Shadow Guardian HD) ——看到标题画面后就退出《武士2:复仇》(SamuraiII: Vengeance) ——看到标题画面后就退出《模拟人生3》(Sims 3) ——看到标题画面后就退出
原创粉丝点击