通过壁纸修改launcher桌面背景

您所在的位置:网站首页 华为b6如何换壁纸桌面 通过壁纸修改launcher桌面背景

通过壁纸修改launcher桌面背景

2024-05-29 00:14| 来源: 网络整理| 查看: 265

在使用一些launcher的时候发现有些apk有更改桌面背景的选项,通过查看源代码得知,所谓更换桌面背景,实际上是设置壁纸,然后通过获取当前壁纸来改变桌面背景。

这样做的好处是避免自己存储当前桌面背景的信息,同时可以通过接受壁纸更改的广播,实时的修改当前桌面的背景。

关于如何设置壁纸,网络上有很多文章对此有过讲解,在我分析的这个apk里,使用以下代码更改壁纸:

InputStream stream = getResources().openRawResource(R.drawable.background); setWallpaper(stream); 当然,也可以调用系统的设置壁纸的函数来更改壁纸:

private void setWallpaper() { final Intent pickWallpaper = new Intent(Intent.ACTION_SET_WALLPAPER); startActivity(Intent.createChooser(pickWallpaper, "Wallpaper")); } 更改壁纸完毕后,可以获得当然默认的壁纸来修改当前apk的背景了:

private void setBackground() { Drawable wallpaper = peekWallpaper(); if (wallpaper == null) { try { clearWallpaper(); } catch (IOException e) { Log.e("tag", "Failed to clear wallpaper " + e); } } else { getWindow().setBackgroundDrawable(wallpaper); } }

如果想利用壁纸更改的广播来实时修改apk的背景也是可以的:

private void registerIntentReceivers() { IntentFilter filter = new IntentFilter(Intent.ACTION_WALLPAPER_CHANGED); registerReceiver(mWallpaperReceiver, filter); } 在接收广播的函数里修改背景就行了。

这样,就可以利用修改壁纸来更改apk的背景同时也不用自己保存任何相关信息了。

还有另外一种方法,就是将当前的apk应用背景设置为透明,直接使用壁纸图片作为背景,这样是最为方便的。

需要在Manifest.xml文件里面修改:

android:theme="@android:style/Theme.Translucent"> 然后修改窗口属性(函数参数为true):

void setWallpaperVisibility(boolean visible) { int wpflags = visible ? WindowManager.LayoutParams.FLAG_SHOW_WALLPAPER : 0; int curflags = getWindow().getAttributes().flags & WindowManager.LayoutParams.FLAG_SHOW_WALLPAPER; if (wpflags != curflags) { DisplayMetrics metrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(metrics); WallpaperManager.getInstance(this).suggestDesiredDimensions(metrics.widthPixels, metrics.heightPixels); getWindow().setFlags(wpflags, WindowManager.LayoutParams.FLAG_SHOW_WALLPAPER); } } 即可。

修改壁纸,还需要再apk中增加相应的权限:

参考:

http://blog.csdn.net/xiaodongvtion/article/details/8161695

http://blog.sina.com.cn/s/blog_62c194760100g9dx.html



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3