杨碎明 薄博文
西安交通工程学院,陕西 西安 710300
浅谈android手机多屏幕分辨率问题及处理方法
杨碎明*薄博文*
西安交通工程学院,陕西西安710300
由于Android平台的开源、免费等特点,其以极快的速度风靡全球移动终端市场,但是也给开发人员带来了一个很大的问题,那就是各种移动终端分辨率不同,开发的软件要想在所有Android平台的移动终端上运行,这就需要用到多屏幕分辨率自适应的方法了。本文将介绍在开发中经常使用的几种自适应的方式,在实际开发中,开发人员可以根据实际情况选择最合适的方式.。
Android移动终端分辨率;处理方法
在Google中输入Android,可以获得14亿条以上的搜索结果,大部分是关于技术的文章、新软件的发布、市场占有的提升等振奋人心的信息。打开招聘网站,Android程序员需求与日俱增,同时薪酬也比同类开发人员高出不少。再看看身边,搭载Android系统的移动终端已经是随处可见。
(一)Android开源带来的机遇
Android平台的开源优势,无界限的应用程序、应用程序可以并行运行、应用程序可以轻松地嵌入网络。不管是给用户还是给应用程序开发人员,都带来了全新的体验。经过短短的3年多时间,Android手机的市场占有率已超过了nokia等老牌智能手机,取得了可喜的成绩。Android具有开源性,为开发者提供了良好的开发环境。同时随着Android的到来,为毕业大学生以及在IT其他行业的开发人员提供了非常好的机遇。
(二)Android开源带来的问题
Android与iphone的ios最大不同之处正在于Android是开源的、免费的,而ios则实施垄断。因此,在苹果ios开发的好处是不需要考虑手机的屏幕分辨率。这就为开发人员在带来机遇的同时带来了很多问题,怎样才能一次开发,所有的手机全部适用呢,而不必花费更多的时间去开发专门针对某个分辨率的版本。只有解决这个问题,开发出的程序才有普及的可能。
(一)屏幕尺寸(Screen size)
屏幕尺寸是指显示器屏幕对角线的尺寸,一般用英寸来表示,可测量显示器对角线长度转换为英寸即可(1英寸=2.54厘米)。
(二)分辨率(Resolution)
分辨率就是指屏幕上的点。在同样大小的屏幕里,组成图形的点越多,点就会越小,越小就会看起来越细腻,很多屏幕看起来很粗糙,有颗粒感,就是因为点少的原因。所以数字越高越清晰。例如320*480 320就是横向排列的点,480是纵向的,因为屏幕是长方形,长就是纵向,宽是横向。
(三)屏幕密度(Density)
是指这个屏幕在单位长度上能显示的像素点数,也就是一英寸上能显示的像素点数,计算方式就是分辨率除以物理尺寸。屏幕密度能反应设备的清晰程度。
分辨率的问题可以说是困扰Android开发人员的第一大难题,许多的前辈都针对这个问题作出了一些解决方案,大致分为3种:只要求全屏,不考虑变形问题;只考虑宽度缩放,上下留白,并且要求不可以发生变形;只考虑高度缩放,左右留白,并且要求不可以发生变形。
(一)只求全屏,不考虑变形
有一少部分应用程序或游戏,是不用考虑变形问题,只发生一些小小的变形是不会对用户产生影响的,但是其都有一个共同的特点,就是要求全屏显示。既然只是要求全屏显示,而不考虑变形问题,那么只要把图片等的宽度和高度分别按不同比例进行缩放,保证其充满屏幕即可。
(二)只考虑宽度缩放,上下留白,要求不变形
绝大多数的应用程序或游戏,是不允许变形的,但是还要求在屏幕上尽量的最大化,这就不能采用上面的方法了。假如要求宽度充满屏幕,那么只要高度缩放的时候也按照宽度的缩放比进行缩放即可,如播放影片的时候大部分影片的上下都有黑边,这就是所谓的上下留白了。
(三)只考虑高度缩放,左右留白,要求不变形
还有一些不允许发生变形的应用程序是要求高度充满屏幕的,同样只要在宽度缩放的时候也按照高度的缩放比进行缩放即可,在用这种方式进行缩放时,还有可能导致图片缩放后显示不全。
(一)屏幕分辨率和清晰度关系密切,也就是说屏幕分辨率越高,清晰度也越高,即其密度也应该越大,否则会看起来很不清楚,比如4寸的屏幕如果只有100个像素,这就像近距离看投影仪,或者看电影一样,非常模糊和不清晰。所以,Android主要是以屏幕密度来区分不同的设备:
高密度:hdpi(High dots per inch)
中等密度:mdpi(Medium dots per inch)
低密度:ldpi(Low dots per inch)
并且布局中强烈推荐使用密度无关单位dip或dp,来作为长度或者宽度的单位。
对于一般性的app应用程序,写一个布局文件在layout中,为三种密度准备图片drawable-hdpi,drawable-mdpi,drawable-ldpi,就足以应对80%的设备。
res/
drawable-hdpi/
ic_launcher.png
drawable-mdpi/
ic_launcher.png
drawable-ldpi/
ic_launcher.png
layout/
main.xml
resources.html
(二)采用自定义CustomView 类开发
CustomView 类自定义继承View
public class CustomView extets View{//..}
在完成View控件开发后,再修改 /res/layout/main.xml
最后在主控类Activity 启动时获取手机或模拟器的分辨率,并把屏幕的高度和宽度设置为当前手机的分辨率。
public class sample9_5 extends Activity{//..}
本文介绍了android 开源所带来的最大问题及解决方案,这对一个应用程序的生存周期来说是至关重要的,Android app多以dip或dp为单位,所以就必须注意不同密度上它们的对应关系。这样就更方便用dip来定义图片的长度和宽度。最后介绍如何开发自定义View,通过继承View类,来实现想要效果,方便开发。
[1]吴亚峰,于复兴编著.Android应用开发完全手册.人民邮电出版社.
[2]关朝辉,郭荷清,高伟.基于群决策的多Agent资源管理模型.《计算机应用与软件》,2009.
[3]Android实战技术:用Dimension解决多屏幕适配的问题-博客-云.
杨碎明(1971-),男,汉族,陕西宝鸡人,工程硕士,西安交通工程学院,软件设计师,研究方向:android手机开发技术;薄博文(1981-),女,汉族,陕西西安人,西安交通工程学院。
TN873
A
1006-0049-(2016)18-0245-01