ViewPager - 在滑动时动画TextView

时间:2016-01-06 01:52:43

标签: java android

我的滑动屏幕工作完美,它有3个片段,每个片段的文本视图很少。

我在FlipView组件中动画很好,但我发现使用ViewPager更好地解决了我的问题。

我的问题是我不知道在滑动时处理碎片的位置。

当我想要从哪个片段知道哪个片段时,我想知道。

因为当我从FragmentA滑动到FragmentB时,我希望FragmentB上的文本框从左到右动画,当我从FragmentB返回到FragmentA时,我想在FragmentA上从右到左动画文本框。

我知道该怎么做的所有动画,但不知道从哪里捕捉以及我要去哪个片段。

在片段代码中为每个片段设置动画并不是问题,但是我不知道我在哪个片段上发现了他,然后我不知道文本在哪一侧动画。 :)

我的代码如下所示:

的活动:

ViewPager viewPager;
int numberOfViewPagerChildren = 3;
int lastIndexOfViewPagerChildren = numberOfViewPagerChildren - 1;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_slide_tips);
    viewPager = (ViewPager) findViewById(R.id.pager);
    viewPager.setAdapter(new MyAdapter(getSupportFragmentManager()));
    final LayerDrawable background = (LayerDrawable) viewPager.getBackground();

    background.getDrawable(0).setAlpha(0); // this is the lowest drawable
    background.getDrawable(1).setAlpha(0);
    background.getDrawable(2).setAlpha(255); // this is the upper one

    viewPager.setPageTransformer(true, new ViewPager.PageTransformer() {
        @Override
        public void transformPage(View view, float position) {

            int index = (Integer) view.getTag();
            Drawable currentDrawableInLayerDrawable;
            currentDrawableInLayerDrawable = background.getDrawable(index);

            if (position <= -1 || position >= 1) {
                currentDrawableInLayerDrawable.setAlpha(0);
            } else if (position == 0) {
                currentDrawableInLayerDrawable.setAlpha(255);
            } else {
                currentDrawableInLayerDrawable.setAlpha((int) (255 - Math.abs(position * 255)));
            }

        }
    });
}
}

MyAdapter:

class MyAdapter extends FragmentStatePagerAdapter
{


    int numberOfViewPagerChildren = 3;

    public MyAdapter(FragmentManager fm) {
        super(fm);
    }
    @Override
    public Fragment getItem(int i) {
        Fragment fragment=null;
        if(i==0)
        {
            fragment=new FragementA();
        }
        if(i==1)
        {
            fragment=new FragmentB();
        }
        if(i==2)
        {
            fragment=new FragmentC();
        }
        return fragment;
    }


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

    @Override
    public boolean isViewFromObject(View view, Object object) {
        if(object instanceof FragementA){

            view.setTag(2);

        }
        if(object instanceof FragmentB){

            view.setTag(1);
        }
        if(object instanceof FragmentC){

            view.setTag(0);
        }
        return super.isViewFromObject(view, object);
    }
}

还有一个片段,让它成为FragmentA:

public class FragmentA extends Fragment {
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View v = inflater.inflate(R.layout.fragment_fragment_a,container,false);

        return v;
    }
}

0 个答案:

没有答案