gpt4 book ai didi

java - 当某些 url 加载时是否可以执行某些操作?

转载 作者:行者123 更新时间:2023-12-01 12:06:40 24 4
gpt4 key购买 nike

我正在编写我的第一个 Android“应用程序”,并且有点作弊,因为我使用 WebView 来显示主要的“应用程序”。

我发现,通过将背景渲染为 ImageView,而不是从 HTML 代码加载背景,应用程序通常速度更快。我有一个 ImageView,它充当应用程序的背景并从一开始就加载,并且位于 WebView 的“后面”(WebView 背景是透明的)。

但是一旦用户在文本字段上按 Enter 键,并被发送到 WebView 中的另一个网页,我想删除第一个背景 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");
}

}

感谢扎法尔,我最终做了什么:

        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

并在此处设置图像。检查这个link如果您能得到更多解决方案。如果还有其他需求,请回复。

虽然你已经完成了你想要的,但我只是想添加这个方法,如果它在其他情况下对你有帮助的话。

webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (url.startsWith("abcd://")) {
// your code
return true;
}
return false;
}
});

关于java - 当某些 url 加载时是否可以执行某些操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27541691/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com