private void saveAndShare() {
requestNotifyShare();
Bitmap bitmap = view2Bitmap(binding.saveLayout);
try {
String uriPath = MediaStore.Images.Media.insertImage(getContext().getContentResolver(), bitmap, "aomi_share_" + System.currentTimeMillis(), "des_" + System.currentTimeMillis());
if (!TextUtils.isEmpty(uriPath)) {
String imgPath = FileUtils.getRealPathFromUri(getContext().getContentResolver(), Uri.parse(uriPath));
File file = new File(imgPath);
getContext().sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(file)));
if (!StringUtils.isNull(imgPath)) {
startShare(imgPath);
} else {
//生成圖片失敗
ToastManager.showToast(getResources().getString(R.string.save_photo_failed));
}
}
} catch (Exception e) {
e.printStackTrace();
ToastManager.showToast(getResources().getString(R.string.save_photo_failed));
}
}
private Bitmap view2Bitmap(View view) {
if (view == null) {
return null;
} else {
boolean drawingCacheEnabled = view.isDrawingCacheEnabled();
boolean willNotCacheDrawing = view.willNotCacheDrawing();
view.setDrawingCacheEnabled(true);
view.setWillNotCacheDrawing(false);
Bitmap drawingCache = view.getDrawingCache();
Bitmap bitmap;
if (null == drawingCache) {
view.measure(View.MeasureSpec.makeMeasureSpec(0, 0), View.MeasureSpec.makeMeasureSpec(0, 0));
view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight());
view.buildDrawingCache();
drawingCache = view.getDrawingCache();
if (drawingCache != null) {
bitmap = Bitmap.createBitmap(drawingCache);
} else {
bitmap = Bitmap.createBitmap(view.getMeasuredWidth(), view.getMeasuredHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
view.draw(canvas);
}
} else {
bitmap = Bitmap.createBitmap(drawingCache);
}
view.destroyDrawingCache();
view.setWillNotCacheDrawing(willNotCacheDrawing);
view.setDrawingCacheEnabled(drawingCacheEnabled);
return bitmap;
}
}
public static String getRealPathFromUri(ContentResolver contentResolver, Uri srcUri) {
String result = null;
if (isLocalContentUri(srcUri)) {
Cursor cursor = null;
try {
cursor = contentResolver.query(srcUri, (String[]) null, (String) null, (String[]) null, (String) null);
if (cursor != null && cursor.moveToFirst()) {
int idx = cursor.getColumnIndex("_data");
if (idx != -1) {
result = cursor.getString(idx);
}
}
} finally {
if (cursor != null) {
cursor.close();
}
}
} else if (isLocalFileUri(srcUri)) {
result = srcUri.getPath();
}
return result;
}
private static boolean isLocalContentUri(@Nullable Uri uri) {
String scheme = getSchemeOrNull(uri);
return "content".equals(scheme);
}
private static boolean isLocalFileUri(@Nullable Uri uri) {
String scheme = getSchemeOrNull(uri);
return "file".equals(scheme);
}
private static String getSchemeOrNull(@Nullable Uri uri) {
return uri == null ? null : uri.getScheme();
}版权声明:本文为qq_38373150原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。