Android os设备谎言分辨率的解决方法_第1页
Android os设备谎言分辨率的解决方法_第2页
Android os设备谎言分辨率的解决方法_第3页
Android os设备谎言分辨率的解决方法_第4页
Android os设备谎言分辨率的解决方法_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

精品文档-下载后可编辑Androidos设备谎言分辨率的解决方法

Android是基于Linux内核的操作系统,是Google公司在2007年11月5日公布的手机操作系统。早期由原名为"Android"的公司开发,谷歌在2005年收购"Android.Inc"后,继续进行对Android系统开发运营,它采用了软件堆层(softwarestack,又名以软件叠层)的架构,主要分为三部分。底层Linux内核只提供基本功能,其他的应用软件则由各公司自行开发,部分程序以Java编写。2011年初数据显示,仅正式上市两年的操作系统Android已经超越称霸十年的塞班系统,使之跃居的智能手机平台。现在,Android系统不但应用于智能手机,也在平板电脑市场急速扩张。

刚才一群里的兄弟问的一问题,稍微研究下,这里一起分享:新建的Emulator-配置为:WAGA800其分辨率是800*480的设备模拟器,当我们程序中在取得其Height和Width的时候发现,总是320*533,明显是系统对我们撒了谎!如下图:

下面是文档原文:

/guide/practices/screens_support.html

那么为什么系统会对其分辨率进行撒谎呢?其作用是什么呢?

简单的来说,在SDK1.6(sdkversion4)以后,Android增加了新功能"支持多屏",所谓这项新功能也就是为了让我们的游戏、软件能在不同的分辨率,不同机型上一样流畅、玩美运行,其作用一来减轻我们的移植工作量,二来更好的体现Android越来越强劲的势头。

自适应效果如下图:WVGA高密度(左),中密度的HVGA(中),低密度和QVGA(右)

在不同的分辨率上想玩美的跑起来一款游戏和软件,有两种方式,一种是我们做游戏的时候都做成自适应屏幕的游戏方式,比如我们取坐标都根据屏幕的宽、高、图片的宽、高等等而不是写成死的位置坐标。第二种那就是Androidos在1.6以后的这种自适应技术。

但是有些时候显然Android提供的这种自适应有时候我们不需要,或者说不太适合我们的开发,(其实这也类似于现在的游戏引擎,很多人都在问我开发游戏用什么引擎,其实公司有自己的引擎。我自己写游戏不用引擎,因为没有一款游戏引擎适应所有的游戏类型开发,例如用RPG的引擎去做个益智连连看?是不是搞了点--…当然现在市面上已经有不少的游戏开发引擎,但是使用别人的游戏引擎,对于开发来说,虽然提高了开发效率,缩短了开发周期,但是对于其扩展性不得不说很是头疼的一件事情,so~建议大家去吸收这些开源引擎的知识和技术,自己整理出一份属于自己的游戏引擎,毕竟自己的扩展起来就容易多了!而不能去一谓的去使用和强加灌输别人的思维方式到自己脑中)咳咳、回到主题上来,刚才说了,有时候我们并不想使用Androidos提供的自适应,而是我们自己去写自适应,这样更加的灵活。

下面给讲解如何避开Androidos的自适应的方法:

先来看下的一段话:

这是从文档中截取的一段,意思是在说,当Androidsdk的版本是4或更低与版本为5或更高的之间的区别;

那么从这里可以得知Androidsdk1.6(version4)之前是不支持自适应的,那么解决的方法也就有了;

我们只需要在AndroidMainFest中,定义《uses-sdkandroid:minSdkVersion="4"/》就OK了!

然后我们看看修改后xml后的运行截图:

这样就正常啦。本文补充:看到有些网友的回复,大概还存在两个问题。下面来逐一进行分析;

:"一般来说800X480的density为240,这样得到的系数大小为240/160,所以320X533再乘上1.5就是正确的像素,这个需要结合屏幕的density来计算。"

这段话说的没错,(公式的由来api文档中有写)AndroidSDK1.6以上才可以通过canvas.getDensity();得到密度,canvas.setDensity(240);设置密度,但是很多群友设置过密度的都知道这根本没有任何的效果。然后我就想通过利用比值去对canvas进行缩放处理处理画布使其回到正确的分辨率(像素),虽然目的达到了,但是发现失真效果很严重。所以我认为还是用xml定义minSdkVersion的方式方便、实用。但是又出现了下一个问题:

第二:"《uses-sdkandroid:minSdkVersion="4"/》,加了这句话之后SDK=3时候(也就是SDK1.5的时候),做出来的APK不就装不成了吗"

没错,我们一旦定义了应用程序运行的版本,那么低于此版本的都无法安装此应用,但是除了利用密度比值,现在我也没有其好的解决方案。

总结:先说一句,我们这种使用定义应用程序运行的版本的方式来解决,存在

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论