【问题标题】:Implementing a live wallpaper实现动态壁纸
【发布时间】:2014-08-22 09:28:10
【问题描述】:

我正在制作自定义主屏幕,我想让用户能够在我的启动器/主屏幕中使用动态壁纸。将android:Theme.Holo.Wallpaper.NoTitleBar 设置为我的AppTheme 有点我想要的,但不完全是。

有 2 种可能的解决方案(但如果您能想到另一个好的解决方案,请告诉我);

  • 使用android:Theme.Holo.Wallpaper.NoTitleBar 作为我的AppTheme
    • 显示动态壁纸,但用户无法与其交互。这不是很好,但我可以接受。
  • “正确”的方式实现它,以便用户可以与之交互。
    • 最大的问题是我无法在任何地方找到如何执行此操作。我能找到的所有文档都告诉我如何创建动态壁纸,但没有告诉我如何在我的自定义主屏幕中实现对它的支持。

无论我采用哪种方法,这两个问题我都会遇到,也希望得到解决方案;

  • 我需要计算壁纸的“平均颜色”(类似的也可以)。如果可能的话,我该如何使用动态壁纸来做到这一点?
  • 我需要在某些时候模糊壁纸。这里一个可接受的解决方案是用黑色透明背景的东西覆盖它而不是模糊它,但理想情况下我可以模糊它(即使我可以对当前状态进行静态截图)动态壁纸,所以我可以模糊它)。如果我可以从动态壁纸的当前状态获取静态快照,这也将解决我之前的问题。

【问题讨论】:

  • 我从未实现过有意义的主屏幕,更不用说带有动态壁纸的主屏幕了。我会先看看是否有任何支持动态壁纸的开源主屏幕实现。但是,出于安全原因,您可能无法请求动态壁纸的静态快照,就像您无法获取任何其他应用程序的屏幕截图一样。

标签: java android android-activity live-wallpaper


【解决方案1】:

这就是我最终做的事情;

  • android:Theme.Holo.Wallpaper.NoTitleBar 设置为AppTheme
  • 在设置动态壁纸并默认为透明黑色时禁用颜色计算。
    • 使用WallpaperManager.getInstance (this.context).getWallpaperInfo () != null 检测是否设置了动态壁纸。
  • 虽然您可以获取根视图的屏幕截图,但显示动态壁纸的区域将是透明的。所以这不好。我最终用透明的黑色覆盖层覆盖了它,这样显示在上面的白色文本仍然可读。

显然使用android:Theme.Holo.Wallpaper.NoTitleBar 不会阻止用户与动态壁纸进行交互。我测试的动态壁纸(Android 自带的默认壁纸)不允许任何类型的交互,我没有意识到。

我希望这些信息能够为其他人节省一些时间。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多