ViewFlipper - 如何强制它显示第一个View?

时间:2010-07-29 12:45:07

标签: android

当我添加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()对那里没有帮助。

1 个答案:

答案 0 :(得分:0)

也许使用viewFlipper.showPrevious();

修改

我没有完整的代码,但这里有一个想法:
当你做长时间加载或慢动作时,大多数时候,你可以想到AsynTask或后台线程 所以你需要创建一个新的内部类。让我们说AsyncLoader。您将实现此类的方法doInBackground()并将doSomeLoading()放入其中 现在,实施onPostExecute()并将viewFlipper.showNext();放入其中 然后,在您的onCreate()方法中,将新doSomeLoading()替换为AsyncLoader.execute(); 这应该很好。我可能忘记了一些东西,因为它不是真正的代码。 Check this了解更多解释。