如何使用意图和Glide将ImageView中的完整加载图像集与文本一起分享给应用程序什么.....我看了很多,但我只在毕加索图书馆找到link或者如果链接已经死了谷歌这句话:
与意图共享内容·codepath_android_guides Wiki.htm
答案 0 :(得分:2)
我在阅读了毕加索的滑行和缓存后找到了解决问题的有效方案,所以我得到的逻辑是: 当glide成功加载图像然后在图像视图中设置位图然后也因为图像已被缓存利用缓存的图像并使用图像就好像它是正常图像然后将其传递给共享意图你或我会定义。 代码是:EventfaceImage 是我定义的imageview,
Glide.with(context).load(uri).asBitmap().diskCacheStrategy(DiskCacheStrategy.ALL)
.dontAnimate().into(new BitmapImageViewTarget(EventfaceImage) {
@Override
public void onResourceReady(final Bitmap bmp, GlideAnimation anim) {
share.setVisibility(View.VISIBLE);
EventfaceImage.setImageBitmap(bmp);
share.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
menu_float.close(true);
prepareShareIntent(bmp);
}
});
}
@Override
public void onLoadFailed(Exception e, Drawable errorDrawable) {
super.onLoadFailed(e, errorDrawable);
}
});
然后是 prepareShareIntent(); 方法
private void prepareShareIntent(Bitmap bmp) {
Uri bmpUri = getLocalBitmapUri(bmp); // see previous remote images section
// Construct share intent as described above based on bitmap
shareIntent = new Intent();
shareIntent.setPackage("com.whatsapp");
shareIntent.setAction(Intent.ACTION_SEND);
shareIntent.putExtra(Intent.EXTRA_TEXT, getResources().getString(R.string.shared_via) );
shareIntent.putExtra(Intent.EXTRA_STREAM, bmpUri);
shareIntent.setType("image/*");
shareIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
startActivity(Intent.createChooser(shareIntent, "Share Opportunity"));
}
private Uri getLocalBitmapUri(Bitmap bmp) {
Uri bmpUri = null;
File file = new File(getExternalFilesDir(Environment.DIRECTORY_PICTURES), "share_image_" + System.currentTimeMillis() + ".png");
FileOutputStream out = null;
try {
out = new FileOutputStream(file);
bmp.compress(Bitmap.CompressFormat.PNG, 90, out);
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
bmpUri = Uri.fromFile(file);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
return bmpUri;
}
这适用于我在API 22。所以我希望这将有助于某人,但我还没有测试在Android中的所有api如果不请让我知道,我会看到我可以破解。也可以随意改进代码并分享为您工作的内容
答案 1 :(得分:0)
不建议使用以下方法,而推荐使用以下方法
Glide.with(context)
.asBitmap()
.load(url)
.into(new Target<Bitmap>() {
@Override
public void onLoadFailed(@Nullable Drawable errorDrawable) {
}
@Override
public void onResourceReady(@NonNull Bitmap resource, @Nullable Transition<? super Bitmap> transition) {
}
});