我正在开发一款Android应用,我必须实现与其他消息应用共享GIF的功能。
为此我将存储在临时文件中并通过意图传递文件的URL。我的gif存储为drawable。因此,在检索它时,我使用FileOutputStream和Bitmap.Compress。由于这个而不是GIF我得到一个stil图像。
另外,我尝试将Bitmap转换为字节数组而不进行压缩,但在这种情况下我的图像没有显示
我的代码分享gif:
int drawableId = gridItemList.get(position);
Bitmap contentToShare = BitmapFactory.decodeResource(getResources(), drawableId);
try {
File cachePath=new File(getApplicationContext().getFilesDir(),"content");
cachePath.mkdirs();
FileOutputStream stream=new FileOutputStream(cachePath+"/anim.gif");
contentToShare.compress(Bitmap.CompressFormat.PNG, 100, stream);
stream.close();
File imagePath = new File(getApplicationContext().getFilesDir(), "content");
File newFile = new File(imagePath,"anim.gif");
Uri contentURI=FileProvider.getUriForFile(getApplicationContext(),getPackageName()+".fileprovider",newFile);
if(contentURI!=null) {
Intent shareIntent = new Intent();
shareIntent.setAction(Intent.ACTION_SEND);
shareIntent.putExtra(Intent.EXTRA_STREAM, contentURI);
shareIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
shareIntent.setType("image/gif");
startActivity(shareIntent);
}
}catch (Exception e) {
Log.e("Exception",e.toString());
}
PS:分享jpeg和png工作正常。
答案 0 :(得分:-1)
使用Glide库显示您的GIF
在你的Gradle中:
compile 'com.github.bumptech.glide:glide:3.7.0'
要编写的代码:
String gifUrl = "http://i.kinja-img.com/gawker-media/image/upload/s--B7tUiM5l--/gf2r69yorbdesguga10i.gif";
Glide
.with( context )
.load( gifUrl )
.into( imageViewGif );