package com.kaichunlin.transition.app; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentStatePagerAdapter; import android.support.v4.view.ViewPager; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import com.kaichunlin.transition.adapter.OnPageChangeListenerAdapter; import com.kaichunlin.transition.internal.debug.TraceTransitionManagerListener; import kaichunlin.transition.app.R; public class ViewPagerActivity extends AppCompatActivity { // When requested, this adapter returns a DemoObjectFragment, // representing an object in the collection. private DemoCollectionPagerAdapter mDemoCollectionPagerAdapter; private ViewPager mViewPager; private OnPageChangeListenerAdapter adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_view_pager); final Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); // ViewPager and its adapters use support library // fragments, so use getSupportFragmentManager. mDemoCollectionPagerAdapter = new DemoCollectionPagerAdapter( getSupportFragmentManager()); mViewPager = (ViewPager) findViewById(R.id.pager); mViewPager.setAdapter(mDemoCollectionPagerAdapter); // TransitionConfig.setPrintDebug(true); adapter = OnPageChangeListenerAdapter.bindWithRotationYTransition(mViewPager); //debug adapter.addTransitionListener(new TraceTransitionManagerListener()); } @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.viewpager, menu); return super.onCreateOptionsMenu(menu); } @Override public boolean onOptionsItemSelected(MenuItem menu) { super.onOptionsItemSelected(menu); switch (menu.getItemId()) { case R.id.trans_y: adapter.removeAllTransitions(); OnPageChangeListenerAdapter.bindWithRotationYTransition(adapter); break; case R.id.zoom: adapter.removeAllTransitions(); OnPageChangeListenerAdapter.bindWithZoomOutTransition(adapter); break; case R.id.depth: //has to rebuild adapter since the drawing order needs to be reversed adapter = OnPageChangeListenerAdapter.bindWithDepthTransition(mViewPager); break; case R.id.rotate: OnPageChangeListenerAdapter.bindWithRotate(adapter); break; } return true; } public class DemoCollectionPagerAdapter extends FragmentStatePagerAdapter { public DemoCollectionPagerAdapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int i) { Fragment fragment = new ViewPagerActivityFragment(); Bundle args = new Bundle(); int id; switch (i) { case 0: id = R.drawable.bg; break; case 1: id = R.drawable.bg2; break; case 2: id = R.drawable.bg3; break; case 3: id = R.drawable.bg4; break; default: id = 0; break; } args.putInt(ViewPagerActivityFragment.ID, i); args.putInt(ViewPagerActivityFragment.RES_ID, id); fragment.setArguments(args); return fragment; } @Override public int getCount() { return 4; } @Override public CharSequence getPageTitle(int position) { return "Image " + (position + 1); } } }