私は簡単なアプリケーションを持っています。それは起動し、ネットからxmlフィードをロードします。ニュースのリストを閲覧して、選択したニュースアイテムの詳細を読むことができます。私がやりたいのはスプラッシュ画面です。つまり、アプリケーションをクリックするとすぐに画像(私の場合はアプリ名)が表示され、ロードされた後にのみニュースリストが表示されます。
私は同様の(私が思うに)問題について読みました、そして通常人々はFrameLayoutを使うと言います、しかし私はそれを本当に整理することができません。起動された最初のアクティビティでこれを実行できるかどうかはわかりません。このスプラッシュ画像を1つのアクティビティに表示してから、ニュースリストを表示するアクティビティを呼び出す必要がありますか?
IPhoneでは、開発中にアプリの設定でスプラッシュ画面を設定できることを知っています。Androidのアプリのマニフェストにこの機能があると便利です...
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();
}
}
}
お役に立てば幸いです。
私はこれが古いことを知っていますが、まだこの問題に直面している人のために、この単純な Android-スプラッシュライブラリ を使用してスプラッシュ画面を表示できます。
SplashBuilder
.with(this, savedInstanceState)
.show();
スプラッシュ画面が表示されているときに実行されるSplashTask
を設定できます。