Эти флаги были удалены в API 28. См. здесь :
Класс android.graphics.Canvas
Удаленные методы
int save (int)
Удаленные поля
int CLIP_SAVE_FLAG
int CLIP_TO_LAYER_SAVE_FLAG
int FULL_COLOR_LAYER_SAVE_FLAG
int HAS_ALPHA_LAYER_SAVE_FLAG
int MATRIX_SAVE_FLAG
Этот метод устарел в API 26. См. здесь :
Этот метод устарел на уровне API 26.
Вместо этого используйте saveLayer (float, float, float, float, Paint).
Что использовать вместо
Согласно исходному коду Canvas
для API 28 все флаги, которые вы используете, объединяются, чтобы быть равными значению ALL_SAVE_FLAG
:
public static final int ALL_SAVE_FLAG = 0x1F;
public static final int MATRIX_SAVE_FLAG = 0x01;
public static final int CLIP_SAVE_FLAG = 0x02;
public static final int HAS_ALPHA_LAYER_SAVE_FLAG = 0x04;
public static final int FULL_COLOR_LAYER_SAVE_FLAG = 0x08;
public static final int CLIP_TO_LAYER_SAVE_FLAG = 0x10;
Из того же исходного кода вызов Canvas#saveLayer(left, top, right, bottom, paint)
по умолчанию использует ALL_SAVE_FLAG
:
/**
* Convenience for {@link #saveLayer(RectF, Paint)} that takes the four float coordinates of the
* bounds rectangle. */
public int saveLayer(float left, float top, float right, float bottom, @Nullable Paint paint) {
return saveLayer(left, top, right, bottom, paint, ALL_SAVE_FLAG);
}
Похоже, ваш код эквивалентен следующему коду, который вы можете использовать в качестве замены:
canvas.saveLayer(0, 0, getWidth(), getHeight(), null);
Эта версия saveLayer () доступна только для API 21+. Для поддержки более низких уровней API используйте
canvas.saveLayer(0, 0, getWidth(), getHeight(), null, Canvas.ALL_SAVE_FLAG);
Где Canvas.ALL_SAVE_FLAG
соответствует значениям или , указанным выше.