我需要我的壁纸在预览模式下(具有“设置”和“设置...”的屏幕)采取不同的行动。我怎么知道什么时候画在那里?
答案 0 :(得分:14)
在onCreateEngine()
中,您可以使用isPreview()
方法。
请注意,onCreateEngine()
被“正常”调用两次:一次创建预览实例,然后再实际设置壁纸。
详细信息:http://developer.android.com/reference/android/service/wallpaper/WallpaperService.Engine.html
答案 1 :(得分:2)
可以在已实现的引擎的isPreview()
方法中调用onCreate(SurfaceHolder holder)
方法。不在onCreateEngine
方法中作为先前的答案,因为该方法尚未准备好。
答案 2 :(得分:1)
除了代表答案外,我还将写信。 由于预览和非预览引擎实例可以同时存在,因此可以在WallpaperService类(Kotlin中的示例)内添加两个静态实例和一个引擎局部变量:
{data: null}
并将其用于替代功能
private var engine: OpenGLEngine? = null
private set
//...
companion object {
private var engineInstance: OpenGLEngine? = null
private var previewEngineInstance: OpenGLEngine? = null
//...
}
通过这种方法,您始终可以在WallpaperService中获取当前引擎实例,并调用其 isPreview 。