Android 友盟分享(截圖指定的View分享)
阿新 • • 發佈:2019-01-02
前段時間在做友盟分享 要求分享指定view 並儲存 下面是我常用的幾個方法 給大家分享一下:
1.第一個方法:
/** * 根據指定的view截圖 並儲存 * @param v 要截圖的view * @return Bitmap */ public void getViewBitmap(View v) { if (null == v) { return; } v.setDrawingCacheEnabled(true); v.buildDrawingCache(); if (Build.VERSION.SDK_INT >= 11) { v.measure(View.MeasureSpec.makeMeasureSpec(v.getWidth(), View.MeasureSpec.EXACTLY), View.MeasureSpec.makeMeasureSpec(v.getHeight(), View.MeasureSpec.EXACTLY)); v.layout((int) v.getX(), (int) v.getY(), (int) v.getX() + v.getMeasuredWidth(), (int) v.getY() + v.getMeasuredHeight()); } else { v.measure(View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED), View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED)); v.layout(0, 0, v.getMeasuredWidth(), v.getMeasuredHeight()); } Bitmap bitmap = Bitmap.createBitmap(v.getDrawingCache(), 0, 0, v.getMeasuredWidth(), v.getMeasuredHeight()); v.setDrawingCacheEnabled(false); v.destroyDrawingCache(); //儲存到相簿 MediaStore.Images.Media.insertImage(getContentResolver(), bitmap, "***" + System.currentTimeMillis(), "分享圖片"); //廣播通知重新整理相簿 sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(new File("/sdcard/Boohee/image.jpg")))); ToastManager.toast("儲存成功"); }
2.第二個方法:
/** * 將view轉化為bitmap */ public static Bitmap view2Bitmap(final View view) { if (view == null) return null; Bitmap ret = Bitmap.createBitmap(view.getWidth(), view.getHeight(), Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(ret); Drawable bgDrawable = view.getBackground(); if (bgDrawable != null) { bgDrawable.draw(canvas); } else { canvas.drawColor(Color.WHITE); } view.draw(canvas); return ret; }
3.友盟分享方法:
/** * 分享圖片 */ public static void WxBitmapShare(Context context, Bitmap bitmap, SHARE_MEDIA platform) { if (!WeiXinInstallUtils.isWeixinAvailable(context)) { ToastManager.toast("請先安裝微信"); return; } UMImage image = new UMImage(context, bitmap); new ShareAction((Activity) context) .withText("哈哈") .setPlatform(platform) .withMedia(image) .setCallback(new UMShareListener() { @Override public void onStart(SHARE_MEDIA share_media) { } @Override public void onResult(SHARE_MEDIA share_media) { ToastManager.toast("分享成功"); } @Override public void onError(SHARE_MEDIA share_media, Throwable throwable) { if (throwable != null) { Log.d("throw", "throw:" + throwable.getMessage()); } ToastManager.toast("分享失敗"); } @Override public void onCancel(SHARE_MEDIA share_media) { ToastManager.toast("分享取消"); } }).share(); }
下面是具體使用:
Bitmap mWXShareBitmap = view2Bitmap(iv_bg);
ShareUtils.WxBitmapShare(context, mWXShareBitmap, 分享平臺);