У меня есть пользовательский вид в моем приложении, который заполняет всю активность.
В большинстве случаев, когда я хочу обновить элемент управления, я вызываю invalidate()
без каких-либо параметров.
Однако, в некоторых случаях, когда я изменяю только небольшую область элемента управления, я вызываю invalidate(Rect)
, чтобы избежать перерисовки всего экрана. Это важно, потому что в этих ситуациях я
необходимо, чтобы обновление было как можно быстрее.
Это работает отлично, однако, когда я включаю аппаратное ускорение в Honeycomb (т.е. устанавливаю android:hardwareAccelerated="true"
в AndroidManifest.xml), частичное перерисовка не работает.
Это можно увидеть, если я выполняю Log.d("FOO", canvas.getClipBounds())
в методе onDraw()
; выход просто показывает, что весь элемент управления обновляется, а при отключении аппаратного ускорения я получаю правильную область вывода.
Есть ли способ сделать частичную недействительность работы при использовании аппаратного ускорителя?
Большое спасибо, Matt