How to Display Animated GIF in a Xamarin based Android Application?
Related: Display Animated GIF in a Xamarin based Android Application
Android doesn’t provide any support for GIF animation in the ImageView. This post gives you complete information about displaying GIF in a Xamarin based Android application.
Note: This example is based on Xamarin based Android Application using C# language. If you are looking for a native java based solution, I like to suggest StackOverflow post( https://stackoverflow.com/questions/6533942/adding-gif-image-in-an-imageview-in-android)
Please follow the following steps to display animated GIF in an Android application.
Step 1: Install “Refractored.GifImageView” Nuget package into your Xamarin based Android project.
Link: https://www.nuget.org/packages/Refractored.GifImageView
Step 2: Add the following code into your Main Android Layout file (XML) or in the layout where you want to display GIF image.
<com.felipecsl.gifimageview.library.GifImageView android:id="@+id/myGIFImage" android:layout_gravity="center" android:scaleType="fitCenter" android:layout_width="match_parent" android:layout_height="match_parent" />
Step 3: Add GIF file to your Drawable folder ( here loading.gif)
Step 4: Update your Activity class.
Add using statement:
using Felipecsl.GifImageViewLibrary;
Find the GIFImageView and load animation
GifImageView myGIFImage;
protected override void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); // Set our view from the "main" layout resource SetContentView(Resource.Layout.Main); myGIFImage= FindViewById<GifImageView>(Resource.Id.myGIFImage); // From Drawable Stream input = Resources.OpenRawResource(Resource.Drawable.loading); // You should convert the "input" into Byte Array byte[] bytes = ConvertByteArray(input); myGIFImage.SetBytes(bytes); myGIFImage.StartAnimation(); } private byte[] ConvertByteArray(Stream input) { byte[] buffer = new byte[16 * 1024]; using (MemoryStream ms = new MemoryStream()) { int read; while ((read = input.Read(buffer, 0, buffer.Length)) > 0) ms.Write(buffer, 0, read); return ms.ToArray(); } }
You can stop animation using the following code
myGIFImage.StopAnimation();
and start again using
myGIFImage.StartAnimation();
That all done. You can also find more details about the same here (https://github.com/Jignesh-Darji/GifImageView-Xamarin.Android)
Read more Xamarin related posts: https://jigneshdarji.com/category/xamarin/