今天实现了在应用内截屏的方法,很简单代码如下:
(有surfaceView不能截取)
private boolean shot(){ Bitmap bm = Bitmap.createBitmap(480, 854, Config.ARGB_8888); Canvas canvas = new Canvas(bm); getWindow().getDecorView().draw(canvas); if (Environment.getExternalStorageState().equals( Environment.MEDIA_MOUNTED)) { File file = new File("/sdcard/tt/tt.png"); try { if (!file.getParentFile().exists()) { file.getParentFile().mkdirs(); file.createNewFile(); } FileOutputStream fos = new FileOutputStream(file); bm.compress(Bitmap.CompressFormat.PNG, 100, fos); fos.flush(); fos.close(); } catch (IOException e) { e.printStackTrace(); return false; } } return true; }
关于SurfaceView的截取,在surfaceView中使用双缓冲,可以截取,但貌似效率会变低,谁有好的解决方法,麻烦告诉我,谢谢~