实现动态壁纸

时间:2014-08-22 09:28:11

标签: java android android-activity live-wallpaper

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

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

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

无论采取哪种方法,这都是我遇到的两个问题,也是一个解决方案;

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

1 个答案:

答案 0 :(得分:0)

这是我最终做的事情;

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

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

我希望这些信息可以节省一些时间。