在我的Android应用程序中,我从服务器收到一个字节数组,必须将它们转换为.gif图像,然后将其放在视图中。 我已经知道如何使用BitmapFactory将它们转换为静止图像,但图像总是静止不动。 我使用gif-drawable作为.gif图像的容器视图。我用本地动画gif对它进行了测试,效果很好。 如何将字节数组放入gif-drawable视图?
在布局中我有这个:
<pl.droidsonroids.gif.GifImageView
android:id="@+id/imgExerciseImage"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:adjustViewBounds="true"
android:contentDescription="exercise image" />
这是一个类似于可以显示GIF动画的ImageView的视图
我想在其中显示我从firebase服务器收到的图像。这是代码:
imageRef.getBytes(DatabaseConstants.ONE_MEGABYTE * 3).addOnSuccessListener(new OnSuccessListener<byte[]>() {
@Override
public void onSuccess(byte[] bytes) {
Bitmap bitmap = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
imgExerciseImage.setImageBitmap(bitmap);
progressDialog.dismiss();
}
}
byte []是动画gif。但为了把它放在我的视野中,我必须使用byte []来形成图像。在这个例子中,我使用BitmapFactory来创建一个位图。我怎样才能创建一个gif而不是位图?
答案 0 :(得分:1)
看起来gif-drawable附带了一个GifDrawable对象,它可以在它的构造函数中接收一个字节数组来创建一个动画gif,然后可以放在GifImageView中
try {
GifDrawable gif = new GifDrawable(bytes);
imgExerciseImage.setImageDrawable(gif);
} catch (IOException e) {
e.printStackTrace();
}