【问题标题】:How to avoid pausing android live wallpaper while settings activity is open when using GLSurfaceView使用 GLSurfaceView 时如何避免在设置活动打开时暂停 android 动态壁纸
【发布时间】:2010-12-17 09:45:18
【问题描述】:

我正在使用著名的 GLSurfaceView 包装器 (http://www.rbgrn.net/content/354-glsurfaceview-adapted-3d-live-wallpapers) 为 android 编写 3d 动态壁纸

当我打开首选项屏幕以更改壁纸设置时,这些设置在我的壁纸预览中显示为透明。这很好,因为它可以让我预览我所做的设置更改。这很好用,除了一个问题:只要设置在它上面,动态壁纸就会暂停!

如何避免我的壁纸暂停?

【问题讨论】:

  • 您找到解决方案了吗?
  • 我意识到这与 OpenGL ES 无关,因为任何动态壁纸都存在此问题。

标签: android opengl-es android-2.1-eclair


【解决方案1】:

我想出了一个可能有用的解决方法,具体取决于您的墙纸的功能...

在我的设置活动中,每当用户进行更改(例如移动滑块、选中复选框)时,我都会广播一个带有相关设置信息的Intent

在动态壁纸的onCreate 方法中,我动态注册了一个BroadcastReceiver 来接收这些设置事件。我在onDestroy 中取消注册此接收器。

当接收到设置广播时,我让壁纸使用新设置绘制单帧。由于设置活动是透明的,因此用户可以立即了解所选设置下壁纸的外观。

同样地,使用这种方法,您可以安排壁纸在设置更改后几秒钟动画 - 或任何适合您的实施的时间。

【讨论】:

  • 这个解决方案听起来很棒,我一定会测试它,但是我真的希望动画能够连续播放。实际上,我不明白为什么默认情况下它不应该。
【解决方案2】:

我也觉得这有点烦人。每当进行更改时,我只需在我的设置活动中调用finish(),就完全避免了这个问题。这允许用户即时、完整地预览壁纸。只需单击一下即可返回设置以进行另一项更改,它提供了相当不错的用户体验。

 public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
            String key) {
       finish();
 }

我在我的壁纸系列中使用了它。 Here 就是一个例子:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多