【起航计划 013】2015 起航计划 Android(安卓)APIDemo的魔鬼步伐 12 App->Activity->SetWallpaper 设置壁纸 WallpaperManag
16lz
2021-01-24
SetWallpaper介绍如何在Android获取当前Wallpaper,对Wallpaper做些修改,然后用修改后的图像重新设置Wallpaper。(即设置》显示》壁纸》壁纸的功能)
WallpaperManager用来管理Android的Wallpaper。下面代码通过WallpaperManager来取得当前Wallpaper然后显示在屏幕Layout的imageView上。
final WallpaperManager wallpaperManager = WallpaperManager.getInstance(this); final Drawable wallpaperDrawable = wallpaperManager.getDrawable(); final ImageView imageView = (ImageView) findViewById(R.id.imageview); imageView.setDrawingCacheEnabled(true); imageView.setImageDrawable(wallpaperDrawable);
randomize对原壁纸进行颜色过滤:
Button randomize = (Button) findViewById(R.id.randomize); randomize.setOnClickListener(new OnClickListener() { public void onClick(View view) { int mColor = (int) Math.floor(Math.random() * mColors.length); wallpaperDrawable.setColorFilter(mColors[mColor], PorterDuff.Mode.MULTIPLY); imageView.setImageDrawable(wallpaperDrawable); imageView.invalidate(); } });
其中mColors如下:
final static private int[] mColors = {Color.BLUE, Color.GREEN, Color.RED, Color.LTGRAY, Color.MAGENTA, Color.CYAN, Color.YELLOW, Color.WHITE};
重新设置Wallpaper,也是通过WallpaperManager。
Button setWallpaper = (Button) findViewById(R.id.setwallpaper); setWallpaper.setOnClickListener(new OnClickListener() { public void onClick(View view) { try { wallpaperManager.setBitmap(imageView.getDrawingCache()); finish(); } catch (IOException e) { e.printStackTrace(); } } });
这里还使用了ImageView的getDrawingCache方法,DrawingCache使用,使用这个方法前必须setDrawingCacheEnabled为true,否则获取不到view的cache图片。
更多相关文章
- Android(安卓)之 Choreographer 详细分析
- 【Android】点击WebView中的按钮,关闭当前activity
- Android(安卓)SQLite数据库增删改查操作的使用
- android 自定义view 前的基础知识
- Android图灵机器人的实现(一)
- (转载)Android显示GIF
- 详解android 接口回调
- Android中TouchEvent触摸事件机制
- Android画图之抗锯齿(转)