2

リソースが読み込まれている間、アニメーション画像(現在はPNGのセットを使用)をスプラッシュ画面として表示したいと思います。

これを使ってスプラッシュ画面を表示することができました。ただし、問題は次のとおりです。スプラッシュ画面が指定された時間表示された後、2〜3秒間黒い画面が表示され、その後index.htmlロードされます。

理想的には、リソースがロードされている間、スプラッシュ画面を表示することです。リソースがロードされたら、スプラッシュ画面をプルしてすぐにindex.htmlファイルをロードします。

以下は私のコードです:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    // Splash screen view
    setContentView(R.layout.splash);

    // Start animating the image
    final ImageView splashImageView = (ImageView) findViewById(R.id.SplashImageView);
    splashImageView.setBackgroundResource(R.drawable.flag);
    final AnimationDrawable frameAnimation = (AnimationDrawable)splashImageView.getBackground();
    splashImageView.post(new Runnable(){
        @Override
        public void run() {
            frameAnimation.start();             
        }           
    });


    final SplashScreen sPlashScreen = this;   

    // The thread to wait for splash screen events
    mSplashThread =  new Thread(){
        @Override
        public void run(){
            try {
                synchronized(this){
                    // Wait given period of time or exit on touch
                    wait(10000);
                }
            } 
            catch(InterruptedException ex){                 
            }

            finish();

            // Run next activity
            Intent intent = new Intent();
            intent.setClass(sPlashScreen, SomeActivity.class);
            startActivity(intent);
            //stop();               
        }
    };      
    mSplashThread.start();      
} 

public class SomeActivity extends DroidGap {                
    @Override
    public void onCreate(Bundle savedInstanceState) {    
     //some code to copy database files.
    }
}

私の開発環境に注意してください。android-sdk:apiレベル17、Phonegap:2.1.0。

4

1 に答える 1

7

これは、Phonegap /Cordova1.7バージョンで解決できます。2.1を使用しているため、このソリューションも利用できます。

メインのPhonegapアクティビティクラスで、スプラッシュ画面とloadURLメソッドを初期化します。

super.setIntegerProperty("splashscreen", R.drawable.splash);
super.loadUrl("file:///android_asset/www/index.html", 10000);

10000はミリ秒単位の時間であるため、スプラッシュimgは次の10秒間表示されます。30〜60を使用することもできます。後でその理由を説明します。

PhoneGap Androidアプリケーションでスプラッシュ画面を表示するには、splash.pngファイルを次の場所に配置する必要があります。

res/drawable-ldpi (small: at least 426 x 320)
res/drawable-mdpi (medium: at least 470 x 320)
res/drawable-hdpi (large: at least 640 x 480) 
res/drawable-xdpi (xlarge: at least 960 x 720)

ここで重要なのは、Javascriptに次のdevicereadyようなイベントを追加することです。

document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
    // Version 1.7 use this method
    cordova.exec(null, null, "SplashScreen", "hide", []);
    // Version 1.8+ use this mehod
    navigator.splashscreen.hide();

したがって、スプラッシュスクリーンがまだ表示されている場合でも、スプラッシュスクリーンnavigator.splashscreen.hide();を非表示にして、ロードされたhtmlを表示します。

これがお役に立てば幸いです。

于 2012-12-21T20:31:12.020 に答える