Анимированный Drawable останавливает анимацию при смене холста - PullRequest
0 голосов
/ 20 апреля 2020

Я пытаюсь добавить анимированный GIF в качестве стикера, все работает нормально, но всякий раз, когда я изменяю цвет холста с помощью приведенного ниже кода, анимированный GIF перестает анимироваться, и для его повторной анимации мне нужно переместить его Canvas или я вызываю drawable.setCallBack() метод

ColorDrawable cd = new ColorDrawable(selectedColor);
img.setImageDrawable(cd);
Bitmap bitmap = Bitmap.createBitmap(originalImage.getWidth(), originalImage.getHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
cd.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());
cd.draw(canvas);  

, чтобы снова оживить его, мне нужно вызывать этот метод каждый раз

   drawable.setCallback(new Drawable.Callback() {
                    @Override
                    public void invalidateDrawable(@NonNull Drawable who) {
                        stickerView.invalidate();
                    }

                    @Override
                    public void scheduleDrawable(@NonNull Drawable who, @NonNull Runnable what, long when) {
                        new Handler().postAtTime(what, who, when);
                    }

                    @Override
                    public void unscheduleDrawable(@NonNull Drawable who, @NonNull Runnable what) {
                        //stickerView.removeCallbacks(what);
                    }
                });  

Есть ли способ, чтобы оживить все время без вызова setCallback метода invalidate каждый раз,

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...