Я новичок в Android, я разрабатываю приложение, которое содержит фрагменты. Один из фрагментов содержит WebView
. Я использую ProgressBar
, как это упоминается во многих руководствах для веб-просмотров, чтобы при загрузке страницы была анимация загрузки.
Проблема в том, что когда я запускаю приложение и загружаю страницу в WebView
(независимо от того, является ли это внешним устройством или эмулятором), индикатор выполнения появляется с небольшой задержкой (около 2 секунд), а не сразу после нажатия ссылки, например. Только незадолго до того, как новая страница начинает загружаться, она ненадолго появляется и снова исчезает по мере необходимости при загрузке страницы.
Я протестировал несколько версий Android, и он прекрасно работает на всех из них, кроме Android 9.0
Вот мой WebViewClient
класс, который я использую для моего webView
:
private class MyWebviewClient extends WebViewClient {
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
webProgress.setVisibility(View.VISIBLE);
}
@Override
public void onPageFinished(WebView view, String url) {
webProgress.setVisibility(View.GONE);
}
}
А вот мой файл макета xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<WebView
android:id="@+id/webview"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<ProgressBar
android:id="@+id/progressBar"
style="?android:attr/progressBarStyle"
android:layout_centerInParent="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</RelativeLayout>
Я просто не могу понять, что я делаю неправильно.