android-通知动态壁纸服务有关设置的更改

android-通知动态壁纸服务有关设置的更改,第1张

概述我通过扩展WallpaperService和Engine类来创建动态壁纸.墙纸不会频繁更改,因此为了避免不必要的CPU使用,我只在某些事件(触摸,visibleChanged等)上绘制墙纸.我还使用PreferenceFragment为墙纸生成设置活动.问题:当用户在设置活动中更改首选项时,我希望墙纸收到通知并使用新设置尽快

我通过扩展WallpaperService和Engine类来创建动态壁纸.墙纸不会频繁更改,因此为了避免不必要的cpu使用,我只在某些事件(触摸,visibleChanged等)上绘制墙纸.我还使用PreferenceFragment为墙纸生成设置活动.

问题:当用户在设置活动中更改首选项时,我希望墙纸收到通知并使用新设置尽快重新绘制自己.但是由于我只读取设置并在某些事件上绘制墙纸,所以墙纸的更改直到发生这些事件时才发生.

将不胜感激的解决方案:) thnx.

有人吗:(

解决方法:

您有两种选择.检查onVisibilityChanged()中的首选项值,并相应地更新墙纸.或使用OnSharedPreferencechangelistener来让您的引擎知道用户何时更改了首选项.

后者的例子.

让您的引擎实现OnSharedPreferencechangelistener接口.

@H_403_18@private class MyEngine extends Engine implements OnSharedPreferencechangelistener { // A reference to our shared prefs; private SharedPreferences mPreferences; @OverrIDe public voID onCreate(SurfaceHolder surfaceHolder) { super.onCreate(surfaceHolder); mPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); // Register an OnSharedPreferencechangelistener to our shared prefs mPreferences.registerOnSharedPreferencechangelistener(this); // Your existing code ... } @OverrIDe public voID onDestroy() { super.onDestroy(); // Don't forget to unregister the Listener mPreferences.unregisterOnSharedPreferencechangelistener(this); } @OverrIDe public voID onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { // Whenever the user changes a setting, this method will be called. // So do what needs to be done here, like redrawing the wallpaper redrawWallpaper(); }} 总结

以上是内存溢出为你收集整理的android-通知动态壁纸服务有关设置的更改全部内容,希望文章能够帮你解决android-通知动态壁纸服务有关设置的更改所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1086659.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-27
下一篇2022-05-27

发表评论

登录后才能评论

评论列表(0条)

    保存