コードの例がないので、読み込んでいるデータの種類や、データに基づいてUIを動的に設定する方法はわかりませんが、できます。その結果、答えは少し一般的に聞こえるかもしれません。
最初に、2つのレイアウトxmlファイルを定義します.1つはスプラッシュ画面用、もう1つは「メイン」アクティビティ用です。あなたの非同期で
setContentView(R.layout.splash_screen);
: だからあなたは/res/layout/splash_screen.xmlで終わるとあなたのonCreate()で
を/res/layout/main.xmlよ、splash_screenレイアウトをロードタスクを実行するには、実行する必要のあるデータをロードし、そのデータをすべての種類のデータ構造に保存します。私は例えばStringのLinkedListを使うつもりです。
private class MyTask extends AsyncTask<Uri, Integer, List<String>> {
@Override
protected List<String> doInBackground(Uri... params) {
List<String> myList = new LinkedList<String>();
// load up the list with data you are trying to get
myList.add("foo");
myList.add("bar");
// whatever you return here will be passed in as a parameter to the onPostExecute()
return myList;
}
@Override
protected void onPostExecute(List<String> result) {
setContentView(R.layout.main2);
// set layout elements with data that from the result
TextView myTextView = (TextView) findViewById(R.id.some_label);
myTextView.setText(result.get(0));
// or just call some function you defined in your activity instead
}
}
だから、基本的には、2つの異なるレイアウトファイルを持っているとsplash_screenレイアウトを使用し、負荷にデータを非同期タスクを使用して、ユーザーが定義し、いくつかのデータ構造にそれを保存し、あなたのUI要素をロードするために、そのデータ構造を使用しますsetContentView()を使用してメインレイアウトに戻ると、onPostExecute()に戻ります。
特別なメモ: 上記のコードを使用すると、スプラッシュ画面が再び表示され、画面を回転するとすべてのデータが再度読み込まれます。それを避けたい場合は、onSaveInstanceState()を使用して、必要なデータをoutBundleに保存し、そのデータをonCreateのsavedInstanceStateバンドルに読み込んで、UI要素をバックアップしてください。回転を処理する方法についてもっと知りたい場合は、別のスレッドが必要です(または単に検索することができます)。
コードを共有できないNDAに署名したため、私はコードを提供できません。申し訳ありません。私は一般的に話すことができます。私は基本的に条件に応じてxmlをロードしています。そのxmlファイルは、表示する必要のある画像とその画像に結びついている情報を教えてくれます。返されたイメージのリストから動的にイメージビューを作成し、ビューに追加します。すべての画像が読み込まれるまでに2-3秒かかるので、すべてが読み込まれて対話できる状態になるまでスプラッシュを表示します。 – romamnmlst
その場合、上記のdoInBackground()関数でXMLファイルを解析し、ImageViewを作成して画像ソースを設定し、doInBackground()関数からImageViewのリストを返すことができると思います。 onPostExecute()関数は、ImageViewsのリストを取得し、setContentView()の後にビュー階層に追加します。 onPostExecute()で行うことはメインスレッドで実行されるため、ここからUI要素を変更できます。 – hiBrianLee
優秀、私はそのショットを与え、それがどのように動作するかを見てください。ありがとうございました! (それはしばらく時間がかかるかもしれませんが、うまくいけば、私は戻ってきて、あなたの答えを受け入れたものとしてマークしてください) – romamnmlst