次のようなコードがあります。
loading = (TextView) findViewById(R.id.loading);
public void enterButton(View v) { // This is a button
loading.setVisibility(TextView.VISIBLE); // For some reason this does not happen...
MyApp.initialize(); // ... before this is completed
Intent i = new Intent(this, AnotherActivity.class);
startActivityForResult(i, 0);
}
loading は、単に「読み込み中...」と言う TextView です。MyApp.initialize() は、AnotherActivity を設定する計算負荷の高いメソッドです。実行には数秒かかるため、「読み込み中...」というメッセージを表示させたいのです。
問題は、ほとんどの場合、loading.setVisibility(TextView.VISIBLE) が何もしていないように見えることです。私はテキストを見ることはありません。まれに、アクティビティが変更される直前に「読み込み中...」が一瞬点滅することがあります。Android が loading.setVisibility(TextView.VISIBLE) をスタックか何かに置いていて、MyApp.initialize() が完了するまでそれを実行しようとしていないことがわかりますが、これは明らかに遅すぎます。MyApp.initialize() が開始する前に「読み込み中...」が表示されるようにしたいと思います。
アニメーション BEFORE アクティビティの変更は近いように見えますが、.setAnimationListener は TextView では機能しません。TextView に似たものはありますか? 私はこれでクラックしましたが、アプリケーションがハングしました:
loading.setVisibility(TextView.VISIBLE);
loading.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
MyApp.initialize();
Intent i = new Intent(MyApp.getInstance(), AnotherActivity.class);
startActivityForResult(i, 0);
return true;
}
});
助言がありますか?ありがとうございました。