0

嗨,我是 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 显示几秒钟,然后做动画……怎么做?需要帮助……谢谢……

4

2 回答 2

1

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

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

            }
        };

它在之后开始你的动画2000 MilliSec

handler.postDelayed(runnableimage, 2000);

于 2013-01-26T09:34:41.067 回答
1

animate()与启动延迟一起使用:

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

于 2013-01-26T09:36:59.760 回答