李华明Himi原创,转载务必在明显处注明:
转载自
【黑米GameDev街区】原文链接:
http://www.himigame.com/android-game/356.html
刚才一群里的兄弟问的一问题,稍微研究下,这里一起分享:新建的Emulator -配置为:WAGA800 其分辨率是 800*480 的设备模拟器,当我们程序中在取得其 Height和 Width的时候发现,总是 320*533 ,明显是系统对我们撒了谎!如下图:
下面是官方文档原文:
http://androidappdocs.appspot.com/guide/practices/screens_support.html
那么为什么系统会对其分辨率进行撒谎呢? 其作用是什么呢?
简单的来说,在SDK1.6 (sdk version 4)以后,Android 增加了新功能“支持多屏”,所谓这项新功能也就是为了让我们的游戏、软件能在不同的分辨率,不同机型上一样流畅、玩美运行,其作用一来减轻我们的移植工作量,二来更好的体现Android 越来越强劲的势头。
自适应效果如下图:(WVGA高密度(左),中密度的HVGA(中),低密度和QVGA(右)
在不同的分辨率上想玩美的跑起来一款游戏和软件,有两种方式,一种是我们做游戏的时候都做成自适应屏幕的游戏方式,比如我们取坐标都根据屏幕的宽、高、图片的宽、高等等而不是写成死的位置坐标。 第二种那就是Android os 在1.6以后的这种自适应技术;
但是有些时候显然Android提供的这种自适应有时候我们不需要,或者说不太适合我们的开发,(其实这也类似于现在的游戏引擎,很多人都在问我开发游戏用什么引擎,其实公司都有自己的引擎。我自己写游戏一般不使用他人引擎(自己写引擎),因为没有一款游戏引擎适应所有的游戏类型开发,例如用RPG的引擎去做个益智连连看?是不是搞了点 - -...当然现在市面上已经有不少的游戏开发引擎,但是使用别人的游戏引擎,对于开发来说,虽然提高了开发效率,缩短了开发周期,但是对于其扩展性不得不说很是头疼的一件事情,so~建议大家去吸收这些开源引擎的知识和技术,自己整理出一份属于自己的游戏引擎,毕竟自己的扩展起来就容易多了!而不能去一谓的去使用和强加灌输别人的思维方式到自己脑中)咳咳、回到主题上来,刚才说了,有时候我们并不想使用Android os 提供的自适应,而是我们自己去写自适应,这样更加的灵活.
下面给讲解如何避开Android os的自适应的方法:
先来看下官方的一段话:
这里是从官方文档中截取的一段,这里是在说,当Android sdk的版本是4或更低与版本为5或更高的之间的区别;
那么从这里可以得知Android sdk 1.6(version 4)之前是不支持自适应的,那么解决的方法也就有了;
我们只需要在AndroidMainFest 中,定义 <uses-sdk android:minSdkVersion="4" /> 就OK了!
然后我们看看修改后xml后的运行截图:
这样就正常啦, 这里呢我要给大家道个歉,大家也看到了,最近也没有更新文章,主要原因是一个回老家过年,今天刚回到公司第一天上班,第二点是由于出书的缘故,已经签下了《清华出版社》的合同,将大概在上半年完成一本关于Android 游戏开发书籍,so~大家也体谅一下我,当然博客我肯定是还要更新的,不过速度不会跟以前一样快了。
这里还要说下,我写的这21篇文章,基本上对于学习游戏开发都是很实用很有用的,希望大家一定要细细的看,因为不少人问的都是写过的东西 - -;如果大家还有什么疑惑和问题可以来群里进行交流和互相学习。
OK 就写到这里,自己会尽快完成书籍,让大家早点看到。
_________________>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
本文补充:看到有些网友的回复,大概还存在两个问题。下面来逐一进行分析;
第一:
" 一般来说800X480的density为240, 这样得到的系数大小为240/160,
所以320X533再乘上1.5就是正确的像素,这个需要结合屏幕的density来计算。
"
这段话说的没错,(公式的由来官方api 文档中有写)Android SDK 1.6 以上才可以通过canvas.getDensity(); 得到密度,canvas.setDensity(240);设置密度,但是很多群友设置过密度的都知道这根本没有任何的效果。然后我就想通过利用比值去对canvas进行缩放处理处理画布使其回到正确的分辨率(像素),虽然目的达到了,但是发现失真效果很严重。所以我认为还是用xml定义minSdkVersion 的方式方便、实用。但是又出现了下一个问题:
第二:
“ <uses-sdk android:minSdkVersion="4" /> ,加了这句话之后SDK=3时候(也就是SDK 1.5的时候),
做出来的APK不就装不成了吗?
”
没错,我们一旦定义了应用程序运行的最低版本,那么低于此版本的都无法安装此应用,但是除了利用密度比值,现在我也没有其好的解决方案。
总结:先说一句,我们这种使用定义应用程序运行的最低版本的方式来解决,存在两种弊端:
第一: 低于1.6sdk无法安装程序。
第二:影响高版本的功能,例如我们的BlueTooth(蓝牙)是在2.0+的api中才有的。
但是可以利用密度比值,但是最好不要,毕竟失真严重。
有的童鞋说利用在项目的AndroidManifest.xml中定义这些属性:
android:normalScreens="true"
android:smallScreens="true"
android:anyDensity="true"
这些是一些开关,比如是否支持小屏幕、是否支持任意密度等等,但是通过尝试发现效果不理想,甚至没效果;
可能是使用的方法不对,希望对这方面比较深入探究的童鞋可以将心得分享出来供大家讨论学习;
如果各位童鞋还有什么的好的建议和方法可以通知我、谢谢。
分享到:
相关推荐
简单的来说,在SDK1.6以后,Android增加了新功能“支持多屏”,所谓这项新功能也就是为了让我们的游戏、软件能在不同的分辨率,不同机型上一样流畅、玩美运行,其作用一来减轻我们的移植工作量,二来更好的体现...
然而,在开发过程中,开发者有时会遇到设备分辨率“谎言”的问题。当在模拟器或某些设备上获取屏幕尺寸时,实际得到的值可能与设备的真实分辨率不符。这是由于Android系统为了实现跨设备的兼容性和自适应性,从1.6...
不可不知的谎言秘笈:揭开谎言的秘密谎言无处不在。你可能不会说谎,但千万不能不会识谎,否则下一秒你就有可能被说谎者算计。这是一本让说谎者无比恐惧的书,也是诚实者最好的护身法宝。与其他同类书相比,本书中...
FTP(File Transfer Protocol)是一种广泛使用的网络协议,用于在互联网上进行文件传输。"谎言FTP密码修改器"根据其名称,可能是一个工具,允许用户修改与FTP服务器相关的密码。然而,需要注意的是,自行编写这样的...
《HTML5 Canvas核心技术图形动画与游戏开发》此书为...本书从基础知识,绘制,文本,图像,视频,动画,精灵,物理效果,碰撞,游戏开发,自定义控件,移动平台开发的目录形式由简单到难的进行学习H5 Canvas核心技术
【始于谎言的美妙青春】这篇文章讲述了一个高中生因为中考成绩平平,为了不让父母失望和避免在新学校的尴尬,他选择了一个不光彩的手段——预先获取试卷,并因此在第一次大考中取得了优异的成绩。这个谎言让他成为了...
这个PPT教案通过辩论的形式,旨在引导学生深入探讨诚信的重要性以及在特定情况下善意的谎言是否合理,从而促进学生对这一道德议题的全面理解。 首先,我们必须明确诚信的含义。诚信是一个人最基本的道德品质,它...
《谎言,该死的谎言或统计数据:如何用统计数据说实话》是一本为本科生设计的免费统计学教科书,作者是科罗拉多州立大学普韦布洛分校的数学与物理学系教授Jonathan A. Poritz。本书旨在教授读者如何正确理解和使用...
在《20个令无数家长困惑问题的解决方案实用.pdf》这本书中,作者旨在为父母提供一系列实际有效的亲子教育策略,解决他们在育儿过程中遇到的各种难题。这本书以口语化、易理解的文字,介绍了20个常见的家庭教育问题...
ERP使用前后对比 ERP使用前 、工厂环境 脏乱差、难治理、灰尘大 二、企业管理 碎片化、报表化、信息慢 三、客户服务 靠电话、靠等待、靠谎言 四、销售服务 靠道歉、催生产、听骂声 五、生产运输 比脑力、拼经验、...
引擎的谎言 具有3D图形的2D游戏引擎。 用C语言编写,编译成库 被编译为要与各个游戏链接的库。 可以在以下位置找到文档: : 库使用: : SDL用于图形模式,图像加载,音频和字体渲染 PhysFS,用于从压缩中加载 ...
在【部分内容】中,阐述了善意谎言的定义、作用以及其与诚信之间的关系。 首先,善意的谎言被认为是出于美好愿望的表达,它们可以促进理解、尊重和宽容,对于他人的幸福和希望有着积极的影响。当一个人为了他人的...
面对这些行业内的“谎言”,明智的培训经理和人力资源经理应当更加谨慎地评估培训公司的承诺,深入了解课程内容,要求更具体的定制方案,以及更实际的解决方案。同时,对于课程效果的评估也不应仅仅依赖于表面的互动...
【五年级英语作文善意的谎言TheWhiteLie】这篇文稿主要探讨了在特定情况下使用善意的谎言这一道德议题。文章通过一个生活中的实例,展示了如何在尊重诚实原则的同时,运用善意的谎言来达到良好的目的。 首先,我们...
而“最成功的说谎者是那些使最少量的谎言发挥最大的作用的人”(塞·巴特勒)则指出了一种说谎的技巧,即通过精心挑选和使用谎言,以期达到最大的效果。 相对于谎言,诚实的价值更为人们所推崇。“男人生来就会撒谎...
Endpoint Security Solutions的Market Hype是指各种Endpoint保护解决方案的宣传和marketing策略,旨在吸引客户购买他们的解决方案,而不一定关心实际的保护效果。本文将探讨Endpoint Security Solutions的Hype,揭露...
本次辩论赛中,反方团队力主善意谎言并不会妨碍诚信,并从多个角度阐述了他们的论点。 首先,反方团队认为善意谎言是一种保护行为。生活中存在许多场景,在这些场景中,直言不讳可能给他人带来不必要的伤害或精神...
本压缩包提供的“狼人杀休闲游戏微信小程序模板源码”是专门为微信小游戏设计的一套开发资源,它允许开发者快速搭建属于自己的狼人杀游戏小程序,无需从零开始编写代码,大大节省了开发时间和成本。 狼人杀,一款广...
这些父爱的谎言,虽然隐藏着家庭的困境与父亲的苦心,却展现了父爱的伟大与深沉,以及它在孩子成长过程中的积极意义。 文章《父亲的谎言》中提到的谢娜,其父亲在经济窘迫时,选择用谎言支撑女儿的学业。在那个物质...
《初中语文文摘:人生谎言与真相》 在我们的生活中,谎言与真相是两个不可或缺的概念,它们如同硬币的两面,共同构成了社会交往的复杂性。初中阶段的学生正处在世界观形成的关键时期,理解这两者的关系对于他们的...