5

我使用带有 ImageView 的活动,并通过单击按钮切换到带有 VideoWiew 的活动并播放电影,电影的第一帧是上一个活动的图像。我通过使用禁用了活动之间的动画

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

但它仍然在它们之间闪烁黑屏,我该如何禁用它?

4

2 回答 2

13

最简单的方法之一是将所有昂贵(耗时)的处理从活动的onCreateonStart方法转移到onResume方法。这样,您新启动的活动将在其启动后立即可见,但随后需要一些额外的时间才能使其可供用户交互。此外,我建议您将所有繁重的工作转移到AsyncTask中,以获得更流畅的 UI 体验。

于 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 回答