Ear*_*rey 5 java android android-webview android-9.0-pie
我是 Android 新手,正在开发一个包含片段的应用程序。其中一个片段包含一个WebView. 我正在使用 a,ProgressBar正如许多 webview 教程中提到的那样,以便在页面加载时有一个加载动画。
问题是,当我运行应用程序并加载页面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);
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的 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>
Run Code Online (Sandbox Code Playgroud)
我只是不明白我做错了什么。
我自己找到了答案。我必须覆盖 shouldOverrideUrlLoading() 而不是 onPageStarted(),以便在单击链接后立即显示 ProgressBar,而不是稍后显示。
private class MyWebviewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
webProgress.setVisibility(View.VISIBLE);
return super.shouldOverrideUrlLoading(view, url);
}
@Override
public void onPageFinished(WebView view, String url) {
webProgress.setVisibility(View.GONE);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
944 次 |
| 最近记录: |