I am trying to display a specific ViewPager page when a button is clicked. It works, but scrolling to this particular page is not smooth, that is, suppose I am not on the page. 1, but if I want to go to page no. 5, other pages 2,3,4 also scroll. I just want to scroll this page. How to do it. I used the following code, please see:
Below is the FragmentActivity code:
public class ScreenSlideFragmentActivity extends FragmentActivity implements SlidingPageInterface{ private static final int NUM_PAGES = 6; private ViewPager mPager; private PagerAdapter mPagerAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_screen_slide); mPager = (ViewPager) findViewById(R.id.pager); mPagerAdapter = new ScreenSlidePagerAdapter(getSupportFragmentManager()); mPager.setAdapter(mPagerAdapter); mPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() { @Override public void onPageSelected(int position) { } }); } private class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter { public ScreenSlidePagerAdapter(android.support.v4.app.FragmentManager fragmentManager) { super(fragmentManager); } @Override public android.support.v4.app.Fragment getItem(int position) { return ScreenSlidePageFragment.create(position, NUM_PAGES, ScreenSlideFragmentActivity.this); } @Override public int getCount() { return NUM_PAGES; } } @Override public void notifyToSlideToRespectivePage(int pageNumber) { mPager.setCurrentItem(pageNumber, true); } }
Below the code is a snippet:
public class ScreenSlidePageFragment extends android.support.v4.app.Fragment { public static final String ARG_CURRENT_PAGE = "current_page"; public static final String ARG_TOTAL_PAGE_COUNT = "total_page_count"; private int mPageNumber; private int mTotalPageCount; private static ScreenSlideFragmentActivity mActivity; public static ScreenSlidePageFragment create(int pageNumber, int totalNoPages, ScreenSlideFragmentActivity activity) { Log.e("create", "create called"); ScreenSlidePageFragment fragment = new ScreenSlidePageFragment(); Bundle args = new Bundle(); args.putInt(ARG_CURRENT_PAGE, pageNumber); args.putInt(ARG_TOTAL_PAGE_COUNT, totalNoPages); fragment.setArguments(args); mActivity = activity; return fragment; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mPageNumber = getArguments().getInt(ARG_CURRENT_PAGE); mTotalPageCount = getArguments().getInt(ARG_TOTAL_PAGE_COUNT); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { ViewGroup rootView = (ViewGroup) inflater .inflate(R.layout.fragment_screen_slide_page, container, false);
Any ideas how to achieve this.
source share