以往APP分享的都是将下载链接以文本方式分享给好友,但是我们如果想要添加一些广告元素进去,文本就难以抓住人的眼球。最近我就接了这样一个需求,把分享界面以图片的形式分享给好友。如果你恰好也有类似的需求,那么这篇文章可以帮到你!
效果图:
开始我想是否可以借助系统的截屏功能,然后对图片进行裁剪。把手机的状态栏部分截取掉。但是我希望去掉我布局中的一些控件,比如分享按钮。
我的分享界面:
后来就有了这样一个思路:用ViewGroup生成一张图片,具体的实现如下:
1.在XML布局中,把相关视图用一个ViewGroup包裹
2.将ViewGroup转化为Bitmap
/**把ViewGroup转化为一个bitmap*/
public static Bitmap convertViewToBitmap(View view){
view.setDrawingCacheEnabled(true);
view.measure(View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED),
View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED));
view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight());
view.buildDrawingCache();
Bitmap bitmap = view.getDrawingCache();
return bitmap;
}
3.将Bitmap存为图片文件
/**保存图片到本地*/
private void savaBitmap() {
File appDir = new File(Environment.getExternalStorageDirectory(), "erweima");
if (!appDir.exists()) {
appDir.mkdir();
}
fileName = System.currentTimeMillis() + ".jpg";
file = new File(appDir, fileName);
try {
FileOutputStream fos = new FileOutputStream(file);
llBitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos);
fos.flush();
fos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
4. 将图片文件分享给好友
/** android 自带分享图片功能*/
private void share() {
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("image/*");
intent.putExtra(Intent.EXTRA_SUBJECT, "分享");
intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(file));
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(Intent.createChooser(intent, ShareActivity.this.getTitle()));
ShareActivity.this.overridePendingTransition(R.anim.share_in_from_bottom, 0);
}
最后是我分享出去的图片的效果: