2015-03-13 39 views
1

我有ViewPager类的问题。正如你在屏幕截图上看到的,正常页面从左至右依次排列:右侧页面位于底部,而不是中央,最顶部是左侧页面,我想将中央(中部)页面在这个堆栈的顶部。你怎么想,它是可能的?查看PAGER如何更改查看堆栈中的页面顺序

HOW ITS NOW:

enter image description here

http://oi57.tinypic.com/2hdsehd.jpg

我想实现的:

enter image description here

http://oi60.tinypic.com/jkyddl.jpg

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    // Inflate the layout for this fragment 
    mContent = inflater.inflate(R.layout.fragment_main, container, false); 
    mViewPager = (ViewPager) mContent.findViewById(R.id.view_pager); 
    mViewPager.setAdapter(new ViewPagerAdapter(getChildFragmentManager())); 
    mViewPager.setCurrentItem(1); 
    mViewPager.setPageTransformer(true, new DepthPageTransformer()); 

    return mContent; 
} 


class ViewPagerAdapter extends FragmentPagerAdapter { 

    public ViewPagerAdapter(FragmentManager fm) { 
     super(fm); 
    } 

    @Override 
    public android.support.v4.app.Fragment getItem(int position) { 

     switch (position) { 
      case 0: 
       return new FriendsFragment(); 
      case 1: 
       return new CenterFragment(); 
      case 2: 
       return new MenuFragment(); 
     } 
     return new FriendsFragment(); 
    } 

    @Override 
    public float getPageWidth(int page) { 
     if (page != 1) { 
      Display display = getActivity().getWindowManager().getDefaultDisplay(); 
      Point size = new Point(); 
      display.getSize(size); 
      Log.e("", "x: " + size.x); 
      return 0.8f; 
     } else 
      return super.getPageWidth(page); 
    } 

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

public class DepthPageTransformer implements ViewPager.PageTransformer { 
    private static final float MIN_SCALE = 0.75f; 

    public void transformPage(View view, float position) { 
     int pageWidth = view.getWidth(); 

     Log.e("", "position: " + position + " pageWidth: " + pageWidth); 

     if (position < -1) { // [-Infinity,-1) 
      // This page is way off-screen to the left. 
      //view.setAlpha(0); 

     } else if (position <= 0) { // [-1,0] 
      // Use the default slide transition when moving to the left page 
      //    view.setAlpha(1); 
      //    view.setScaleX(1); 
      //    view.setScaleY(1); 
      view.setTranslationX(pageWidth * -position); 

     } else if (position <= 1) { // (0,1] 
      // Fade the page out. 
      //view.setAlpha(1 - position); 

      // Counteract the default slide transition 
      view.setTranslationX(pageWidth * -position + pageWidth/5); 

      // Scale the page down (between MIN_SCALE and 1) 
      //    float scaleFactor = MIN_SCALE 
      //      + (1 - MIN_SCALE) * (1 - Math.abs(position)); 
      //    view.setScaleX(scaleFactor); 
      //    view.setScaleY(scaleFactor); 

     } else { // (1,+Infinity] 
      // This page is way off-screen to the right. 
      //view.setTranslationX(pageWidth * -position + pageWidth/5); 
     } 
    } 
} 
+0

哪里截图? – Apurva 2015-03-13 11:04:19

+0

PHOTO hotlink,我不能包括屏幕后 – Vaizadoo 2015-03-13 11:45:55

回答

1

只是改变你的代码是这样

switch (position) { 
     case 0: 
      return new CenterFragment(); 
     case 1: 
      return new FriendsFragment(); 
     case 2: 
      return new MenuFragment(); 
    } 
+0

如果我改变代码就像你说的做中心片段仍然是中心?我不认为哟.. – Vaizadoo 2015-03-13 11:44:42

+0

@Vaizadoo,不,它不会,你想这样只对吗? – 2015-03-13 11:51:24

+0

我附上了一张2张照片,说明了我想要达成的目标 – Vaizadoo 2015-03-13 11:57:04