手机APP五大秘技之适应手机屏幕
编程学堂
开发手机APP,如果不考虑手机屏幕分辨率,就有可能影响APP的显示效果,甚至出现程序界面超出屏幕的情况。因此手机APP一定要考虑手机屏幕分辨率。
常见手机屏幕分辨率
PC平台的屏幕分辨率较为统一且屏幕比较大,不用担心容不下软件界面,而手机平台屏幕分辨率多种多样(以Android手机为例,常见的屏幕分辨率就有240×320、320×480、480×800和480×854四种),因此手机APP不得不靠虑手机屏幕分辨率,以避免软件界面超出手机屏幕的情况出现,并在不同分辨率下获得良好的效果。
由于Android系统自带的UI控件,通过它设计的界面不需要经过特殊处理就可以自动适配各种不同屏幕大小的手机。本种方式适用于对界面要求不高的手机APP。如果不是Android又怎么办呢?
可以考虑制作可移植版本的APP程序 ,这样的程序要用到以下技术:
●在代码中使用相对坐标,例如各个界面元素的坐标都是相对于上一个元素的坐标增加一个高度或宽度。
●声明专门的变量存储图片的宽高,这样只需要在程序开始时获得一次宽度和高度,然后就可以用于后续的界面绘制和事件判断了。
●声明专门的方法初始化变量
●把移植时需要改变的变量初始值放在一个方法内部,便于代码的修改。
●在事件处理中使用变量名而不是直接使用数值进行逻辑判断
●使用相对布局而不是绝对布局AbsoluteLayout
方便移植的程序结构
本例的目的是展示一种方便移植的程序结构。新建一个工程,在Eclipse中选择“File→New→Android Project”打开新建项目窗口,然后设置application name为UIDemo,package name为com.javamestudio.android.UIDemo,Create Activity为UIDemoActivity,再点击“File→New→Class” 新建一个类名为UIDemoView的类。
接着,在UIDemoView类中覆盖onDraw,并添加界面绘制代码。最后,编写支持移植的屏幕代码即可(完整代码下载地址:http://www.icpcw.com/bzsoft):
//绘制点击区域
paint.setColor(Color.WHITE);
canvas.drawRect(new Rect(startX,startY,startX + areaWidth,startY + areaHeight), paint);
//使用相对坐标,方便界面移植
canvas.drawText("当前你点中了" + count + "次!", startX, startY + areaHeight + 16, paint);
}
作者简介
