Есть ли способ повысить скорость загрузки локального файла .html
в WebView
. Файлы .html
хранятся в папке /assets
.
Как вы можете видеть на видео (извините, ссылка сломана!), TextView
(red beackground) отображается до начала транзистора, а текст в WebView
отображается после этого. Как я могу достичь загрузки WebView
так же быстро, как TextView?
//current implementation
webView.setInitialScale(1);
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setLoadWithOverviewMode(true);
webView.getSettings().setUseWideViewPort(true);
webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
webView.setScrollbarFadingEnabled(false);
webView.loadUrl("file:///android_asset/disclaimer.html");
СУЩНОСТЬ
Это невозможно. Я пробовал все комментарии здесь, и это не имело никакого значения.
Я спрашиваю, что у нас было приложение для iOS и Android, которое в основном состоит из простых TextViews
и Images
. Поэтому у нас возникла идея создания локальных html
файлов, которые мы могли бы использовать в обоих приложениях. В iOS
это работает как шарм, но в Android
мы не могли избавиться от времени загрузки, поэтому у меня всегда был пустой экран, и через 100-200 м. Появился контент.
Я предполагаю, что Androids WebView
начинает рендеринг, если активность видна. Это действительно имеет смысл в режиме онлайн, потому что вы не хотите загружать несколько html-страниц, которые пользователь открывает в новом приложении в фоновом режиме, прежде чем он их сосредоточит. Однако в автономном режиме (локальные файлы html, хранящиеся в приложении assets
) это поведение не требуется, но вы не можете его изменить.
Теперь мы действительно сейчас, почему телефонная связь и сосание.
Только для записи:
В конце я использовал операцию с пустым контейнером LinearLayout
, где вы могли вставлять содержимое программно. Каждый стиль (Headline 1, Headline 2, Content...) имел собственный XML файл макета
public void insertHeadline(int id){
String text = getString(id);
TextView headline = (TextView) inflater.inflate(R.layout.layout_text_headline, null, false);
headline.setText(text);
//add this TextView to the empty container
myLinearLayoutContainerView.addView(headline);
}