android - Android Webview:页面加载时显示图像
问题描述
我是编程新手。我正在尝试使用 Webview/Android 创建一个应用程序。我正在尝试添加一种启动图像,直到网页完成加载。我得到了初始图像,但是在 url 完成加载之前,幸福就结束了。然后在显示页面之前出现白屏。我尝试了许多不同的指南,但没有一个能解决问题。我希望有人可以帮助我解决这个问题。
我希望在网页完成加载和显示页面时显示启动画面或图像,而两者之间没有任何白屏。
这是我的代码:
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<WebView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/webView1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"/>
MainActivity.java
package com.eatnow.brasil
import androidx.appcompat.app.AppCompatActivity;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.webkit.JavascriptInterface;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.graphics.Bitmap;
import android.view.View;
public class MainActivity extends AppCompatActivity {
private WebView webView;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//webview use to call own site
webView =(WebView)findViewById(R.id.webView1);
webView.setWebViewClient(new WebViewClient());//use to hide the address bar
webView .getSettings().setJavaScriptEnabled(true);
webView.getSettings().setBuiltInZoomControls(true); // Enable zoom on sites
webView.getSettings().setSupportZoom(true);
webView .getSettings().setTextZoom(95); // where 90 is 90%; default value is ... 100
webView .getSettings().setDomStorageEnabled(true); //to store history
webView.setBackgroundColor(0xff2f0848);
//imporove webView performance
webView.getSettings().setRenderPriority(WebSettings.RenderPriority.HIGH);
webView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
webView.getSettings().setAppCacheEnabled(true);
webView.getSettings().setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NARROW_COLUMNS);
webView.getSettings().setUseWideViewPort(true);
webView.getSettings().setSaveFormData(true);
webView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
webView.loadUrl("https://eat-now.no/");
}
@Override
public void onBackPressed() {
if(webView.canGoBack())
{
webView.goBack();
}
else{
super.onBackPressed();
}
}
}
activity_splash.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:background="#2f0848"
tools:context=".SplashActivity">
<ImageView
android:id="@+id/splash"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="0dp"
android:contentDescription="@string/app_name"
android:src="@drawable/eatnow_splash" />
</RelativeLayout>
解决方案
这是WebView的一个典型问题。我们通常在 webView 加载时使用 ProgressDiglog 来填充白屏。
这是一个在 WebView 正在加载时使用 ProgressDialog 的示例: https ://github.com/rupok/webview
它是一个使用 Eclipse IDE 的旧项目,但您可以参考 ShowWebView.java 和布局中的 xml。如果需要,您可以使用图像来替换 ProgressDialog。
推荐阅读
- django-rest-framework - 如何创建那些嵌套对象
- c# - 列出分组或排序
- javascript - 单击按钮打开其他页面并向下滚动
- tabs - Symfony 3.4.6 - SonataAdmin - configureFromFields - 选项卡 - 在选项卡上添加图像
- javascript - 当我的障碍列表太大时,为什么会出现此错误?
- c++ - 如何从 txt 文件中导入用户定义的变量
- python - 如何避免创建虚拟文件来获取文件引用
- regex - 如何在perl中将字符串中的字母和数字分开?
- javascript - 我的 Jquery 代码有什么问题?如果密码不匹配,尝试不重新加载表单
- r - 遍历DataTable为每个ID建立一个模型