首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何管理不同设计的代码以支持所有设备

如何管理不同设计的代码以支持所有设备
EN

Stack Overflow用户
提问于 2016-11-08 06:43:53
回答 2查看 257关注 0票数 1

我有一个应用程序,这已经是为大型设备,即10英寸平板电脑和亭。我为手机做了同样的设计,但这看起来不太好,所以我想把移动设备移到材料设计上,其余的设备(平板电脑和信息亭)将保持不变。

我知道如何为不同的设备做不同的布局,比如普通的、大型的和x-大的,但是我担心代码。所以基本上以下是我的困惑..。

  • 判断我的应用程序在代码中运行的设备的最佳方法是什么,这样我就必须在此基础上运行一些方法,因为我的普通设备遵循的是材料设计,并且包含一些在平板电脑和kiosk的设计中不存在的小部件,即RecyclerView (出于某种目的)?
  • 我已经对这个问题进行了大量的搜索,并注意到有两种方法可以支持多个设备,1>进行两个单独的apk,2>制作一个apk并签入代码来区分这些设备,但是正如我前面在point no#1中所说的,我在普通设备中进行了材料设计,并且在小部件和布局、片段甚至导航方面完全改变了设计,那么您认为最好的处理方法是什么?
  • 如果我做了一个apk并在代码中进行了检查,那么我必须说我有大量的代码和资源,在这两种情况下(如果设备是正常的和大型的),一些资源和类将永远不会被使用,并且会使apk的大小更大,那么有什么最好的方法来解决这个问题呢?

我还搜索过stackOverflow,只找到了这两个接近我问题的链接,但其余的链接是关于不同的布局,而不是代码:

  1. 手机和平板电脑的Android应用程序:1或2个应用程序?
  2. 为android手机和平板电脑创建不同的布局

我希望我的问题安静,清楚,请用一些真实的理由和链接来回答我的这些问题。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-11-18 22:08:34

一个应用程序的多个app在Google中得到支持。但是,除非您的应用程序非常大(大于100 is ),否则他们建议您为所有设备发布一个apk。

所以您需要在运行时检查屏幕大小。您可以通过按类别分列 ( 设备无关像素 )或即使是英寸来完成这个任务。然后,正如您所说的,您将相应地加载适当的布局和片段。

即使要使用不同的apks,也可能以类似的方式进行,因为您可能希望共享一些代码。

在Gradle中,您将为每个apk创建productFlavors,以及一个变量来定义构建,如下所示:

代码语言:javascript
复制
productFlavors {
    bigtablet {
        buildConfigField "String", "deviceType", "\"bigtable\""
    }
    smalltablet {
        buildConfigField "String", "deviceType", "\"smalltable\""
    }
}

然后,在运行时,您将使用BuildConfig.deviceType驱动与one apk方法中屏幕大小完全相同的逻辑。使用此方法,Gradle将从每个apk中删除所有未使用的代码。

最后一个选项是为每个apk创建完全不同的项目。将所有共享代码推入库中。

现在,您可以将其放在一个apk中,如果apk太大,则切换到多个productFlavors。既然逻辑是相似的,那就不难说了。希望这能有所帮助。

票数 3
EN

Stack Overflow用户

发布于 2016-11-20 08:30:03

支持库的设计是为了尽量减少您需要做的工作,以检测运行应用程序的Android版本中的差异。例如,支持库中有RecyclerView。在此和layout-xxx文件夹之间,通常可以为所有API级别和设备窗体因素构建一个APK。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40480549

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档