Наложение системы Android с Canvas или GLSurfaceView очень медленно - PullRequest
3 голосов
/ 10 ноября 2011

Я хочу реализовать что-то нестандартное в Android.

Я создал прозрачный системный оверлей (WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY) поверх всего с помощью GLSurfaceView (затем я изменил его на холст), и я пытаюсь что-то нарисовать на нем.

Проблема в том, что Android становится очень медленным при попытке смешать мой прозрачный слой с другими предметами под ним. Я знаю, что эта операция будет медленной, но она очень медленная. Я тестировал на более или менее мощных устройствах.

Несколько фактов и наблюдений:

  • Мой вид наложения полноэкранный
  • Система работает медленно, даже если я ничего не рисую для наложения
  • Моя вкладка Acer Iconia (10 дюймов) работает намного медленнее, чем мой Droid X (больше пикселей смешивается? Или новый конвейер рендеринга?)
  • Если я использую статический ImageView с прозрачным PNG, то Android смешивает его без проблем. Зачем? Android проверяет, что смешивать каждый кадр?
  • Включение аппаратного ускорения на планшете не действует

Мой вопрос: можно ли как-то его оптимизировать? Я установил фон моего просмотра на ноль, но это не имело никакого эффекта.

Будет ли Android 4.0 медленнее 3,2?

Это особенно медленно, когда накладывает системный оверлей на домашний экран. Почему?

Пожалуйста, не говорите мне, что я пишу неправильные вещи и использую API для вещей, отличных от предназначенных, я уже знаю об этом.

...