视图中的动画是否在视图寻呼机中显示(android)

时间:2013-01-26 09:15:23

标签: android view android-viewpager android-animation

您好我是Android新手,我正在做一个简单的应用程序。我的应用程序包含一个简单的活动,它包含视图寻呼机。我的查看寻呼机没有屏幕3.所以我的查看寻呼机工作正常。我的第一个和第二个屏幕包含一个按钮,当我点击该按钮时,它将进入第三个屏幕setCurrentItem(2);

现在我想要的是当我进入第三个屏幕时,它将呈现一个视图和几秒,就像完全渲染该视图做一些动画一样,如翻转动画。

当我点击按钮直接进入该屏幕但未呈现该默认视图时,实际发生了什么。它直接启动动画...

我的代码看起来像

public class HelpActivity extends Activity {

    private final int NUM_SCREENS = 3;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.help);
        mInflater = LayoutInflater.from(this);

        vp = (ViewPager) findViewById(R.id.pager);
        PagerAdapter pagerAdapter = new MyPagerAdapter();
        vp.setAdapter(pagerAdapter);

        }

    private OnClickListener signin = new OnClickListener() {

        @Override
        public void onClick(View arg0) {

                vp.setCurrentItem(2);
                // ******* do some animation on view 3 in pager views ....          
        }

    };

    private class MyPagerAdapter extends PagerAdapter {

        @Override
        public int getCount() {
            return NUM_SCREENS;
        }

        @Override
        public Object instantiateItem(View collection, int position) {

            View view = null;
            Typeface tf = Typeface.createFromAsset(getAssets(),
                    "fonts/sf_cartoonist_hand_bold.ttf");
            if (position == 0) {
                // display view1
                // on button click call sign in

            } else if (position == 1) {
                //display view 2
                //on button click call sign in
            } else if (position == 2) {

                //display view 3

            }

            ((ViewPager) collection).addView(view, 0);

            return view;
        }
    }


}

点击按钮后我需要它跳过view3显示几秒钟,之后做动画......怎么做? 需要帮忙..... 谢谢.....

2 个答案:

答案 0 :(得分:1)

使用Runnable你可以保持你的动画,直到你的视图没有正确加载它,你必须测量你的视图加载多少秒,所以你可以根据你的视图传递延迟加载时间,如下所示:

Runnable runnableimage = new Runnable() {
            public void run() {
            //HERE YOUR ANIMATION
                image.startAnimation(animFast);

            }
        };

它在2000 MilliSec

之后开始动画
  

handler.postDelayed(runnableimage,2000);

答案 1 :(得分:1)

使用animate()启动延迟:

mView.animate().rotationBy(360).setDuration(3000).setStartDelay(2000).start();