0

私のアプリでは、onCreateですべてを設定してから、すべてのリソースの読み込みなどを設定する非同期タスクを開始します。非同期タスクが開始された直後に、スプラッシュ スクリーンをレイアウトに追加します。すべてが読み込まれると、スプラッシュスクリーンが閉じられ、Open GL レンダラーが下に表示されます。

私がやろうとしているのは、ダイアログ画面 (基本的には、ビットマップを表示する別のViewクラス) を追加することです。また、ユーザーがダイアログ画面内で画面をタップするまで、スプラッシュのようなものは発生させたくありません。

これは次のようになります (注、これは私の実際の onCreate からの抜粋ですが、問題を説明するには十分なはずです)

public void onCreate(Bundle savedInstanceState){

        SplashScreen splash = new SplashScreen (getApplication(), width, height);
        ConsentDialog consentDialog = new ConsentDialog(getApplication(), width, height);

        //Add the consent dialog
        layout.addView(consentDialog);

        setContentView(layout);

        super.onCreate(savedInstanceState);

        //Splashscreen
        backgroundResources = new MyAsync(newBundle);
        backgroundResources.execute(); 
        layout.addView(splash);
}

ただし、上記を実行すると、スプラッシュ画面が表示され、すべてが読み込まれ、スプラッシュが閉じられ、ダイアログが残ります。

ユーザーが画面をタップするまで setContentView の直後に onCreate メソッドを一時停止 (または一時停止の効果を与えるもの) するにはどうすればよいですか? (注、consentDialog オブジェクトで onTouch(View v, MotionEvent event) メソッドを使用してタッチ イベントを待機しています。

基本的に、ユーザーが画面をタップするまで非同期は開始されません。これができない場合、私が望む効果をもたらす何かを達成するにはどうすればよいでしょうか?

4

2 に答える 2

1

ユーザーがキーを押すまで setContentView の直後に onCreate メソッドを一時停止 (または一時停止の効果を与えるもの) するにはどうすればよいですか?

あなたはそうしない。

注、consentDialog オブジェクトで onTouch(View v, MotionEvent event) メソッドを使用してキープレスを待っています

「ユーザーが画面をタップするまで」ロジック内onTouch()、またはから呼び出されるメソッド内に待機する必要がある作業を配置しますonTouch()

于 2015-09-18T20:42:50.277 に答える
1

onCreate の時点では、アプリは実際にはユーザーに対してアクティブ (表示可能またはインタラクティブ) ではありません。

スプラッシュを表示する前に、ユーザーの操作 (タップ) を待つだけでよいと思います。

アクティビティはイベント駆動型です。画面ビューに onClickListener または onTouchListener を設定 (追加) する必要があります。また、リスナーの実装では、スプラッシュを示すコードを記述できます。このコードは、ユーザーがタップしたときにのみ呼び出されます。

于 2015-09-18T20:55:26.660 に答える