我的滑动屏幕工作完美,它有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;
}
}