其中
1. 对指定view进行截图的方法
/** * 对单独某个View进行截图 * * @param v * @return */ private Bitmap loadBitmapFromView(View v) { if (v == null) { return null; } Bitmap screenshot; screenshot = Bitmap.createBitmap(v.getWidth(), v.getHeight(), Bitmap.Config.RGB_565); Canvas c = new Canvas(screenshot); c.translate(-v.getScrollX(), -v.getScrollY()); v.draw(c); return screenshot; }
将指定bitmap保存到相册
2.动态请求写入sd卡
private void getPermissions(){ if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1); //权限还没有授予,需要在这里写申请权限的代码 } else{ //权限已申请,执行XXX操作 saveScreenShot(bitmap); // saveImageToGallery(bitmap); } }
/**屏幕截图保存*/ private void saveScreenShot(Bitmap bitmap) { String extStorageDirectory = Environment.getExternalStorageDirectory().toString(); OutputStream outStream = null; String filename;//声明文件名 //以保存时间为文件名 Date date = new Date(System.currentTimeMillis()); SimpleDateFormat sdf = new SimpleDateFormat ("yyyyMMddHHmmss"); filename = sdf.format(date); File file = new File(extStorageDirectory, filename+".JPEG");//创建文件,第一个参数为路径,第二个参数为文件名 Log.i("文件的路径",file.getAbsolutePath()); try { outStream = new FileOutputStream(file);//创建输入流 boolean save= bitmap.compress(Bitmap.CompressFormat.JPEG, 100, outStream); Log.i("是否保存成功",save+""); outStream.close(); /** 这三行可以实现相册更新 Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE); Uri uri = Uri.fromFile(file);intent.setData(uri); sendBroadcast(intent);//这个广播的目的就是更新图库,发了这个广播进入相册就可以找到你保存的图片了!*/ Toast.makeText(this,"saved", Toast.LENGTH_SHORT).show(); } catch(Exception e) { Toast.makeText(this, "exception:" + e, Toast.LENGTH_SHORT).show(); } }
@Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { if (requestCode == 1) { if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { Log.i("权限已经获取","权限已经获取"); //Toast.makeText(XXXActivity.this, "Permission GET", Toast.LENGTH_SHORT).show(); } else { // Permission Denied //Toast.makeText(XXXActivity.this, "Permission Denied", Toast.LENGTH_SHORT).show(); } }else{ //申请其它权限 } super.onRequestPermissionsResult(requestCode, permissions, grantResults); super.onRequestPermissionsResult(requestCode, permissions, grantResults); }