转载请注明原文地址 http://bajiewuneng.iteye.com/blog/1914565
需要利用view.measure() 金额 view.layout方法,先利用view.setDrawingCachEnabled(true)和view.getDrawingCache()来获取Bitmap 然后再bitmap中进行操作
代码如下:
import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import android.app.Activity; import android.graphics.Bitmap; import android.graphics.Rect; import android.os.Environment; import android.view.View; //获取指定Activity的截屏,保存到png文件 public class ScreenShot { private static Bitmap takeScreenShot(Activity activity) { // View是你需要截图的View View view = activity.getWindow().getDecorView(); view.setDrawingCacheEnabled(true); view.buildDrawingCache(); Bitmap b1 = view.getDrawingCache(); // 获取状态栏高度 Rect frame = new Rect(); activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(frame); int statusBarHeight = frame.top; System.out.println(statusBarHeight); // 获取屏幕长和高 int width = activity.getWindowManager().getDefaultDisplay().getWidth(); int height = activity.getWindowManager().getDefaultDisplay() .getHeight(); // 去掉标题栏 //Bitmap b = Bitmap.createBitmap(b1, 0, 25, 320, 455); Bitmap b = Bitmap.createBitmap(b1, 0, statusBarHeight, width, height - statusBarHeight); view.destroyDrawingCache(); return b; } // 保存到sdcard private static void savePic(Bitmap b, String strFileName) { FileOutputStream fos = null; try { fos = new FileOutputStream(strFileName); if (null != fos) { b.compress(Bitmap.CompressFormat.PNG, 90, fos); fos.flush(); fos.close(); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } // 程序入口 public static void shoot(Activity a) { ScreenShot.savePic(ScreenShot.takeScreenShot(a), Environment.getExternalStorageDirectory()+"/xx.png"); } }
相关推荐
在Android平台上,截取屏幕图片是一项常见的功能,它允许用户保存设备当前的显示内容作为图像文件。本篇文章将深入探讨如何在Android应用中实现这一功能,并将其保存到SDCard(外部存储)上。 首先,我们需要了解...
在Android开发中,有时我们需要实现特定功能,例如只截取应用程序界面的一部分,而不是整个屏幕。这个功能在"指定屏幕内区域截图"中得以体现。在本文中,我们将深入探讨如何在Android中实现这一功能,包括如何选取...
在Android系统中,截取当前屏幕图像是一项常见的需求,无论是为了调试、测试还是用户分享功能。这个过程涉及到Android系统的视图层次结构、渲染机制以及权限管理。以下将详细讲解如何在Android中实现屏幕截图功能。 ...
在Android平台上,截取屏幕是常见的需求,无论是为了调试应用,还是为了分享用户界面的设计。本文将基于"Android实例之程序界面内截取屏幕"这一主题,深入探讨如何在Android应用内部实现屏幕截图功能。 首先,我们...
本文将详细讲解如何使用AndroidScreenCap库在Android应用中截取设备屏幕,并探讨相关的重要知识点。 首先,AndroidScreenCap库的核心功能在于提供了一个简洁的API接口,即`takeScreenshot(Context context, String ...
Android 取得当前屏幕的截图 Android 取得当前屏幕的截图是指在 Android 系统中获取当前屏幕的截图,并将其保存到 SD 卡目录下。这种操作主要使用了 Bitmap 类里的方法,通过取得一个 bitmap,然后用取得的 bitmap...
Android手机屏幕RTMP推流工具是一款可以将安卓手机屏幕上的任何内容推送到任意一款rtmp服务器上的工具,不仅可以分享手机屏幕内容,还可以分享手机上正在播放的视频、正在捕获的相机内容、其它APP正在播放的视频等...
在Android开发中,有时...综上所述,实现"Android截取指定区域保存"功能涉及了Android权限管理、屏幕截图、图像处理、文件操作等多个技术领域。开发者需要对这些方面有深入理解,才能构建出高效且用户友好的截屏工具。
当用户截取屏幕时,系统会发出一个ACTION_SCREENSHOT广播,我们可以通过注册BroadcastReceiver来接收这个广播。 ```java public class ScreenshotReceiver extends BroadcastReceiver { @Override public void ...
在某些情况下,当直接使用`MediaRecorder`不可行或者需要自定义更复杂的录制逻辑时,开发者可能会选择先截取屏幕快照,然后利用图像处理库(如OpenCV)将这些图像序列合并成视频。 7. **音频处理**: 屏幕录制通常...
Android截取手机屏幕两种实现方案 在 Android 开发中,截取手机屏幕是一项常见的需求,例如截取 WebView 的视图保存为图片。今天,我们将讨论两种实现 Android 截取手机屏幕的方案,这两种方案都有其优缺,下面我们...
在Android平台上,屏幕截取是一项常见的功能,它允许用户或开发者获取设备当前屏幕内容的静态图像。本技术主要涉及以下几个核心知识点: 1. **SurfaceView**:在Android中,SurfaceView是一个特殊的视图,它拥有...
然而,标准的系统截屏方法只能捕获当前屏幕上可见的部分,对于那些超出屏幕边界或者不可见的视图(View)元素,是无法直接截取的。本文将深入探讨如何利用Android API来实现包括不可见部分在内的完整视图截屏。 ...
屏幕截取保存本地是计算机和移动设备中常用的一项功能,它允许用户快速捕获当前屏幕显示的内容,并将其保存为图像文件。在这个过程中,我们通常会使用到一些特定的技术和工具。下面将详细介绍这个过程以及相关的知识...
Android 截取手机屏幕两种实现方法 最近在开发的过程中,遇到了一个需要截取屏幕保存为图片的需求,具体为截取webview的视图保存图片。 方法1:首先想到的思路是利用SDK提供的View.getDrawingCache()方法: public ...
提到asm.jar的作用,那么最显著的莫过于计算机显示Android手机屏幕了;其次可以调整计算机上显示Android手机屏幕的大小(好多人都没有发现这个功能);...还可以截取手机的屏幕;等等等。Android手机屏幕之asm.jar
本文实例为大家分享了Android截取指定View为图片的具体代码,供大家参考,具体内容如下 这个功能是为了截取指定的View为图片,然后分享到微信以及朋友圈使用的! 如图所示,我需要截取整个LinearLayout的内容,多余的...
在大多数Android设备上,可以通过同时按下电源键和音量下键来快速截取屏幕当前的状态。这个快捷键组合是多数Android设备的标准设置,但不同厂商可能会有微小差异,例如某些设备可能需要按电源键和Home键。完成截图后...
4. **绘制视图**:在每个截图时,调用`View.draw(Canvas)`方法,将当前屏幕内容绘制到Bitmap上。`Canvas`对象可以使用`Bitmap.createCanvas()`方法创建。 5. **拼接图片**:当用户停止滚动或者达到最大滚动高度时,...
// 截取当前窗口的屏幕 takeScreenshot(nodeInfo); } } } private void takeScreenshot(AccessibilityNodeInfo nodeInfo) { // 获取屏幕尺寸 DisplayMetrics metrics = new DisplayMetrics(); (...