-
Android getDrawingCache 得到都是同一个图片3
/** * 获取屏幕图像 * * @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 图像却都一样。2012年5月17日 14:57
目前还没有答案
相关推荐
在示例代码中,我们先通过`getDrawingCache()`方法获取View的绘制缓存,然后调用`getPixels()`方法得到Bitmap的像素数据。像素数据通常存储在一个整型数组中,每个像素由红、绿、蓝三原色的值表示。 2. **处理BMP...
在Android平台上,实现任意手势轨迹截屏涉及到一系列的编程技术和概念。这个项目旨在提供一种方法,让用户能够在手机屏幕上自由绘制手势轨迹,并在此基础上截取屏幕的一部分。以下是对这个技术实现的详细解释: ...
在Android平台上,自定义区域截图是一项实用且常见的功能,它允许用户自由选择屏幕上的特定区域进行截图,而非全屏截图。实现这一功能涉及到对Android系统的理解、View的层级结构以及图像处理技术。以下是对该主题的...
在Android应用开发中,有时我们需要在不同的活动(Activity)之间传递数据,其中图片的传递是一个常见的需求。本篇文章将详细介绍两种在Android中传递图片的方法,并提供相应的操作代码实例。 ### 方法一:通过转换成...
系统会将图片数据存储在一个临时文件中,并通过Intent的extras字段传递回应用: ```java @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == ...
// 开启 WebView 的缓存(当开启这个开关后下次调用 getDrawingCache() 方法的时候会把 view 绘制到一个 bitmap 上) webView.setDrawingCacheEnabled(true); // 强制绘制缓存(必须在 setDrawingCacheEnabled...
1. 创建一个新的Bitmap,其大小等于你需要的圆形图片的直径(假设为直径d,则宽度和高度均为d)。 2. 创建一个`Paint`对象,并设置其抗锯齿属性为true,以确保边缘平滑。 3. 使用`Canvas`的`drawARGB()`方法初始化新...
总的来说,这个压缩包提供了一个完整的截图功能实现,包括拖动截图框、定义截图尺寸和位置以及图片旋转,对于学习和开发Android应用中的图像处理功能来说,是一个宝贵的资源。开发者可以通过研究这些代码,了解...
首先,`getDrawingCache`是Android SDK中View类的一个方法,它允许我们获取到View的渲染结果作为Bitmap。当调用`getDrawingCache()`时,如果没有预先调用`buildDrawingCache()`,那么系统会先构建一个缓存,然后返回...
在Android应用开发中,有时我们需要对图片进行裁剪以满足特定的需求,而避免调用系统的图片裁剪功能,以获得更灵活的控制和更好的用户体验。本文将详细介绍一种在Android中实现图片裁剪的方法,这种方法不依赖系统...
在Android开发中,有时我们需要实现一个功能,即捕获当前屏幕的内容并将其保存为图片文件。这个需求在很多场景下都很常见,例如游戏截图、应用教程制作或测试报告记录等。下面将详细解释如何通过提供的代码实现...
在Android平台上,开发一款能够实现区域截图的应用是一个常见的需求,特别是在移动设备上,用户可能希望截取屏幕的特定部分而不是整个屏幕。这个“移动应用Android 区域截图源码”正是针对这一需求提供的解决方案。...
2. **获取屏幕像素**:为了得到截图框内的图像,我们需要在用户释放手指时,遍历截图框内的每一个像素,使用`View.getDrawingCache()`或`Bitmap.createBitmap()`方法获取这部分屏幕的位图数据。 3. **底层图片处理*...
在Android操作系统中,"当前截屏"功能是一个非常基础且常用的功能,允许用户保存设备屏幕上显示的内容为图像文件。在Android应用开发中,实现这一功能通常涉及到以下几个关键知识点: 1. **权限请求**: 在Android...
Android 5.0 版本后,谷歌发放了一个新的接口 android.media.projection.MediaProjection,可以使用该接口实现录屏功能,不需要获得 ROOT 权限。该接口主要用于“屏幕截图”操作和“音频录制”操作。 使用 android....
Android View 转 Bitmap 生成截图是一种常见的需求,特别是在分享图片和截屏功能中。下面将详细介绍三种不同的方法来实现 Android View 转 Bitmap 生成截图。 第一种方法:使用 DrawingCache 通过使用 View 的 ...
- **兼容性测试**: 考虑到Android设备的多样性,进行广泛的设备和API版本测试以确保动画在各种环境下都能正常工作。 总的来说,实现Android工具栏顶出转场动画涉及屏幕截图、内存管理、动画制作等多个技术点。通过...
android开发中通过View的getDrawingCache方法可以达到截屏的目的,只是缺少状态栏!...2. 添加1个Button(activity_main.xml文件) <RelativeLayout xmlns:android=http://schemas.android.com/apk/res/android
在Android开发中,"InterceptPictures...总之,"InterceptPictures"项目涵盖了Android开发中关于拍照、截图、图片处理等多个重要知识点,对于想要深入学习Android图像操作的开发者来说,这是一个非常有价值的参考资源。