スプラッシュスクリーンの表示を 3 秒間開始し、別のアクティビティを呼び出して Web ビューを開始するこのアプリケーションがあります。
コードスプラッシュスクリーン
package test.test;
import test.test.R;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.MotionEvent;
public class SplashScreen extends Activity {
int timer = 0;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash_screen);
Thread splashThread = new Thread() {
@Override
public void run() {
try {
while (timer < 3000) {
sleep(100);
timer += 100;
}
} catch (InterruptedException e) {
// do nothing
} finally {
finish();
Intent i = new Intent();
i.setClassName("test.test","test.test.Mainmenu");
startActivity(i);
}
}
};
splashThread.start();
}
}
コード XML スプラッシュ
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:animateLayoutChanges="false"
android:background="#57a11f" >
<ImageView
android:id="@+id/ImageView01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:contentDescription="@string/image"
android:src="@drawable/splash" />
</RelativeLayout>
コード ウェブビュー
package test.test;
import test.test.R;
import android.app.Activity;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Bundle;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
public class Mainmenu extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);
setContentView(R.layout.activity_mainmenu);
WebView webView = (WebView) findViewById(R.id.webview);
webView.getSettings().setAppCacheMaxSize( 10 * 1024 * 1024 );
webView.getSettings().setAppCachePath( getApplicationContext().getCacheDir().getAbsolutePath()+ "/cache" );
webView.getSettings().setAllowFileAccess( true );
webView.getSettings().setAppCacheEnabled( true );
webView.setBackgroundColor(0x00000000);
webView.setWebViewClient(new WebViewClient());
webView.getSettings().setJavaScriptEnabled( true );
webView.getSettings().setDomStorageEnabled( true );
webView.getSettings().setCacheMode( WebSettings.LOAD_DEFAULT );
if ( !isNetworkAvailable() ) {
webView.getSettings().setCacheMode( WebSettings.LOAD_CACHE_ELSE_NETWORK );
}
webView.loadUrl( "http://www.google.com" );
}
private boolean isNetworkAvailable() {
ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService( CONNECTIVITY_SERVICE );
NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
return activeNetworkInfo != null;
}
}
コード ウェブビュー XML
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#57a11f"
tools:context=".Mainmenu" >
<WebView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/webview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:animateLayoutChanges="false"
/>
</RelativeLayout>
問題: スプラッシュスクリーンが webview アクティビティを呼び出すと、しばらく空白の画面が表示され、ページをダウンロードしてレンダリングする時間になります。
私が望むこと: スプラッシュスクリーンと Web ビューを同時に開始する方法を知りたいのですが、バックグラウンドでページをロードしてレンダリングするのに 3 秒かかるように Web ビューを非表示にします。
追加:スプラッシュスクリーンを3秒間オンにしたいので、onPageFinishedを使用したソリューションを探していません。ところで、onPageFinishedを使用しても、Webページを画面に表示するのに必要なレンダリング時間が回避されません。
ありがとうございました!