Intereting Posts
Как отображать HTML в TextView? Способы получения позиции просмотра 0 INSTALL_FAILED_UPDATE_INCOMPATIBLE отображается даже после полного удаления оригинала Android Volley ImageLoader – Как использовать базовую авторизацию HTTP? FFMPEG исчезает и исчезает для наложения Переупорядочить страницы в FragmentStatePagerAdapter, используя getItemPosition (объект Object) Genymotion: файл Edit / system / etc / hosts Удалить значок / логотип из панели действий на Android Сохранить арриалист строк для общих настроек Android: Как установить сгенерированный заголовок contextMenu? Единичные тесты NPE, когда я добавляю пользовательские переходы фрагментов Kotlin on android: Не удается найти основной объединенный манифест. Что вызывает эту ошибку? Как установить высоту ячейки GridView на основе высоты экрана? Заменить жест Google Now Двоичная строка XML-файла # 17: ошибка раздувания класса <unknown>, вызванная UnsupportedOperationException: невозможно преобразовать в измерение: type = 0x2

WebView «мигает» на белом фоне, если аппаратное ускорение включено (Android 3.0+)

У меня проблема с WebView (Android 3.0+), которую WebView всегда отображает на белом фоне перед отображением моего черного фона («мигает»). Вот мой простой тестовый код:

@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); WebView webView = new WebView(this); webView.setBackgroundColor(Color.BLACK); setContentView(webView); loadWebView(webView); webView.loadDataWithBaseURL("localhost://", "<html><head>" + "<style>body {background-color: #000}img{max-width:100%}</style></head>" + "<body>" + "<img src=\"http://developer.android.com/images/practices/actionbar-phone-splitaction.png\" />" + "</body></html>", "text/html", "UTF-8", null); } 

Я пробовал много решений, чтобы избавиться от этой проблемы, но не повезло.

PS: Проблема не будет возникать, если аппаратное ускорение отключено. Есть ли у кого-то такая же проблема и ее решить?

Спасибо.

Solutions Collecting From Web of "WebView «мигает» на белом фоне, если аппаратное ускорение включено (Android 3.0+)"

Я нашел наиболее эффективное решение для этого, впервые упомянутое здесь , состояло в том, чтобы установить прозрачный цвет фона после раздувания макета:

 webView.setBackgroundColor(Color.argb(1, 0, 0, 0)); 

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

Обратите внимание, что это не работает при настройке фона в XML.

Это было разрешено в Jellybean, хотя некоторые пользователи сообщили об этом в KitKat. Убедитесь, что вы не отключили аппаратное ускорение, и если проблема действительно исчезнет, ​​вы, вероятно, захотите обернуть этот код в условном выражении только для целевых старых устройств:

 if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) { webView.setBackgroundColor(Color.argb(1, 0, 0, 0)); } 

Я включил аппаратное ускорение для приложения и отключил его для этой активности. Кроме того, я установил фон как null , как упоминалось выше. Теперь это работает для меня.

Другой подход (непроверенный): установить тип слоя для рендеринга программного обеспечения и установить фон в Color.TRANSPARENT (или 0 ): webview.setLayerType(View.LAYER_TYPE_SOFTWARE, null);

Greetz Thorsten

Была ли эта проблема на Android 4.4.4, и ни одно из других решений здесь не работало. Я все-таки возился с onPageFinished() , так что, возможно, попробуем что-нибудь, что должно быть доказательством пули:

Я помещал это в onCreateView() фрагмента, который размещает WebView:

  webView = (WebView) v.findViewById(R.id.webView); webView.setVisibility(View.INVISIBLE); webView.setBackgroundColor(Color.argb(1, 0, 0, 0)); webView.setWebViewClient( new WebViewClient(){ @Override public void onPageFinished(WebView view, String url) { view.setVisibility(View.VISIBLE); super.onPageFinished(view, url); } }); 

Идея состоит в том, чтобы просто скрыть WebView до загрузки первой страницы. Тем не менее, он по-прежнему дал мне небольшую вспышку белого цвета, пока я также не добавил решение, предоставленное Полом Ламмерцмой, webView.setBackgroundColor(Color.argb(1, 0, 0, 0));

Очевидно, это ужасная «функция» версии Android 3. Даже официальное приложение Google Reader содержит эту белую вспышку. Решение состоит в том, чтобы отключить ускорение HW для активности, когда вам нужно использовать быстрый веб-просмотр.

Имел аналогичную проблему с веб-представлением. Я работал над Ice Cream Sandwich и добавлял minSdk = 13 в Android Manifest для меня. Попробуйте поэкспериментировать с этим. Я предполагаю, что в SDK есть ошибка.