在每个viewpager更改上显示动画

时间:2015-06-12 07:07:33

标签: android android-fragments layout-inflater

我想在布局inflater的每个内容上显示动画。下面是我正在使用的代码,但问题是动画仅在视图寻呼机的第一页上显示。

到目前为止我所理解的是,所有页面内容的动画都会加载到位置0,但我可能错了。

@Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {
            View v = null;
            if (position == 0) {

                Home.rel_footer.setVisibility(View.VISIBLE);

                v = inflater.inflate(R.layout.reward_points_circles, container,
                        false);

                YoYo.with(Techniques.ZoomIn).duration(5000)
                        .playOn(v.findViewById(R.id.circle_1));

                YoYo.with(Techniques.ZoomIn).duration(5000)
                        .playOn(v.findViewById(R.id.circle_2));

                YoYo.with(Techniques.ZoomIn).duration(5000)
                        .playOn(v.findViewById(R.id.circle_3));

            } else if (position == 1) {

                Home.rel_footer.setVisibility(View.GONE);

                v = inflater.inflate(R.layout.qrcode_scanner_promotion, container,
                        false);

                YoYo.with(Techniques.Landing).duration(5000)
                        .playOn(v.findViewById(R.id.imgView_iphone));

                YoYo.with(Techniques.Landing).duration(5000)
                        .playOn(v.findViewById(R.id.imgView_ipad));

            } else if (position == 2) {

                Home.rel_footer.setVisibility(View.GONE);

                v = inflater.inflate(R.layout.deals_promotion, container, false);

                YoYo.with(Techniques.ZoomIn).duration(5000)
                        .playOn(v.findViewById(R.id.imgView_iphone_left));

                YoYo.with(Techniques.ZoomIn).duration(5000)
                        .playOn(v.findViewById(R.id.imageView_iphone_front));

                YoYo.with(Techniques.ZoomIn).duration(5000)
                        .playOn(v.findViewById(R.id.imgView_iphone_right));

            }

            return v;
        }

2 个答案:

答案 0 :(得分:1)

mViewPager.setOnPageChangeListener(new OnPageChangeListener() {

        @Override
        public void onPageSelected(int arg0) {
            // TODO Auto-generated method stub
            switch (arg0) {
            case 1:
                //load ur animations here
                break;

            default:
                break;
            }
        }

        @Override
        public void onPageScrolled(int arg0, float arg1, int arg2) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onPageScrollStateChanged(int arg0) {
            // TODO Auto-generated method stub

        }
    });

答案 1 :(得分:1)

在我看来,如果你想看到每个页面上的动画发生变化,你不应该在onCreateView中应用动画。您应该使用OnPageChangeListener界面,并在用户更改了寻呼机(切换到另一个页面)后应用您的动画。

一个简单的代码片段,可以帮助您入门。

mViewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener(){

    @Override
    public void onPageSelected (int position){
        // Apply animations here w.r.t the position
    }

    ... Other overridden methods ...
});