当我添加ViewFlipper时,UI线程似乎等待活动中的onCreate()方法完成。然后它显示第二个视图。为什么会这样?
我目前的代码是:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_menu);
viewFlipper = (ViewFlipper) findViewById(R.id.ScreenSwitch);
viewFlipper.setInAnimation(AnimationUtils.makeInAnimation(this, true));
viewFlipper.setOutAnimation(AnimationUtils.makeOutAnimation(this, true));
//do the necessary loading, when the splash screen persists
doSomeLoading();
viewFlipper.showNext();
}
实际上,doSomeLoading包含一个for循环计数到一千万并且什么也不做。现在它只是等待循环完成并显示第二个视图。
我真的很感激解决方案而不必创建一个单独的Thread,因为它似乎没有意义,invalidate()对那里没有帮助。
答案 0 :(得分:0)
也许使用viewFlipper.showPrevious();
?
修改强>
我没有完整的代码,但这里有一个想法:
当你做长时间加载或慢动作时,大多数时候,你可以想到AsynTask或后台线程
所以你需要创建一个新的内部类。让我们说AsyncLoader。您将实现此类的方法doInBackground()
并将doSomeLoading()放入其中
现在,实施onPostExecute()
并将viewFlipper.showNext();
放入其中
然后,在您的onCreate()
方法中,将新doSomeLoading()
替换为AsyncLoader.execute();
这应该很好。我可能忘记了一些东西,因为它不是真正的代码。 Check this了解更多解释。