getdrawingcache 废弃_Android getDrawingCache 得到都是同一个图片

/**

* 获取屏幕图像

*

* @return

*/

private Bitmap takeScreenShot() {

// View截图的View

View v = getWindow().getDecorView();

v.clearFocus(); // 清除视图焦点

v.setPressed(false);// 将视图设为不可点击

int currScreen = getWorkspace().getCurrentScreen();

int screenCount = getWorkspace().getChildCount();

// 壁纸管理器

WallpaperManager wpm = (WallpaperManager) getSystemService(Context.WALLPAPER_SERVICE);

// 屏宽

int screenWidth = v.getWidth();

int screenHeight = v.getHeight();

// 壁纸图片

Drawable d = wpm.getDrawable();

// 壁纸宽与高

int wallPaperWidth = d.getIntrinsicWidth();

int wallPaperHeight = d.getIntrinsicHeight();

// 去掉标题栏,截取标签条顶部

// int i = lis.getTop() + statusBarHeight;

int i = statusBarHeight();

// 将壁纸生成bitmap

Bitmap bmp1 = Bitmap.createBitmap(wallPaperWidth, wallPaperHeight, d.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888 : Bitmap.Config.RGB_565);

Canvas canvas = new Canvas(bmp1);

d.setBounds(0, 0, wallPaperWidth, wallPaperHeight);

d.draw(canvas);

// 截取壁纸时的开始位置,计算每次切屏时,壁纸移动的宽度

int begin = currScreen * ((wallPaperWidth - screenWidth) / (screenCount - 1));

Log.i("app", "begin = "+begin);

// //截取当前屏的壁纸,

Bitmap bmp2 = Bitmap.createBitmap(bmp1, begin, 0, screenWidth, screenHeight);

bmp2 = Bitmap.createBitmap(bmp2, 0, i, screenWidth, screenHeight - i);

//mWorkspace.enableChildrenCache();

//mWorkspace.getCellLayoutAt(mWorkspace.mCurrentScreen).setChildrenDrawingCacheEnabled(true);

//userGroupArea.openChildrenCache();

v.setDrawingCacheEnabled(true);

v.buildDrawingCache();

// 截取图标

Bitmap bmp3 = v.getDrawingCache();

Log.i("app", "cache = " + v.isDrawingCacheEnabled() + "=======" + ViewConfiguration.get(this).getScaledMaximumDrawingCacheSize());

//if (bmp3 == null) {

//

//v.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED), MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));

//v.layout(0, 0, v.getMeasuredWidth(), v.getMeasuredHeight());

//v.buildDrawingCache();

//bmp3=v.getDrawingCache();

//}

Bitmap bmp4 = Bitmap.createBitmap(bmp3, 0, i, screenWidth, screenHeight - i);

Bitmap bitmap = Bitmap.createBitmap(bmp4.getWidth(), bmp4.getHeight(), d.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888 : Bitmap.Config.RGB_565);

canvas = new Canvas(bitmap);

canvas.drawBitmap(bmp2, 0, 0, null);

canvas.drawBitmap(HideAppsUtil.removeColor(bmp4), 0, 0, null);

canvas.save(Canvas.ALL_SAVE_FLAG);

canvas.restore();

// 将桌面背景还原

v.setBackgroundDrawable(null);

v.destroyDrawingCache();

bmp1.recycle();

bmp2.recycle();

bmp3.recycle();

bmp4.recycle();

return bitmap;

}

在launcher 每次滑动的图片都不一样,但是getDrawingCache  图像却都一样。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值