我制作了一个自定义键盘,允许用户发送GIF /图像。
当前,每当用户点击ImageView
时,就会运行以下代码。它检查ImageView
内部的可绘制对象是否具有动画效果(即,图像是GifDrawable
),如果不是,则将其投射到BitmapDrawable
。 context.contentComitter.commit()
负责将投射的可绘制对象转换为其他应用可以读取的文件。
if(holder.imageView.drawable is GifDrawable) {
context.contentCommitter.commitGifDrawable(holder.imageView.drawable, fileName)
} else {
context.contentCommitter.commitBitmapDrawable(holder.imageView.drawable as BitmapDrawable, fileName)
}
问题是-我仅在三星Galaxy S9s上对某些图像遇到以下崩溃:
致命异常:java.lang.ClassCastException android.graphics.drawable.VectorDrawable无法转换为android.graphics.drawable.BitmapDrawable
该解决方案似乎很简单-只需再次检查holder.imageView.drawable
是否为VectorDrawable
,如果是,则提取Bitmap
并将其写入文件。
但是,问题是VectorDrawable
源似乎是GIF文件,而不是静态图像。这令人困惑,因为VectorDrawable
文档中的方法表明它仅用于存储静态图像。
VectorDrawable
是否可能包含动画图像(即GIF),或者VectorDrawable
是否仅包含静态图像?