Android获取当前Activity的屏幕截图
2014-09-20 00:00
721 查看
此方法是通过view的方式获取当前activity的屏幕截图,并不是framebuffer的方式,所以有一定的局限性。但是这种方法相对简单,容易理解。
首先通过下面的函数获取Bitmap格式的屏幕截图:
得到bitmap格式的图片后,可以把它保存到sd卡中,也可以用下面的方式直接显示到ImageView上:
如果想写入sd中保存,可以使用下面的方法:
dirName是输出的文件夹名称,filaName是输出的文件名,两者共同组成输出的路径,如“ /mnt/sdcard/pictures/shot.png”。还要注意在AndroidManifest中注册写入权限:
首先通过下面的函数获取Bitmap格式的屏幕截图:
public Bitmap myShot(Activity activity) { // 获取windows中最顶层的view View view = activity.getWindow().getDecorView(); view.buildDrawingCache(); // 获取状态栏高度 Rect rect = new Rect(); view.getWindowVisibleDisplayFrame(rect); int statusBarHeights = rect.top; Display display = activity.getWindowManager().getDefaultDisplay(); // 获取屏幕宽和高 int widths = display.getWidth(); int heights = display.getHeight(); // 允许当前窗口保存缓存信息 view.setDrawingCacheEnabled(true); // 去掉状态栏 Bitmap bmp = Bitmap.createBitmap(view.getDrawingCache(), 0, statusBarHeights, widths, heights – statusBarHeights); // 销毁缓存信息 view.destroyDrawingCache(); return bmp; }
得到bitmap格式的图片后,可以把它保存到sd卡中,也可以用下面的方式直接显示到ImageView上:
// 将bitmap转换成drawable BitmapDrawable bd=new BitmapDrawable(myShot()); imageView.setBackgroundDrawable(bd); imageView.setImageBitmap(myShot());
如果想写入sd中保存,可以使用下面的方法:
private void saveToSD(Bitmap bmp, String dirName,String fileName) throws IOException { // 判断sd卡是否存在 if (Environment.getExternalStorageState().equals( Environment.MEDIA_MOUNTED)) { File dir = new File(dirName); // 判断文件夹是否存在,不存在则创建 if(!dir.exists()){ dir.mkdir(); } File file = new File(dirName + fileName); // 判断文件是否存在,不存在则创建 if (!file.exists()) { file.createNewFile(); } FileOutputStream fos = null; try { fos = new FileOutputStream(file); if (fos != null) { // 第一参数是图片格式,第二个是图片质量,第三个是输出流 bmp.compress(Bitmap.CompressFormat.PNG, 100, fos); // 用完关闭 fos.flush(); fos.close(); } } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
dirName是输出的文件夹名称,filaName是输出的文件名,两者共同组成输出的路径,如“ /mnt/sdcard/pictures/shot.png”。还要注意在AndroidManifest中注册写入权限:
<uses-permission android:name=”android.permission.WRITE_EXTERNAL_STORAGE” />
相关文章推荐
- Android 获取当前activity的屏幕截图
- Android开发 获取当前activity的屏幕截图
- [转]Android 获取当前Activity的屏幕截图
- Android中通过view方式获取当前Activity的屏幕截图实现方法
- 获取当前activity的屏幕截图
- android 获取当前屏幕的Activity
- PC端获取Android手机当前屏幕截图的方法
- Android获取当前屏幕截图,简单粗暴!
- android后台获取当前屏幕截图(screencap.cpp修改)
- android分享当前activity屏幕截图到微博客和微信
- android 获取当前屏幕显示的Activity
- PC端获取Android手机当前屏幕截图的方法
- android 在Activity下获取getWindowManager()的屏幕尺寸和自定义View下的获取尺寸
- Android取得当前屏幕静态布局的截图
- 安卓分享、截图、获取屏幕分辨率、当前版本号、获取sd卡目录工具类
- Android之获取当前Activity名称
- android中获取当前activity的名称
- Android 获取屏幕截图 和保存到本地的sd卡路径下
- 36 Android Activity跳转动画 获取当前版本
- android——获取屏幕分辨率——Activity中/非Activity中