0

我正在开发一个仅适用于高屏幕密度设备的 android 应用程序。我想将我的应用程序限制在屏幕密度为 1.5 或更低的设备上。我对这个问题进行了很多搜索,发现我们可以通过清单中的不同标签来处理这个问题,比如

 <supports-screens android:smallScreens="false"
    android:normalScreens="false"
    android:largeScreens="true"
    android:xlargeScreens="true"/>

我有两个设备,都属于 normalScreens 类别。其中一个的密度等于 1.5,另一个是 2.0。我的问题是,如何根据屏幕密度限制我的应用程序在设备上。正如谷歌文档所说,使用<compatible-screens>标签不应该是这个问题的解决方案,“任何未在此标签中明确声明的尺寸和密度组合都将被限制安装应用程序”。

大佬们帮帮我怎么办。

4

1 回答 1

0

任何未在此标签中明确声明的尺寸和密度组合都将被限制安装应用程序。

这听起来像是你想要的<compatible-screens> 您必须列出您支持的所有可能的屏幕组合。这就是除了ldpi,mdpi和之外的所有内容hdpi

https://developer.android.com/guide/topics/manifest/compatible-screens-element https://developer.android.com/guide/practices/screens-distribution#FilteringHandsetApps

所以这是一个好的开始:

<compatible-screens>
    <screen android:screenSize="small" android:screenDensity="xhdpi"/>
    <screen android:screenSize="small" android:screenDensity="xxhdpi"/>
    <screen android:screenSize="small" android:screenDensity="xxxhdpi"/>
    <screen android:screenSize="normal" android:screenDensity="xhdpi"/>
    <screen android:screenSize="normal" android:screenDensity="xxhdpi"/>
    <screen android:screenSize="normal" android:screenDensity="xxxhdpi"/>
    <screen android:screenSize="large" android:screenDensity="xhdpi"/>
    <screen android:screenSize="large" android:screenDensity="xxhdpi"/>
    <screen android:screenSize="large" android:screenDensity="xxxhdpi"/>
    <screen android:screenSize="xlarge" android:screenDensity="xhdpi"/>
    <screen android:screenSize="xlarge" android:screenDensity="xxhdpi"/>
    <screen android:screenSize="xlarge" android:screenDensity="xxxhdpi"/>
</compatible-screens>

文档列出了更多支持的屏幕密度值:

  • 320 (xhdpi)
  • 360
  • 420
  • 480 (xxhdpi)
  • 560
  • 640 (xxxhdpi)

问题是,如果您的清单中没有包含具有不同价值的设备,它将不会在应用商店中看到您的应用。例如,Sony Xperia Z5 Premium 的密度约为 800 dpi800 ,除非您在清单中指定屏幕密度,否则它不会为您提供应用程序。

<screen android:screenSize="normal" android:screenDensity="800"/>

这只是我的猜测。

所以在你走这条路之前,问问自己,如果你真的需要这个。相反,如果在用户首次运行应用程序时通知用户由于非典型显示密度(或者其他原因,我真的不知道您的用例),视觉保真度可能没有预期的那么高是可以接受的。让用户决定。

于 2019-03-05T12:36:28.350 回答