我的应用程序首先在onCreate上将网页加载为WebView。我应该将它扩展到一个新的线程,因为它可能会挂起一点?或者至少是一种表明页面仍在加载的方法。它偶尔会显示为白色几秒钟。
另外,有没有办法阻止页面在方向更改时重新加载?
答案 0 :(得分:1)
webview处理线程本身,因此您无需担心这一点。
您可以在页面启动和完成加载时注册回调。这取决于你建立一个进度条,或任何你想要的。有关详细信息,请参阅WebChromeClient.onProgressChanged()。这是一个good post,提供了一些细节。
您可以在清单中添加一些内容,告诉系统您不关心方向更改。将以下内容添加到您的活动定义中
android:configChanges="orientation"
另一种选择是将您的应用锁定在一个方向或另一个方向,
android:screenOrientation="portait"
答案 1 :(得分:0)
广告1。 I have not (and should not) do that in separate thread.
WebView
进度条 - Android WebView progress bar
广告2。您可以通过在清单中声明android:screenOrientation="portait"
的{{1}}或"landscape"
来阻止方向更改。
答案 2 :(得分:0)
您应该使用进度对话框。显示对话框,直到将网页加载到WebView。
public final class MyWebview extends Activity {
private static final int DIALOG2_KEY = 1;
private ProgressDialog pd = null;
private static final String AmitBlog="YOUR URL";
private WebView webView;
@Override
protected void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.main);
pd = new ProgressDialog(this);
webView = (WebView) findViewById(R.id.webview);
webView.setWebViewClient(new HelpClient());
webView.getSettings().setBuiltInZoomControls(true);
/** Showing Dialog Here */
showDialog(DIALOG2_KEY);
}
@Override
protected void onResume() {
super.onResume();
LoadView();
}
private void LoadView()
{
webView.loadUrl(AmitBlog);
}
/** Its very important while navigation hardware back button if we navigate to another link .Its like a Stack pop of all the pages you visited in WebView */
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
if (webView.canGoBack()) {
webView.goBack();
return true;
}
}
return super.onKeyDown(keyCode, event);
}
/** WebViewClient is used to open other web link to the same Activity. */
private final class HelpClient extends WebViewClient {
@Override
public void onPageFinished(WebView view, String url) {
setTitle(view.getTitle());
/** Dismissing Dialog Here after page load*/
dismissDialog(DIALOG2_KEY);
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (url.startsWith("file")) {
return false;
} else{
view.loadUrl(url);
return true;
}
}
}
@Override
protected Dialog onCreateDialog(int id) {
switch (id)
{
case DIALOG2_KEY:
{
pd.setMessage(getResources().getString(R.string.Loading));
pd.setIndeterminate(true);
pd.setCancelable(false);
return pd;
}
}
return null;
}
}