5

ImageViewでアクティビティを使用し、ボタンをクリックすると、VideoWiewでのアクティビティに切り替わり、ムービーが再生されます。ムービーの最初のフレームは、前のアクティビティの画像です。を使用してアクティビティ間のアニメーションを無効にしました

Intent intent = new Intent(ImageClass.this, MovieClass.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
startActivity(intent);

しかし、それでもそれらの間で黒い画面が点滅します、どうすればこれを無効にできますか?

4

2 に答える 2

13

最も簡単な方法の1つは、すべての高価な(時間のかかる)処理をアクティビティのonCreateおよびonStartメソッドからonResumemthodに移動することです。これにより、新しく起動されたアクティビティは起動直後に表示されますが、ユーザーが操作できるようにするために少し余分に時間がかかります。さらに、UIエクスペリエンスをスムーズにするために、 AsyncTaskのすべての面倒な作業を移動することをお勧めします。

于 2012-04-10T11:32:14.810 に答える
0

最近、スムーズな移行に問題がありました。AsyncTaskで長いタスクをロードしていますが、ロードにはまだ時間がかかり、画面は待機する必要があります。

たとえば、ロードに時間がかかるWebViewがあり、WebViewの下に、いくつかのTextViewやその他のもの(おそらくレイアウト)があります。レイアウトが最初に読み込まれ、後でWebViewが読み込まれるため、画面の読み込みが不便になります。

これに対する解決策は、ロードする前にすべてのオブジェクトでVisibilityをGONEに設定し、WebViewのロード後にVISIBLEに設定することです。

webView.setWebViewClient(new WebViewClient() {
        public void onPageFinished(WebView view, String url) {

            webView.setVisibility(View.VISIBLE);
            LinearLayout ll_load_after_web_view_bottom = findViewById(R.id.ll_load_after_web_view_bottom);
            LinearLayout ll_load_after_web_view_top = findViewById(R.id.ll_load_after_web_view_top);
            ll_load_after_web_view_bottom.setVisibility(View.VISIBLE);
            ll_load_after_web_view_top.setVisibility(View.VISIBLE);
        }
    });
于 2018-04-25T02:08:09.117 に答える