多屏幕分辨率/宽高比(游戏)
编辑:感谢您的所有答案和评论。 思考一下后,我会把问题的核心部分改为:“如何确定和限制我的游戏能够运行的最小分辨率/比率”。 因为imo游戏在最小的屏幕/比率(缺less细节)上变得无法玩,或者即使是最小的屏幕/比率也会显着降低所有其他游戏的体验。 此外,我们甚至不知道最小的分辨率是什么,或者可以以任何方式限制它,除了禁用ldpi …这仍然没有告诉我们有关最小的mdpi。 毕竟,我并没有想如何创造一个好的结果,而是如何创造一个完美的结果;)。 猜猜这是不可能的(但?)。
注意:这纯粹是关于手机而不是平板电脑此外这个问题与应用程序没有关系,因为它是不使用Android布局系统的游戏。
我总是发现哪些决议的定义有些模糊。 我知道文档中的列表 。
现在我的第一个问题是,如果这个清单是完整的,换句话说,是制造商允许使用其他分辨率或长宽比。 我目前的做法是根据纵横比来查看这个列表,看起来像这样(不知道是否确切,但你明白了):
- ldpi:最小长宽比4:3
- mdpi:最小长宽比3:2
- hdpi:最大宽高比16:9
所以,如果我想涵盖一系列的设备,我想出我最小的和我最大的长宽比,并devise最小的布局,同时使其自动增长到最大。 例如,如果我想支持所有的密度,我devise了4:3的屏幕,并使其增长到16:9。 如果我删除ldpi的支持,我会devise3:2。 当然,这里假设永远不会有宽高比为4:3的mdpi设备,这使我们回到了第一个问题。
我的首选解决scheme是在Android电子市场上指出我的应用程序可以处理哪些宽高比,但目前为止似乎不可能。
有没有人有更好的方法? (请记住,这只适用于手机上的游戏)
我不能直接回答你的问题,但我想告诉你我的方法。 我尽量不要用任何数字。 相反,我尝试使用填充,边距和相对布局,以便我的视图在任何手机上正确显示。 它也帮助我避免为不同的方向创build视图。
正如前面提到的许多人一样,我的方法也将充分利用与设备无关的组件,如paddins,margin和relativelayout,以及Device independet puxels。
坦率地说,我希望我不是唯一的,但充分利用DIP的(设备独立像素)和相对布局等…已经减less了我的活动布局文件1,而不是3种不同的活动为HDPI,MDPI和LDPI。
如果您真的关心宽高比,您可以随时调用设备像素的显示属性,并根据这些数字进行适当的布局计算。 您可以在第一个活动的onCreate方法开始时调用它。
Display display = getWindowManager().getDefaultDisplay();
int displayWidth = display.getWidth();
int displayHeight = display.getHeight();
这将以像素为单位给出硬件siplay的宽度和高度值。 在我看来,select3种布局types的真正原因是为了确保图像分辨率保持足够的清晰度。
有了这些数字,你可以做出一些内部的逻辑,计算出什么types的决议图像加载在某些小部件。 从而节省您制作3次相同布局的麻烦….
也许解释有点神秘,但克服各种设备解决scheme的主要事情是工作了很多:
- relativelayouts
- 设备独立像素
您还可以在XML布局中定义DIP,因此每种组件在每种types的设备上都是相同的。
也许是一个愚蠢的例子,但嘿,它为我工作:-)在这里下面我试图让textview上的文字大小在所有设备上相对相同。 您可以调用“TypedValue”类,并从中提供的众多公共variables中select一个。 由于我想使TextView处于相同的相对大小,我使用下面的代码:
someTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 18);
这个数字是为了设置DIP的大小应该是多大。 TypedValue可用于需要维度属性的INT值的许多窗口小部件或活动组件。 玩这个,你会看到它使生活变得更容易:-p
希望这个答案有所帮助
我find了明确的答案。
最低分辨率在3.0之前是未定义的。 因此,对于3.0及更高版本,将有可能select最低分辨率,基于此devise一个游戏,并按照superM和其他人提到的大屏幕/比率dynamic地增大布局。
当您为不同的屏幕尺寸devise用户界面时,您会发现每个devise都需要最小的空间。 因此,上面的每个通用屏幕尺寸都有一个由系统定义的相关最小分辨率。 这些最小尺寸是以“dp”为单位的 – 在定义布局时应该使用相同的单位 – 这可以让系统避免担心屏幕密度的变化。
- xlarge屏幕至less960dp x 720dp
- 大屏幕至less640dp x 480dp
- 正常屏幕至less为470dp x 320dp
- 小屏幕至less426dp x 320dp
注意:这些最小屏幕尺寸在Android 3.0之前还没有定义好 ,所以您可能会遇到一些在正常和大型之间错误分类的设备。 这些也是基于屏幕的物理分辨率,因此可能因设备而异 – 例如,使用系统栏的1024×720平板电脑实际上由于系统栏使用了较less的空间,因此应用程序可用空间较小。
资源
没有详尽的宽高比列表。 制造商可以决定他们的感觉。 最重要的是,纵横比与像素密度不匹配,因此使用ldpi / mdpi / hdpi来决定纵横比可能不是一个好主意。
你处理这个问题的策略真的取决于你的游戏。 当然,在某种程度上,你应该简单地把所有东西都放大/缩小,但是很明显,棘手的部分是不同纵横比的边缘。 某些游戏(第一人称射击游戏,侧边滚动游戏,平铺自上而下的游戏等),只要不担心给某些设备带来好处,就可以提供不同的视野而没有太多问题其他人可能会考虑在背景上使用可拉伸或平铺的graphics,并保持相同的有效(缩放)的播放区域。
你可以试试GameDev.stackexchange.com
这是一个类似的问题,为您的: build立一个不同的resoulution电话游戏
您可以根据屏幕分辨率限制哪些设备可以在市场上看到您的游戏: http : //developer.android.com/guide/appendix/market-filters.html
我还没有深入研究,但是不幸的是我看不到任何宽高比的提及,所以你可能需要填写你所知道的所有工作。
如果不这样做,你可以设置一个你需要的graphics的最低分辨率,如果你不想为较小的比例改变游戏,你可以添加黑色的边框,就像他们在游戏机上所做的一样。 但不build议手机屏幕空间足够宝贵,所以如果您用黑色条切割游戏区域,我会将您的HUD移动到黑色区域,以便您尽可能多地使用屏幕。
在这里有更多关于支持屏幕尺寸的信息: http : //developer.android.com/guide/practices/screens_support.html
:D