取得当前屏幕的截图
来源:互联网 发布:最新淘宝白菜群2017 编辑:程序博客网 时间:2024/05/22 06:26
取得当前屏幕的截图主要使用了Bitmap 类里的方法,首相取得一个bitmap 然后用取得的bitmap 去绘制一张图片然后进行保存。
android之截屏(包括截取scrollview与listview的)
Android中View转换为Bitmap及getDrawingCache=null的解决方法
http://www.cnblogs.com/devinzhang/archive/2012/06/05/2536848.html
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.util.Log;import android.view.View;public class ShotScreen {private static final String TAG="shotscreen";@SuppressWarnings("unused")private static Bitmap takeScreenShot(Activity activity){View view =activity.getWindow().getDecorView();view.setDrawingCacheEnabled(true);view.buildDrawingCache();Bitmap bitmap = view.getDrawingCache();Rect rect = new Rect();activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(rect);int statusBarHeight = rect.top;System.out.println(statusBarHeight);int width =activity.getWindowManager().getDefaultDisplay().getWidth();int height =activity.getWindowManager().getDefaultDisplay().getHeight();Bitmap bitmap2 = Bitmap.createBitmap(bitmap,0,statusBarHeight, width, height - statusBarHeight);view.destroyDrawingCache();return bitmap2;}@SuppressWarnings("unused")private static void savePic(Bitmap bitmap,String filename){FileOutputStream fileOutputStream = null;try {fileOutputStream = new FileOutputStream(filename);if (fileOutputStream != null) {bitmap.compress(Bitmap.CompressFormat.PNG, 90, fileOutputStream);fileOutputStream.flush();fileOutputStream.close();}} catch (FileNotFoundException e) {Log.d(TAG, "Exception:FileNotFoundException");e.printStackTrace();} catch (IOException e) {Log.d(TAG, "IOException:IOException");e.printStackTrace();}}/** * * @param a */public static void shoot(Activity a){if (android.os.Environment.MEDIA_MOUNTED != "mounted") {ShotScreen.savePic(ShotScreen.takeScreenShot(a), "/sdcard/抽样.png"); }else{ShotScreen.savePic(ShotScreen.takeScreenShot(a), "/data/data/"+a.getPackageName()+"/抽样.png");} }
android之截屏(包括截取scrollview与listview的)
public class ScreenShot { // 获取指定Activity的截屏,保存到png文件 public 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(); savePic(b, "/sdcard/screen_test.png"); return b; } // 保存到sdcard public 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(); } } /** * 把View对象转换成bitmap * */ public static Bitmap convertViewToBitmap(View view) { view.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED), MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED)); view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight()); view.buildDrawingCache(); Bitmap bitmap = view.getDrawingCache(); if (bitmap != null) { System.out.println("这不是nullde1"); Log.d("nullde1", "nullde1"); } else { System.out.println("这nullnulllnulnlul"); } return bitmap; } // 程序入口1 public static void shoot(Activity a) { ScreenShot.savePic(ScreenShot.takeScreenShot(a), "/sdcard/screen_test.png"); } // 程序入口2 public static void shootView(View view) { ScreenShot.savePic(ScreenShot.convertViewToBitmap(view), "sdcard/xx.png"); } public static Bitmap getViewBitmap(View v) { v.clearFocus(); v.setPressed(false); boolean willNotCache = v.willNotCacheDrawing(); v.setWillNotCacheDrawing(false); // Reset the drawing cache background color to fully transparent // for the duration of this operation int color = v.getDrawingCacheBackgroundColor(); v.setDrawingCacheBackgroundColor(0); if (color != 0) { v.destroyDrawingCache(); } v.buildDrawingCache(); Bitmap cacheBitmap = v.getDrawingCache(); if (cacheBitmap == null) { Log.e("TTTTTTTTActivity", "failed getViewBitmap(" + v + ")", new RuntimeException()); return null; } Bitmap bitmap = Bitmap.createBitmap(cacheBitmap); // Restore the view v.destroyDrawingCache(); v.setWillNotCacheDrawing(willNotCache); v.setDrawingCacheBackgroundColor(color); return bitmap; } /** * 截取scrollview的屏幕 * **/ public static Bitmap getBitmapByView(ScrollView scrollView) { int h = 0; Bitmap bitmap = null; // 获取listView实际高度 for (int i = 0; i < scrollView.getChildCount(); i++) { h += scrollView.getChildAt(i).getHeight(); scrollView.getChildAt(i).setBackgroundResource(R.drawable.bg3); } Log.d(TAG, "实际高度:" + h); Log.d(TAG, " 高度:" + scrollView.getHeight()); // 创建对应大小的bitmap bitmap = Bitmap.createBitmap(scrollView.getWidth(), h, Bitmap.Config.ARGB_8888); final Canvas canvas = new Canvas(bitmap); scrollView.draw(canvas); // 测试输出 FileOutputStream out = null; try { out = new FileOutputStream("/sdcard/screen_test.png"); } catch (FileNotFoundException e) { e.printStackTrace(); } try { if (null != out) { bitmap.compress(Bitmap.CompressFormat.PNG, 100, out); out.flush(); out.close(); } } catch (IOException e) { // TODO: handle exception } return bitmap; } private static String TAG = "Listview and ScrollView item 截图:"; /** * 截图listview * **/ public static Bitmap getbBitmap(ListView listView) { int h = 0; Bitmap bitmap = null; // 获取listView实际高度 for (int i = 0; i < listView.getChildCount(); i++) { h += listView.getChildAt(i).getHeight(); } Log.d(TAG, "实际高度:" + h); Log.d(TAG, "list 高度:" + listView.getHeight()); // 创建对应大小的bitmap bitmap = Bitmap.createBitmap(listView.getWidth(), h, Bitmap.Config.ARGB_8888); final Canvas canvas = new Canvas(bitmap); listView.draw(canvas); // 测试输出 FileOutputStream out = null; try { out = new FileOutputStream("/sdcard/screen_test.png"); } catch (FileNotFoundException e) { e.printStackTrace(); } try { if (null != out) { bitmap.compress(Bitmap.CompressFormat.PNG, 100, out); out.flush(); out.close(); } } catch (IOException e) { // TODO: handle exception } return bitmap; } }
Android中View转换为Bitmap及getDrawingCache=null的解决方法
http://www.cnblogs.com/devinzhang/archive/2012/06/05/2536848.html
0 0
- 取得当前屏幕的截图
- Android取得当前屏幕静态布局的截图
- 当前屏幕的截图
- 取得当前屏幕的图像
- 获取当前activity的屏幕截图
- Android 获取当前activity的屏幕截图
- 取得当前屏幕方向&大小
- PC端获取Android手机当前屏幕截图的方法
- Android开发 获取当前activity的屏幕截图
- PC端获取Android手机当前屏幕截图的方法
- Android获取当前屏幕截图,简单粗暴!
- Win7 的屏幕截图
- 简单的屏幕截图
- 屏幕菜单的截图
- 获取屏幕的截图
- vc++的屏幕截图
- 获取和保存当前屏幕的截图 实现的C++代码如下
- java 利用java运行时的方法得到当前屏幕截图的方法
- 简单位移动画TranslateAnimation
- EA&UML日拱一卒-关联(基础篇)
- 让ListView显示在Button上面
- select2使用方法
- android DragLayer源码
- 取得当前屏幕的截图
- dreamweaver-cs6-mac
- Android 在列表List中显示半透明小窗体效果的控件
- Javaweb 03—Reuest&Response
- java-universal-tween-engine,一个动画系统库
- onSaveInstanceState和onRestoreInstanceState触发的时机
- android实现iphone风格的picker
- ScrollTextView
- LinkedList基本方法底层实现