androidandroid-notificationsgifandroid-glideremoteview

Show GIF with glide in android notification


I have been trying to show a .gif image inside my custom notification using Glide library. I am only able to show static image on the notification panel.

    RemoteViews collapsedView = new RemoteViews(getPackageName(), R.layout.notification_collapsed);
    RemoteViews expandedView = new RemoteViews(getPackageName(), R.layout.notification_expanded);

    collapsedView.setTextViewText(R.id.text_view_collapsed_1,"Hello World!");


    NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this, CHANNEL_ID)
            .setSmallIcon(R.drawable.ic_launcher_background)
            .setStyle(new NotificationCompat.DecoratedCustomViewStyle())
            .setCustomContentView(collapsedView)
            .setCustomBigContentView(expandedView);

    final Notification notification = mBuilder.build();


    notificationManager.notify(NOTIFICATION_ID,notification);

    notificationTarget = new NotificationTarget(
            getApplicationContext(),
            R.id.image_view_expanded,
            expandedView,
            notification,
            NOTIFICATION_ID
            );

    Glide.with(MainActivity.this)
            .asBitmap()
            .load(R.drawable.giphy)
            .into(notificationTarget);

The drawable is a .gif file. When the notification pops up it shows a static image as I am using .asBitmap(). I tried using

Glide.with(MainActivity.this)
            .asGif()
            .load(R.drawable.giphy)
            .into(notificationTarget);

but i am getting an error "Cannot resolve method 'into(NotificationTarget)'". I have looked around for solutions but i was unable to find one. So how can I show a GIF file with glide in android's notification panel? Is it possible?


Solution

  • Android doesn't support GIF and Videos in notification because notification is built using RemoteViews and RemoteViews doesn't support GIF or Videos.

    Also, Glide maintainer answered a similar question here. I am quoting the answer.

    It doesn't look like RemoteViews supports setting a Drawable? https://developer.android.com/reference/android/widget/RemoteViews.html.

    If there's a way to set an animated drawable in a notification in general, you can probably find a way to do it with a custom Target in Glide.