【问题标题】:Android - How to create an Activity that manages multiple icons on Home Screen?Android - 如何创建一个管理主屏幕上多个图标的活动?
【发布时间】:2014-04-19 05:07:42
【问题描述】:

我正在尝试创建一个提供屏幕来选择图标的活动。选择此选项后,此应用应按以下方式运行:

1- 每个选定的图标都应出现在主屏幕中,并带有自己的图像。这些图标不应作为应用程序目录中的应用程序提供。它们应该表现为简单的快捷方式,由主要活动直接添加或删除;

2 - 当我按下主屏幕上的这些图标之一时,我想启动一个应该具有特定行为的 Activity,具体取决于按下的图标。

是否有可能实现这个要求?你能帮我提供一些指导方针或解决方法来解决这个问题吗?

非常感谢您的支持。

何塞·雷维拉略

【问题讨论】:

标签: android android-activity icons homescreen


【解决方案1】:

每个选定的图标都应出现在主屏幕中,并带有自己的图像

我假设“它自己的图像”==“选定的图标”。

您不能在运行时更改与活动关联的图标。如果图标列表相当小,并且它们都是可绘制资源,您可以尝试为每个图标设置一个 <activity-alias>,默认情况下全部禁用,然后使用 PackageManagersetComponentEnabledSetting() 启用用户选择的一个。如果用户可以多次选择同一个图标,则每个图标需要有 N 个 <activity-alias> 元素(因此应用程序可以在每次选择时显示在启动器中)。这很快就会变得非常冗长。

它们应该表现为简单的快捷方式,由主要活动直接添加或删除

如果“简单快捷方式”是指“启动器/应用程序抽屉中的图标”,<activity-alias> 元素将每个都具有标准 MAIN/LAUNCHER<intent-filter>,因此您启用的元素将显示在那里。

但请注意,并非所有主屏幕实现都会检测到您何时启用和禁用这些功能,因此如果图标未显示,用户可能需要重新启动。

当我在主屏幕上按下其中一个图标时,我想启动一个应该具有特定行为的 Activity,具体取决于按下的图标

您无法更改<activity-alias> 在运行时指向的活动——这是硬编码到清单中的。要么:

  • 您将为所有图标使用一个活动,每个不同的图标使用不同的片段,或者

  • 您需要让<activity-alias> 元素都指向一个使用Theme.NoDisplay 的活动,这反过来可以确定要启动的正确实际活动,或者

  • 每个图标需要 M 个 <activity-alias> 元素,每个可能的活动一个,以便为正确的图标/活动组合启用正确的元素

是否有可能实现这个要求?

总而言之,这并不容易实现,尽管理论上应该是可能的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-20
    • 1970-01-01
    • 1970-01-01
    • 2012-09-25
    • 2016-04-06
    • 2011-07-25
    • 1970-01-01
    相关资源
    最近更新 更多