使用ViewPager屏幕幻灯片

来源:互联网 发布:外网访问内网mac服务器 编辑:程序博客网 时间:2024/05/22 03:48
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentStatePagerAdapter;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;


public class MainActivity extends FragmentActivity {


private static final int NUM_PAGES = 5;


 private ViewPager mPager;


   /**
    * The pager adapter, which provides the pages to the view pager widget.
    */
   private PagerAdapter mPagerAdapter;


   @Override
   protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_main);


       // Instantiate a ViewPager and a PagerAdapter.
       mPager = (ViewPager) findViewById(R.id.pager);
       mPagerAdapter = new ScreenSlidePagerAdapter(getSupportFragmentManager());
       mPager.setAdapter(mPagerAdapter);
       mPager.setPageTransformer(true, new ZoomOutPageTransformer());
   }


   @Override
   public void onBackPressed() {
       if (mPager.getCurrentItem() == 0) {
           // If the user is currently looking at the first step, allow the system to handle the
           // Back button. This calls finish() on this activity and pops the back stack.
           super.onBackPressed();
       } else {
           // Otherwise, select the previous step.
           mPager.setCurrentItem(mPager.getCurrentItem() - 1);
       }
   }


   
   public class ZoomOutPageTransformer implements ViewPager.PageTransformer {
       private static final float MIN_SCALE = 0.85f;
       private static final float MIN_ALPHA = 0.5f;


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


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


           } else if (position <= 1) { // [-1,1]
               // Modify the default slide transition to shrink the page as well
               float scaleFactor = Math.max(MIN_SCALE, 1 - Math.abs(position));
               float vertMargin = pageHeight * (1 - scaleFactor) / 2;
               float horzMargin = pageWidth * (1 - scaleFactor) / 2;
               if (position < 0) {
                   view.setTranslationX(horzMargin - vertMargin / 2);
               } else {
                   view.setTranslationX(-horzMargin + vertMargin / 2);
               }


               // Scale the page down (between MIN_SCALE and 1)
               view.setScaleX(scaleFactor);
               view.setScaleY(scaleFactor);


               // Fade the page relative to its size.
               view.setAlpha(MIN_ALPHA +
                       (scaleFactor - MIN_SCALE) /
                       (1 - MIN_SCALE) * (1 - MIN_ALPHA));


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


@Override
public boolean onCreateOptionsMenu(Menu menu) {


// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}


@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}


/**
* A simple pager adapter that represents 5 ScreenSlidePageFragment objects,
* in sequence.
*/
private class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter {
public ScreenSlidePagerAdapter(FragmentManager fm) {
super(fm);
}


@Override
public Fragment getItem(int position) {
return new ScreenSlidePageFragment();
}


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


/**
* A placeholder fragment containing a simple view.
*/
public static class PlaceholderFragment extends Fragment {


public PlaceholderFragment() {
}


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_main, container,
false);
return rootView;
}
}


}
0 0
原创粉丝点击