我正在使用著名的 GLSurfaceView 包装器(http://www.rbgrn.net/content/354-glsurfaceview-adapted-3d-live-wallpapers)为 android 编写 3d 动态壁纸
当我打开首选项屏幕以更改壁纸设置时,这些设置在我的壁纸预览中显示为透明。这很好,因为它可以让我预览我所做的设置更改。这很好用,除了一个问题:只要设置在它上面,动态壁纸就会暂停!
我怎样才能避免我的壁纸暂停?
我正在使用著名的 GLSurfaceView 包装器(http://www.rbgrn.net/content/354-glsurfaceview-adapted-3d-live-wallpapers)为 android 编写 3d 动态壁纸
当我打开首选项屏幕以更改壁纸设置时,这些设置在我的壁纸预览中显示为透明。这很好,因为它可以让我预览我所做的设置更改。这很好用,除了一个问题:只要设置在它上面,动态壁纸就会暂停!
我怎样才能避免我的壁纸暂停?
我想出了一个可能有用的解决方法,具体取决于你的壁纸的功能......
在我的设置活动中,每当用户进行更改(例如移动滑块、选中复选框)时,我都会广播Intent
相关设置信息。
在动态壁纸的onCreate
方法中,我动态注册了一个BroadcastReceiver
来接收这些设置事件。我在onDestroy
.
当接收到设置广播时,我让壁纸使用新设置绘制单帧。由于设置活动是透明的,这会立即让用户了解壁纸在所选设置下的外观。
类似地,使用这种方法,您可以安排墙纸在设置更改后的几秒钟内设置动画 - 或任何适合您的实施的时间。
我也觉得这有点烦人。finish()
每当进行更改时,只需调用我的设置活动,我就完全避免了这个问题。这允许用户即时、完整地预览壁纸。只需单击一下即可返回设置以进行另一项更改,并且可以提供相当不错的用户体验。
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
String key) {
finish();
}
我在我的壁纸系列中使用了它。这是一个例子: