【问题标题】:Check if is tablet on gradle file检查 gradle 文件中是否是平板电脑
【发布时间】:2020-06-19 07:55:33
【问题描述】:

我正在设计一个应用程序,如果在智能手机上运行,​​它的方向应该固定在纵向,或者在平板电脑上固定在横向。

所以我试图在 gradle 文件上使用清单占位符,以便在应用程序的清单上设置 screenOrientation 属性。问题是,我无法验证 gradle 文件的屏幕大小。有没有办法检查它是否是 build.gradle 上的平板电脑?或者也许我可以通过不同的方式获得相同的结果?

我尝试的另一件事是使用从带有 sw600dp 限定符的资源文件中获取的布尔资源。但是 android studio 给出了一个错误,说它不能引用因 manifest 文件中的配置而异的资源。

代码:

AndroidManiefst.xml ...

<activity
    ...
    android:screenOrientation="${fixedOrientation}">

build.gradle

android {
    def portrait = 'portrait'
    def landscape = 'landscape'
    ...
    manifestPlaceholders.fixedOrientation = "$landscape"
}

fixedOrientation 目前是静态的,我想让它动态化。

【问题讨论】:

  • "有没有办法检查它是否是 build.gradle 上的平板电脑?" - 不。 build.gradle 在您的开发机器上。它提供了为所有设备构建应用的说明。
  • @CommonsWare 您能否详细说明您的评论作为答案,以便我标记为正确?如果需要,我会创建一个新问题。

标签: android android-studio gradle kotlin android-gradle-plugin


【解决方案1】:

有没有办法在 build.gradle 上检查它是否是平板电脑?

不是真的。

build.gradle 包含构建指令,仅此而已。而且,这些构建说明用于构建原则上可以在手机、平板电脑、电视、汽车、手表或 Jumbotron 上运行的应用[1]

[1] 您需要提供自己的 Android 驱动的 Jumbotron

Gradle 最接近的事情是如果您想要不同的 APK,一个用于手机,一个用于平板电脑。然后,Gradle 将参与制作这些单独的 APK 所需的产品风味的设置。但我不知道您将如何安排将一个 APK 分配给手机,而将另一个 APK 分配给平板电脑。

如果 Gradle 只是构建一个 APK,那么这个 APK 既适用于手机又适用于平板电脑,因此 Gradle 在构建时无法知道任何给定用户使用的是手机还是平板电脑。或者一个 Jumbotron。

【讨论】:

  • 感谢您的澄清。我通过代码强制定向解决了我最初的问题。不优雅,但效果很好。
  • @JoãoPucci:如果有一个活动需要这种行为,你可以试试&lt;activity-alias&gt;。为活动设置别名。让活动使用一个screenOrientation,而别名使用另一个。 sw600dp 布尔资源可以在android:enabled 中使用,因此您可以使用布尔资源来确定是否为给定设备启用了活动或其别名。很多活动可能会让这很烦人。
  • @CommonsWare 没有这样的方法屏幕方向与 并且它不起作用。我正在开发一个应用程序,该应用程序可以在平板电脑上以移动和横向模式进行纵向工作。如果手机处于纵向模式,我将面临一个问题,然后应用程序以纵向模式加载主题背景,然后改回横向。它看起来像ui中的一个小故障。我尝试在主题中给出方向,但它不起作用。您能否为此提出一些解决方案。
  • @AshokSinghal:“ 没有这样的屏幕方向方法,它不起作用”——啊,对不起。 “您能否为此提出一些解决方案” - 不,因为我几乎没有什么可做的。我建议你问一个单独的 Stack Overflow 问题,minimal reproducible example 解释了你是如何加载背景的。
猜你喜欢
  • 1970-01-01
  • 2014-02-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多