java如何避免在活动之间切换时出现白屏
我从意向开始一项活动。在我的代码中,我有更多的活动。但只有在一个特定的活动中,当试图从一个意图出发时,得到一个空白的白色屏幕,然后活动就得到了负载。所以我想展示ProgressBar。但ProgressBar也显示在白色屏幕之后。如何避免显示白色屏幕?提前谢谢
从改装请求获取响应时,调用getWebViewUrlSuccessResponse方法。 下面是我的第一个活动
@Override
public void getWebViewUrlSuccessResponse(String url,String id,String currency) {
Intent intent=new Intent(FirstActivity.this, WebViewActivity.class);
intent.putExtra("url",url);
intent.putExtra("id",id);
intent.putExtra("name",name);
intent.putExtra("password",password);
intent.putExtra("code",code);
intent.putExtra("currency",currency);
startActivity(intent);
}
这是我的第二项活动
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
AndroidLogger.log(5,TAG,"WEBVIEW");
getWindow().requestFeature(Window.FEATURE_PROGRESS);
setContentView(R.layout.activity_webview);
AndroidLogger.log(5,TAG,"progress bar made visible");
Intent intent=getIntent();
RelativeLayout layout = findViewById(R.id.payment_gateway_relative_layout);
ProgressBar progressBar = new ProgressBar(PaymentGatewayActivity.this,null,安卓.R.attr.progressBarStyleSmallInverse);
progressBar.setIndeterminate(true);
progressBar.setVisibility(View.VISIBLE);
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(100,100);
params.addRule(RelativeLayout.CENTER_IN_PARENT);
layout.addView(progressBar,params);
//setContentView(layout);
this.name=intent.getStringExtra("name");
this.url=intent.getStringExtra("url");
this.id=intent.getStringExtra("id");
this.code=intent.getStringExtra("code");
this.password=intent.getStringExtra("password");
this.currency=intent.getStringExtra("currency");
webView =(WebView)findViewById(R.id.webView);
webView.setWebViewClient(new WebViewClient());
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setDomStorageEnabled(true);
webView.setOverScrollMode(WebView.OVER_SCROLL_NEVER);
webView.loadUrl(url);
webView.setWebViewClient(new WebViewClient() {
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// do your handling codes here, which url is the requested url
// probably you need to open that url rather than redirect:
AndroidLogger.log(5, TAG, "url:" + url);
AndroidLogger.log(5, TAG, "view.geturl" + view.getUrl());
//AndroidLogger.log(5,TAG,view.goBack()); view.canGoBack();
view.loadUrl(url);
return false; // then it is not handled by default action
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
progressBar.setVisibility(View.VISIBLE);
AndroidLogger.log(5,TAG,"started"+url);
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
AndroidLogger.log(5,TAG,"Finished"+url);
webView.setVisibility(View.VISIBLE);
}
});
}
# 1 楼答案
您可以尝试更改主题中的默认活动背景
<item name="android:windowBackground">
。但无论如何,在那之后,你会得到背景色或图像,直到你的活动测量并绘制你的布局。下面是我风格中的代码片段。xml改变背景颜色,你就会得到它
# 2 楼答案
line webView。loadUrl(url);导致屏幕变白。。因为在我的代码中,我使用postrl来加载webview,我在代码中没有提到。有两次我试图加载URL。这就是问题所在。去掉那条线后,一切正常。谢谢你们所有试图帮助我的人
# 3 楼答案
白色屏幕可能是由于布局加载延迟造成的
对于网络访问、数据库访问或文件访问等长时间运行的作业,您可以检查onCreate方法,然后将它们移动到onStart方法
onCreate应该尽快返回