我使用ImageView的活动,点击按钮,它切换到使用VideoWiew的活动并播放电影,电影的第一帧是上一个活动的图像。我使用
在活动之间禁用了动画Intent intent = new Intent(ImageClass.this, MovieClass.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
startActivity(intent);
但是它们之间仍然会闪烁黑屏,我怎么能禁用它呢?
答案 0 :(得分:12)
最简单的方法之一是将所有昂贵(耗时)的处理从您的活动的 onCreate 和 onStart 方法转移到 onResume mthod。这样,您新推出的活动将在其启动后立即可见,但随后将需要一些额外的活动以供用户进行交互。此外,我建议您移动 AsyncTask 中的所有繁重工作,以获得更流畅的UI体验。
答案 1 :(得分:0)
我最近遇到了顺利过渡的问题。即使我在AsyncTask中加载冗长的任务,它仍然需要时间来加载,并且屏幕必须等待。
例如,如果你有一个WebView,需要一段时间来加载,并且在WebView下,你有一些TextViews和其他东西,据说是一个布局。 布局将首先加载,然后加载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);
}
});