web-dev-qa-db-ja.com

スプラッシュ画面(アプリの起動時に画面が表示される)を作成するにはどうすればよいですか?

私は簡単なアプリケーションを持っています。それは起動し、ネットからxmlフィードをロードします。ニュースのリストを閲覧して、選択したニュースアイテムの詳細を読むことができます。私がやりたいのはスプラッシュ画面です。つまり、アプリケーションをクリックするとすぐに画像(私の場合はアプリ名)が表示され、ロードされた後にのみニュースリストが表示されます。

私は同様の(私が思うに)問題について読みました、そして通常人々はFrameLayoutを使うと言います、しかし私はそれを本当に整理することができません。起動された最初のアクティビティでこれを実行できるかどうかはわかりません。このスプラッシュ画像を1つのアクティビティに表示してから、ニュースリストを表示するアクティビティを呼び出す必要がありますか?

IPhoneでは、開発中にアプリの設定でスプラッシュ画面を設定できることを知っています。Androidのアプリのマニフェストにこの機能があると便利です...

18
pambuk

Androidでは、起動時に長い計算を実行するときにスプラッシュ画面を使用することをお勧めします。これはAndroid開発者のウェブサイト-応答性のための設計:)からの抜粋です。

「アプリケーションに時間のかかる初期設定フェーズがある場合は、スプラッシュ画面を表示するか、メインビューをできるだけ早くレンダリングして、情報を非同期で入力することを検討してください。いずれの場合も、進捗状況を何らかの方法で示して、ユーザーは、アプリケーションがフリーズしていると感じます。」 -Android開発者サイト

AsyncTaskを使用してネットからxmlフィードをダウンロードし、解析してデータベースに保存し(必要な場合)、ニュースフィードを表示するアクティビティを開始しながら、進行状況ダイアログを表示するアクティビティを作成できます。 finish()を呼び出して、スプラッシュアクティビティを閉じます

スケルトンコードは次のとおりです。


public class SplashScreen extends Activity{
   @Override
   public void onCreate(Bundle savedInstanceState){
      super.onCreate(savedInstanceState);
      // set the content view for your splash screen you defined in an xml file
      setContentView(R.layout.splashscreen);

      // perform other stuff you need to do

      // execute your xml news feed loader
      new AsyncLoadXMLFeed().execute();

   }

   private class AsyncLoadXMLFeed extends AsyncTask<Void, Void, Void>{
      @Override
      protected void onPreExecute(){
            // show your progress dialog

      }

      @Override
      protected Void doInBackground(Void... voids){
            // load your xml feed asynchronously
      }

      @Override
      protected void onPostExecute(Void params){
            // dismiss your dialog
            // launch your News activity
            Intent intent = new Intent(SplashScreen.this, News.class);
            startActivity(intent);

            // close this activity
            finish();
      }

   }
}

お役に立てば幸いです。

35
jagsaund

私はこれが古いことを知っていますが、まだこの問題に直面している人のために、この単純な Android-スプラッシュライブラリ を使用してスプラッシュ画面を表示できます。

SplashBuilder
        .with(this, savedInstanceState)
        .show();

スプラッシュ画面が表示されているときに実行されるSplashTaskを設定できます。

2
Tomer Hadad