需求是这样的 我项目主页有个webview 我想加个 欢迎页面两秒钟自动跳转到主页面
在这两秒钟里 我要让webview变加载这样可以省去webview 的加载时间
要想实现你的效果,那么欢迎页和主页不能是两个Activity,否则主页一定是在欢迎页finish之后显示,不会提前加载。
你需要把欢迎页面也放到主页的Activity里面,显示主页的时候先用一个ImageView显示欢迎页,同时用WebView加载url。使用相对布局,ImageView覆盖在WebView上面,两秒后,隐藏ImageView。
等待两秒可以使用Handler、Timer提供的功能。
new
一个thread,内部sleep两秒,到了就通知UI跳转
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
Intent intent = new Intent(WelcomMainActivity.this,
MainLoginActivity.class);
startActivity(intent);
WelcomMainActivity.this.finish();
}
}, 2000);
开启一个thread,几秒种后执行跳转
终于知道你意思了,你在主界面中先加载欢迎页面隐藏掉webview,web.loadUrl(url);
监听web是否加载完毕
{
web.setWebViewClient(new WebViewClient()
{
@Override
public void onPageFinished(WebView view,String url)
{
//加载完毕,隐藏欢迎布局,显示webview
}
});
}
1、首先,在主页面(即 所在的页面)的布局文件中添加一个 FrameLayout,并设置该 FrameLayout 的宽高与 WebView 相同。
<WebView
android:id="@+id/web_view"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<FrameLayout
android:id="@+id/welcome_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="gone" />
2、然后,在该页面的 Java 代码中定义一个 Timer 和一个 TimerTask 对象,在 TimerTask 中实现跳转到主页面的操作。同时,在 TimerTask 中调用 WebView 的 loadUrl() 方法,预先加载主页面所对应的 URL。代码如下:
private Timer mTimer;
private TimerTask mTimerTask;
// 在 onCreate() 方法中初始化 Timer
mTimer = new Timer();
// 在 onResume() 方法中启动 TimerTask
mTimerTask = new TimerTask() {
@Override
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run() {
// 隐藏欢迎页面容器
findViewById(R.id.welcome_container).setVisibility(View.GONE);
// 跳转到主页面
Intent intent = new Intent(MainActivity.this, MainActivity.class);
startActivity(intent);
}
});
}
};
mTimer.schedule(mTimerTask, 2000); // 2000 表示两秒钟后跳转
// 在 onPause() 方法中取消 TimerTask
if (mTimer != null) {
mTimer.cancel();
mTimer = null;
}
if (mTimerTask != null) {
mTimerTask.cancel();
mTimerTask = null;
}
// 在 onWindowFocusChanged() 方法中加载主页面 URL
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
if (hasFocus) {
WebView webView = findViewById(R.id.web_view);
FrameLayout container = findViewById(R.id.welcome_container);
// 加载主页面 URL
webView.loadUrl("你的主页 URL");
// 显示欢迎页面容器
container.setVisibility(View.VISIBLE);
// 隐藏 WebView
webView.setVisibility(View.GONE);
}
}
3、最后,在主页面的布局文件中为 WebView 添加一个 WebViewClient,并在该 WebViewClient 的 onPageFinished() 回调方法中设置 WebView 可见。代码如下:
<WebView
android:id="@+id/web_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="gone"
android:webViewClient="@{new android.webkit.WebViewClient() {
@Override
public void onPageFinished(android.webkit.WebView view, String url) {
super.onPageFinished(view, url);
view.setVisibility(View.VISIBLE);
}
}}" />