前段时间在做友盟分享 要求分享指定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, 分享平台);