我正在编写我的第一个android“ app”,并作弊,因为我使用WebView来显示主要的“应用程序”。
我发现,通过将背景呈现为ImageViews而不是从HTML代码加载背景,该应用程序通常速度更快。我有一个ImageView,它从一开始就充当应用程序的背景并加载,并且位于WebView的“后面”(WebView背景是透明的)。
但是,一旦用户在文本字段上按下Enter键,并将其发送到WebView中的另一个网页,我便希望摆脱第一个背景ImageView并加载一个新的ImageView,以使前一个不会降低它的速度下。所以我想我必须检测某种加载事件,并对此进行一些处理。但是,我一直在寻找文档,却一无所获。我什至不知道从哪里开始。有什么办法吗?谢谢。
这是我的代码,如果有什么用(但是我不认为它真的有用)。
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getSupportActionBar().hide();
setContentView(R.layout.activity_main);
mWebView = (WebView) findViewById(R.id.activity_main_webview);
mWebView.setBackgroundColor(0x00000000);
mWebView.setLayerType(WebView.LAYER_TYPE_SOFTWARE, null);
ConnectivityManager connManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo mWifi = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
NetworkInfo mMobile = connManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
if((mWifi != null && mWifi.isConnected()) || (mMobile != null && mMobile.isConnected())) {
WebSettings webSettings = mWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setCacheMode(webSettings.LOAD_NO_CACHE);
mWebView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
findViewById(R.id.splash).setVisibility(View.GONE);
findViewById(R.id.activity_main_webview).setVisibility(View.VISIBLE);
}
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
mWebView.loadUrl("file:///android_asset/error.html");
}
});
mWebView.loadUrl(got_url);
}
else
{
setContentView(R.layout.activity_main);
mWebView = (WebView) findViewById(R.id.activity_main_webview);
mWebView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
findViewById(R.id.splash).setVisibility(View.GONE);
findViewById(R.id.activity_main_webview).setVisibility(View.VISIBLE);
}
});
mWebView.loadUrl("file:///android_asset/error-nointernet.html");
}
}
由于Zafar,我最终做了什么:
public void onPageStarted(WebView view, String url) {
if(url.equals(certainUrl)) //url returns last requested URL.
{
findViewById(R.id.background0).setVisibility(View.GONE);
findViewById(R.id.background1).setVisibility(View.VISIBLE);
}
}
我得到的是,一旦Webview开始加载,您想加载背景图像。如果是这种情况,可以使用
onPageStarted
并在此处设置图片 如果您可以找到更多解决方案,请查看此链接。如果有其他要求,请回复。
尽管您已完成所需的工作,但我想添加此方法,以在其他类似情况下为您提供帮助。
webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (url.startsWith("abcd://")) {
// your code
return true;
}
return false;
}
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句