我有动画透明的gif图像,需要在android中显示它。我尝试了Component GifImageView,一切正常,但背景是黑色不透明。
由于
Stream input = Assets.Open("oie_2103618iUK1c2Pr.gif");
byte[] bytes;
using (MemoryStream ms = new MemoryStream())
{
input.CopyTo(ms);
bytes = ms.ToArray();
}
_gifImageView = new GifImageView(this);
_gifImageView.SetBytes(bytes);
_gifImageView.Background = new ColorDrawable(Color.Transparent);
LinearLayout giflayout = FindViewById<LinearLayout>(Resource.Id.gif);
giflayout.AddView(_gifImageView);
答案 0 :(得分:2)
尝试添加:
GifImageView.setBackgroung();
或阅读:Transparent GIF in Android ImageView
你可以使用另一个库,比如Android Gif Drawable(GifImageView不支持透明的GIF),或者使用gif编辑器在gif中设置背景颜色(不透明)。
答案 1 :(得分:0)
你无法为gif图像设置透明背景。只需使用在线gif编辑器删除它。其中有很多
答案 2 :(得分:0)
当前版本的GifImageView几天前没有透明度变化。通过让我的Activity继承自GifImageView.IOnFrameAvailableListener并将我的gifImageView.OnFrameAvailableListener设置为Activity(如here所示),我能够使它工作。最后一件事是在Activity本身实现OnFrameAvailable。
public Bitmap OnFrameAvailable(Bitmap bitmap)
{
if (bitmap != null) {
var newBitmap = bitmap.Copy (Bitmap.Config.Argb8888, true);
newBitmap.HasAlpha = true;
var pixelArray = new int[bitmap.Width * bitmap.Height];
bitmap.GetPixels (pixelArray, 0, bitmap.Width, 0, 0, bitmap.Width, bitmap.Height);
for (int ctr = 0; ctr <pixelArray.Count(); ctr++)
{
pixelArray[ctr] = pixelArray[ctr] == -16777216 ? 0 : pixelArray[ctr];
}
newBitmap.SetPixels (pixelArray, 0, bitmap.Width, 0, 0, bitmap.Width, bitmap.Height);
return newBitmap;
}
return bitmap;
}
这对我有用,希望它也适合你。如果看到白色背景,则可能需要将-16777216更改为-1。希望GifImageView很快得到更新,因为这种后处理并不理想。