AnimationDrawable не работает при вызове start() в кастомном View

Мне необходимо отрисовывать анимацию на кастомной вьюшке, однако она не двигается, в то время как при использовании ImageView все работает, так что animation.xml правильный.

Мой Фрагмент

@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);

    AnimationDrawable drawable = ((GraphicsView) view.findViewById(R.id.GV)).drawable;
    drawable.start();

}

Моя вьюшка

public class GraphicsView extends View {

public AnimationDrawable drawable;

public GraphicsView(Context context) {
    super(context);
    drawable = (AnimationDrawable) ContextCompat.getDrawable(context, R.drawable.animation);
    drawable.setBounds(0,0, 1000, 1000);
}

public GraphicsView(Context context, AttributeSet attrs)
{
    super(context, attrs);
    drawable = (AnimationDrawable) ContextCompat.getDrawable(context, R.drawable.animation);
    drawable.setBounds(0,0, 1000, 1000);
}

public GraphicsView(Context context, AttributeSet attrs, int defStyleAttr)
{
    super(context, attrs, defStyleAttr);
    drawable = (AnimationDrawable) ContextCompat.getDrawable(context, R.drawable.animation);
    drawable.setBounds(0,0, 1000, 1000);
}

@Override
protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);
    assert drawable!=null;
    drawable.draw(canvas);
    invalidate();
}

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
    super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}

}

Итак если я использую GraphicsView, анимация не работает, однако если я добавлю в onDraw() drawable.run() вот так:

@Override
protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);
    assert drawable!=null;
    drawable.draw(canvas);
    drawable.run();
    invalidate();
}

, то анимация будет проигрываться, однако без задержки между кадрами.

animation.xml здесь

фреймы - просто .png файлы.

линк на ангийскую версию


Ответы (0 шт):