Поделиться изображением с Glide
У меня есть активность с ViewPager
и соответствующий адаптер с изображениями, чтобы я мог сдвинуть их влево или вправо. Изображения загружаются библиотекой Glide из ответа API, они сохраняются с diskCacheStrategy(DiskCacheStrategy.RESOURCE)
, Поэтому мне интересно, как я могу поделиться ими с родным андроид поделиться? Мне нужен путь к изображению, которое я не могу найти.
Вот код:
адаптер:
@NonNull
@Override
public Object instantiateItem(@NonNull ViewGroup container, int position) {
View view = layoutInflater.inflate(R.layout.image_preview_item, container, false);
String imageUrl = mImageObjectList.get(position);
currentImage = view.findViewById(R.id.ivCurrentImage);
GlideApp.with(mContext)
.asDrawable()
.load(imageUrl)
.override(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL)
.diskCacheStrategy(DiskCacheStrategy.RESOURCE)
.transition(DrawableTransitionOptions.withCrossFade())
.into(currentImage);
container.addView(view);
return view;
}
И я имею shareSelectedImage()
метод в адаптере, который будет вызываться из основного действия, когда пользователь нажимает на общий ресурс:
public void shareSelectedImage() {
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("image/jpg");
String shareBody = "Text body";
intent.putExtra(Intent.EXTRA_STREAM, ?????);
//intent.putExtra(Intent.EXTRA_TEXT, shareBody);
listener.shareImage(intent);
}
Так что я не знаю, как получить Uri из текущего изображения в адаптере от Glide на месте знака вопроса? Любой совет? Или любая другая идея о том, как это реализовать? Заранее спасибо!
2 ответа
Сначала получите выбранное изображение
в вашем адаптере
currentImage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent DisplayImage=new Intent(context.getApplicationContext(), DisplayImage.class);
DisplayImage.putExtra("ImageUrl",imageUrl);
context.startActivity(DisplayImage);
}
});
Совместное использование изображения с отображением изображения, затем загрузите это изображение в ImageView с помощью Glide, затем сохраните это изображение на устройстве и получите путь к изображению для сохранения, затем поделитесь им с другим приложением
Или же
реализация 'com.github.bumptech.glide:glide:4.15.0'
var mImgBitmap: Bitmap? = null
Glide.with(this).asBitmap().load("url").into(
object : CustomTarget<Bitmap?>() {
override fun onResourceReady(resource: Bitmap, transition: Transition<in Bitmap?>?) {
mImgBitmap = resource
imgView.setImageBitmap(resource)
}
override fun onLoadCleared(placeholder: Drawable?) {}
})
val share = Intent(Intent.ACTION_SEND)
share.type = "image/*"
val bytes = ByteArrayOutputStream()
mImgBitmap?.compress(Bitmap.CompressFormat.JPEG, 100, bytes)
val path = MediaStore.Images.Media.insertImage(
requireActivity().contentResolver,
mImgBitmap, "Title", null)
val imageUri: Uri = Uri.parse(path)
share.putExtra(Intent.EXTRA_STREAM, imageUri)
share.putExtra(Intent.EXTRA_TEXT, "Here is text")
startActivity(Intent.createChooser(share, "Share via"))