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);
=> WallpaperManager 인스턴스를 가져와서 ImageView에 그려준다.
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(); }
});
=> 랜덤으로 적용된 이미지 필터를 ImageView에 적용한다.
wallpaperManager.setBitmap(imageView.getDrawingCache());
=> 변경한 이미지를 Wallpaper 에 적용한다.
void setDrawingCacheEnabled(boolean enabled)
: 그림 캐쉬 설정/미설정. 그림 캐쉬가 설정되면, 다음에
: 그림 캐쉬 설정/미설정. 그림 캐쉬가 설정되면, 다음에
getDrawingCache()
또는 buildDrawingCache()에 대해 호출되어 View에서 비트맵을 그릴것이다.
캐쉬가 설정되었을때 draw(android.graphics.Canvas) 호출은 캐쉬로부터 그리지 않을 것이다. 캐쉬로 부터 이득을 얻으려면, 반드시 비트맵이 Null이 아닌 경우 화면에 그리는 getDrawingCache() 를 호출하여 그리는 캐쉬 요청해야한다.