【发布时间】:2011-03-12 14:52:58
【问题描述】:
我的目标是修改Launcher应用,动态修改和改变主题。
我在http://www.cyrket.com/p/android/com.stain46.taghome/ 看到了几个“家庭”应用程序。看起来他们采用了默认的 Home(Launcher) 并对其进行了修改。他们是怎么做到的?我需要修改什么来达到同样的效果?
【问题讨论】:
我的目标是修改Launcher应用,动态修改和改变主题。
我在http://www.cyrket.com/p/android/com.stain46.taghome/ 看到了几个“家庭”应用程序。看起来他们采用了默认的 Home(Launcher) 并对其进行了修改。他们是怎么做到的?我需要修改什么来达到同样的效果?
【问题讨论】:
我已经使用 ICS 启动器完成了这项工作。您还需要进行大量代码更改才能将其编译为普通应用程序,因为它使用了许多私有内部 API(尽管 Google 可能暗示了这一点)。您还需要更改包名称。我发现有两个限制:
有一个名为 TableMaskFilter 的过滤器不适用于普通应用程序。我认为这允许应用程序抽屉是半透明的,但我删除了它的使用,我认为它看起来不错。
更关键的是,似乎无法复制小部件添加体验,因为它需要只有系统应用程序才能拥有的权限。 See this question.
无论如何,我把我的来源here。它可以在官方的 Galaxy S2 4.0.3 上编译和运行,但如果你尝试添加小部件,它会崩溃。
注意,当您更改包名称时,Eclipse 的重构不会注意到某些地方(例如 XML 布局)。我建议您改为进行全局文本搜索/替换。
【讨论】:
标准Launcher 是开源的,因此您绝对可以获取它并按照您想要的方式对其进行修改。要将您的应用用作主屏幕,您需要在 AndroidManifest.xml 中指定正确的Intent filter,并且用户必须在按下 Home 按钮时选择您的应用。你为什么不抓住那个代码,玩弄它,当你有更多问题和更多关于你想要改变的想法时回来。
【讨论】:
在这里我找到了一个稳定版本的 Launcher2
我已经分享了那个 GitHub 存储库。 HERE
该项目的 WIKI :
此项目包含 Android Jelly Bean (API 16) 附带的 Launcher 应用的代码。
需要对此源代码进行一些小的更改,以删除对私有 API 的使用。这些更改已用“// AOSP Change”标记
【讨论】: