#java #android #view #graphics #android-drawable
Вопрос:
Я использую StickerView для добавления стикеров в свое приложение, теперь я пытаюсь добавить GIF drawable
в качестве стикера, приведенный ниже код работает, GifDrawable
он обычно анимирован, но проблема здесь в том, что каждый раз при Drawable
изменении следующего кадра все StickerView
перерисовывается, снова и снова, это потребляет довольно много памяти.
Я попытался аннулировать рисование только с помощью stickerView.invalidateDrawable(who)
, но GifDrawable прекращает анимацию.
GifDrawable gifDrawable = new GifDrawable(gifSticker.getBuffer());
gifDrawableSticker.setGIF(true);
gifDrawable.setCallback(new Drawable.Callback() {
@Override
public void invalidateDrawable(@NonNull Drawable who) {
stickerView.invalidate(); WORKING FINE
//stickerView.invalidateDrawable(who); NOT WORKING
}
@Override
public void scheduleDrawable(@NonNull Drawable who, @NonNull Runnable what, long when) {
stickerView.scheduleDrawable(who, what, when);
}
@Override
public void unscheduleDrawable(@NonNull Drawable who, @NonNull Runnable what) {
stickerView.unscheduleDrawable(who, what);
}
});
stickerView.addSticker(new DrawableSticker(gifDrawable));