代码之家  ›  专栏  ›  技术社区  ›  LordTwaroog

视图翻转器-如何强制它显示第一个视图?

  •  0
  • LordTwaroog  · 技术社区  · 16 年前

    当我添加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();
    
    }
    

    事实上,剂量组的装载包括一个循环,计数为1000万,什么也不做。现在它只是等待循环完成并显示第二个视图。

    我非常感谢不必创建单独线程的解决方案,因为它似乎是无意义的,invalidate()在这方面没有帮助。

    1 回复  |  直到 16 年前
        1
  •  0
  •   Sephy    16 年前

    也许与 viewFlipper.showPrevious(); ?

    编辑

    我没有你的完整代码,但我的想法是:
    在大多数情况下,当您执行长时间加载或缓慢操作时,您可以认为是asyntask或后台线程。
    所以您需要创建一个新的内部类。比如说AsyncLoader。您将实现该方法 doInBackground() 把dosomeLoading()放到这个类中。
    现在,实施 onPostExecute() 把你的 viewFlipper.showNext(); 在里面。
    然后,在你的 onCreate() 方法,替换 doSomeLoading() 由新 AsyncLoader.execute();
    这个应该不错。我可能忘记了一些东西,因为它不是真正的代码。 Check this 更多解释。