Я разрабатываю приложение с SDK 11 (Honeycomb).В этом приложении я использую аппаратное ускорение (на уровне приложения), чтобы сделать анимацию более плавной, а без нее она неприемлемо вялая.Поскольку мой клиент действительно хочет получить их, я должен найти другое решение, чем отключение ускорения.
Сама проблема в том, что у меня есть Activity
, который содержит несколько WebView
элементов.3, если быть точным - 1 всегда отображается, а 2 других используются для предварительной загрузки страниц, поэтому они невидимы (я имею в виду, что они расположены за пределами экрана, но все еще «видны»).Я использую анимацию перевода, чтобы «переключаться» между ними.При включенном аппаратном ускорении они неправильно отображают веб-страницы - у меня появляются большие, мерцающие черные квадраты на странице.Это, конечно, неприемлемо, поэтому я обошел проблему, отключив аппаратное ускорение для всех WebView:
webView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
Я также попытался установить это в XML-файле (android:layerType="software"
), но он работал точнотак же (как и должно быть).В любом случае, оба эти метода работают довольно хорошо - анимация и веб-представления достаточно плавные, и нет никаких артефактов.Проблема возникает, однако, как только ориентация меняется.Несмотря на то, что я не делаю важных различий между портретным и ландшафтным режимами в моем коде, он работает следующим образом:
- Деятельность начинается в портретном режиме, изменяет ориентацию на альбомную, обратно на портретную и т.Все работает как положено.
- Активность начинается в ландшафтном режиме.Работает нормально.Ориентация меняется на портретную.Артефакты начинают проявляться снова.Чаще всего весь экран просто становится черным с веб-страницей, показывающей один раз в голубой луне, когда я прокручиваю / увеличиваю страницу.Это точно так же, как если бы WebViews использовал аппаратное ускорение.Вернемся к пейзажу - все снова работает нормально.
Это привело меня к мысли, что проблема может быть в аппаратном ускорении.Я был прав, пытаясь установить ускорение программного обеспечения на разных уровнях иерархии представления, чтобы увидеть, прекращается ли это странное поведение.Я обнаружил, что он действительно останавливается и работает без ошибок, но только после того, как вся активность программно ускоряется, что для меня неприемлемо (анимация моего перевода! [+ Медленная прокрутка в веб-просмотрах]).Если только программные представления / группы просмотра в файле XML макета настроены для ускорения программного обеспечения, это по-прежнему приводит к ошибкам.Есть ли что-то в изменениях ориентации, которые могут вызвать такое поведение?Любые решения, хаки, подсказки, предложения, идеи, мысли, пусть и неполные, приветствуются - я вне их.
Если вам нужна дополнительная информация или какой-то код, я с радостью предоставлю его вам.Спасибо за ваше время!