我的游戏在7英寸平板电脑上表现最佳,在10英寸平板电脑和5英寸三星Note尺寸设备上感觉非常好。对于像Nexus 4手机或S3这样大小的东西,它甚至可以玩得很开心。玩任何小东西都没有任何乐趣。在这种情况下,如何编写Manifest,以便它可以安装在从4.7英寸设备到10英寸平板电脑的任何设备上,同时受限于较小的手机?
修改
退一步,这个问题的原因是因为我发现Android开发者网站上的文档令人难以置信地混淆和冲突。让我们举一些例子来说明混淆的来源:
让我们举几个不同的设备。
Droid 3
查看支持屏幕的文档,我们可以推断......
然而,这个设备远远小于我想要支持的设备......但是文档看起来好像是3个计数中的2个,这个设备有一个“大”屏幕。对这个术语没有明确的定义是一个4英寸的屏幕“大”。现在,让我们进一步......
Nexus 4
查看支持屏幕的文档,我们可以推断......
同样,没有理智的定义是一个4.7英寸的屏幕“xlarge”...屏幕的大小可能足够大使游戏愉快,但它是一个“中等”屏幕?一个“大”的屏幕?你怎么可能知道?
上述两部手机都是“中型”吗?当Nexus“大”时,Droid会“中等”吗?为什么或者为什么不?如果Nexus是“大”,那么与7英寸平板电脑有什么不同呢?这款平板电脑也应该是“大型”?
然后事实是文档声称支持屏幕/尺寸从3.2开始被弃用
但是,如果想要支持旧手机(假设适当的物理屏幕尺寸,以英寸为单位)和新平板电脑,或者如果它在树林中隐藏得很好,那么就没有明确指导如何使用它。有人可以清楚地列出什么 cretieria真的很重要为什么给定的设备适合给定的过滤器或失败?
答案 0 :(得分:6)
我认为根据Google文档,这将满足您的要求(5"和更小):
<compatible-screens>
<screen android:screenSize="large" android:screenDensity="ldpi" />
<screen android:screenSize="large" android:screenDensity="mdpi" />
<screen android:screenSize="xlarge" android:screenDensity="ldpi" />
<screen android:screenSize="xlarge" android:screenDensity="mdpi" />
<screen android:screenSize="xlarge" android:screenDensity="hdpi" />
<screen android:screenSize="xlarge" android:screenDensity="xhdpi" />
</compatible-screens>
或者使用它(4.7&#34;和更小):
<supports-screens android:smallScreens="false"
android:normalScreens="true"
android:largeScreens="true"
android:xlargeScreens="true"
android:requiresSmallestWidthDp="536" />
我推荐第二种方法,因为它更准确。
如何计算536?基于http://developer.android.com/guide/practices/screens_support.html我们有(身高x宽度):
(720 - 480)/(7 - 4)= 80,480 +(80 * 0.7)= 536
并且不要担心&#34;已弃用警告&#34;,因为新推荐的方法适用于平板电脑应用程序(IMO),其中UI不是全屏的,屏幕底部和顶部的一些空格占用标题-bar和/或后退,菜单等按钮,而您的游戏可能以全屏模式运行。
从http://developer.android.com/guide/practices/screens_support.html#DeclaringTabletLayouts的Google文档中查看此内容:
注意:使用这些限定符指定的尺寸不是实际的屏幕尺寸。相反,尺寸是以dp为单位的宽度或高度,可用于您的活动窗口。 Android系统可能会将某些屏幕用于系统UI(例如屏幕底部的系统栏或顶部的状态栏),因此某些屏幕可能无法用于您的布局。因此,您声明的大小应该特别关注您的活动所需的大小 - 系统会在声明为布局提供多少空间时考虑系统UI使用的任何空间。还要注意操作栏被视为应用程序窗口空间的一部分,虽然您的布局没有声明它,因此它减少了布局的可用空间,您必须在设计中考虑它。
答案 1 :(得分:3)
不幸的是,没有办法根据他们的物理过滤掉设备。尺寸,这就是你想要的。
有两个原因。
供您参考,让我向您展示根据逻辑密度和屏幕像素数确定屏幕尺寸的内部逻辑。
答案 2 :(得分:1)
在这种情况下,如何编写Manifest,以便它可以安装在从4.7英寸设备到10英寸平板电脑的任何设备上,同时受到小型手机的限制?
从技术上讲,你不能。
android:requiresSmallestWidthDp
最接近您期望的目标。由于这是在与密度无关的像素中测量的,并且由于与密度无关的像素应该是1/160英寸,因此您可以通过乘以160得出任意数英寸的dp
值。
但是,根据您的要求,这并不是指对角线。这指的是最短边的宽度(例如,纵向宽度,横向高度)。
因此,如果您可以根据最小宽度重新表达您的愿望,请使用android:requiresSmallestWidthDp
,并且在引用Google Play是否尊重它时,请注意文档是搞砸了。您可以确定当您将应用程序上传到Play商店开发者控制台并查看哪些设备支持它时 - 找到一些您知道的设备太小(但应该运行您的应用程序)并查看它是否已过滤。
如果android:requiresSmallestWidthDp
的文档是正确的,并且Play商店忽略它以进行过滤(grrrrr ...),那么你基本上已经搞砸了。下一个最接近的解决方案是根据其他答案使用<compatible-screens>
,声称您只支持large
和xlarge
屏幕尺寸。这将淘汰你想支持的范围低端的各种设备,但normal
屏幕尺寸比你想要的要小得多(低至3“对角线)。
BTW,normal
对角线为3“-5”,因此Droid 3为normal
,而不是large
。像素尺寸与屏幕尺寸完全无关。
答案 3 :(得分:0)
似乎在实际应用中没有正确的方法。而且我同意你的看法,即android开发指南是多么令人困惑和矛盾。根据我的经验,对于这类事情的一个很好的解决方法是,当您在开发者控制台中发布它时,只需更改哪些设备可以运行您的应用程序。我做了一个快速浏览,并在这里找到了一个类似的问题:
Filter the device screen size on the Android Market
似乎是最好的方法。祝你好运!