我使用带有 ImageView 的活动,并通过单击按钮切换到带有 VideoWiew 的活动并播放电影,电影的第一帧是上一个活动的图像。我通过使用禁用了活动之间的动画
Intent intent = new Intent(ImageClass.this, MovieClass.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
startActivity(intent);
但它仍然在它们之间闪烁黑屏,我该如何禁用它?
我使用带有 ImageView 的活动,并通过单击按钮切换到带有 VideoWiew 的活动并播放电影,电影的第一帧是上一个活动的图像。我通过使用禁用了活动之间的动画
Intent intent = new Intent(ImageClass.this, MovieClass.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
startActivity(intent);
但它仍然在它们之间闪烁黑屏,我该如何禁用它?
最简单的方法之一是将所有昂贵(耗时)的处理从活动的onCreate和onStart方法转移到onResume方法。这样,您新启动的活动将在其启动后立即可见,但随后需要一些额外的时间才能使其可供用户交互。此外,我建议您将所有繁重的工作转移到AsyncTask中,以获得更流畅的 UI 体验。
我最近遇到了平滑过渡的问题。即使我在 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);
}
});