Android默认主题不是这样"默认"?

时间:2014-08-08 12:54:21

标签: android

我正在玩Android开发并制作一些简单的应用程序。我不想为我的应用指定主题,我希望使用系统一个;这里我的意思是每个制作人和/或用户都可以为设备选择一个主题,应用程序应该适应它,寻找" native"到处。来自桌面开发,这对我来说很有意义。我有一个带有Android 4.1.2的LG p880,我只是为了控制这些东西而开发命令行。
现在,奇怪的是:在我的设备上,我的应用程序在黑色背景上有白色文本,但所有其他系统应用程序,尤其是Google的应用程序,都是白底黑字。我想我的应用程序有"对"外表,没有强迫自己。那么所有其他应用程序内部都有自定义主题吗?这是否意味着主要应用程序开发人员和Google首先不关心系统一致性?开发人员是否应该像关注内容那样关注演示文稿?

1 个答案:

答案 0 :(得分:3)

  

我不想为我的应用指定一个主题,我希望它使用系统一个

several dozen "system ones"(请参阅Theme_ - 前缀条目)。而且,在撰写本文时,这些内容甚至不包括下一个主要Android版本中出现的Theme.Material集(并且可用于“L”开发人员预览版中的实验)。

  

来自桌面开发,这对我来说很有意义

相反,Web开发人员会认为“系统一”是一个外国概念。

  

我有一台带有Android 4.1.2的LG p880,我正在开发命令行只是为了控制这些事情。

当然欢迎您开发“仅命令行”,但由于主题声明(和定义,如果是自定义)是XML格式,欢迎您使用IDE。

  

我认为我的应用程序具有“正确”的外观,而不是自己强迫它。

没有“正确”的外表。

  

所有其他应用程序内部都有自定义主题吗?

许多人可能会这样做。其他人会选择不同的“系统”主题。例如,如果您的应用中targetSdkVersion为11或更高,那么您将获得Theme.Holo作为总体默认值,前提是您没有指定相反的内容。例如,其他应用将使用Theme.Holo.Light.DarkActionBarTheme.Holo背景暗淡,文字浅;除了操作栏之外,Theme.Holo.Light.DarkActionBar的背景为浅色背景。

  

这是否意味着主要的应用开发者和Google首先不关心系统的一致性?

大多数Web开发人员都不关心“系统一致性”。

在某种程度上,那是因为我们走了几年前你想到的道路而拒绝了它。设备制造商会修改主题,然后我们的应用程序将无法正常运行。例如,制造商可能决定在浅色背景上使用深色文本,反转其他制造商的颜色,然后在我们定制自己的字体颜色的情况下,我们会被搞砸,因为我们的颜色无法正常工作一些设备。

在Android 3.0中,Google创建了Theme.Holo系列,并表示Google Play生态系统设备无法修改这些主题。相反,创建了Theme.DeviceDefault系列,制造商可以修补。我不知道任何曾选择使用Theme.DeviceDefault主题的应用。

在谷歌推出的新材料设计美学中,作为下一版Android的一部分,高亮颜色之类的东西应该由app(用于品牌)或内容(例如,选择适合的颜色的色调)而变化我们正在展示的照片)。甚至在Material Design之前,Google一直在采取措施帮助开发人员更轻松地使用自定义配色方案来配合其中一个股票系统主题(例如,Android 4.4不再强调蓝色作为触摸高亮颜色)