У меня есть действие, которое использует FrameLayout для рисования двух слоев на экране. Первый, сзади, это ImageView, отображающий растровое изображение - масштабируется до полного размера экрана с помощью match_parent
. Второй, впереди, небольшой рисованный объект, реализованный с помощью animation-list
- по сути, это набор кадров PNG, которые составляют анимированный значок (примерно 10 кадров с android: длительность = 100 мс каждый). Изображения PNG в анимации используют прозрачность, так что вы можете видеть фоновый ImageView позади него, и все это мало по сравнению с ImageView - это действительно значок в верхней части изображения.
Я заметил, что это простое приложение, похоже, потребляет немного ресурсов процессора. Чтобы помочь отследить его, я расширил ImageView, чтобы переопределить onDraw для фонового изображения, и обнаружил, что процедура onDraw, кажется, вызывается каждый раз, когда анимация переднего плана обновляется. Это ожидаемое поведение? Я ожидал бы, что содержимое ImageView должно где-то кэшироваться, поэтому ему не нужно перерисовывать свое растровое изображение, если ничего не меняется.
Есть ли лучший способ получить эту функциональность?