有图有真相我们先看图
上代码了:
初始化:
private void initView() {
WindowManager wm = (WindowManager) this.getSystemService(Context.WINDOW_SERVICE)
int width = wm.getDefaultDisplay().getWidth()
int height = wm.getDefaultDisplay().getHeight()
RelativeLayout.LayoutParams params=new RelativeLayout.LayoutParams(
width*5/10,
height*6/20)
viewPager = (ViewPager) findViewById(R.id.ViewPager)
viewPager.setLayoutParams(params)
viewPager.setAdapter(new ViewPagerAdapter())
relativeLayout = (RelativeLayout) findViewById(R.id.relativelayout)
viewPager.setOffscreenPageLimit(2)
viewPager.setPageMargin(100)
viewPager.setClipChildren(false)
viewPager.setPageTransformer(true,new ZoomOutPageTransformer())
relativeLayout.setClipChildren(false)
}
创建Adapter:
public class ViewPagerAdapter extends PagerAdapter{
@Override
public int getCount() {
return 10;
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view==object;
}
@Override
public Object instantiateItem(ViewGroup container, final int position) {
ImageView imageView = new ImageView(MainActivity.this);
imageView.setImageResource(R.mipmap.ddz);
imageView.setScaleType(ImageView.ScaleType.FIT_XY);
container.addView(imageView);
return imageView;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((ImageView) object);
}
}
实现PageTransformer接口:
public class ZoomOutPageTransformer implements ViewPager.PageTransformer{
private static final float MAX_SCALE = 1.2f;
private static final float MIN_SCALE = 1.0f;
@Override
public void transformPage(View page, float position) {
if (position<=1){
float scaleFactor = MIN_SCALE+(1-Math.abs(position))*(MAX_SCALE-MIN_SCALE);
page.setScaleX(scaleFactor);
if(position>0){
page.setTranslationX(-scaleFactor*2);
}else if(position<0){
page.setTranslationX(scaleFactor*2);
}
page.setScaleY(scaleFactor);
}else {
page.setScaleX(MIN_SCALE);
page.setScaleY(MIN_SCALE);
}
}
}
接下来看看xml:
<RelativeLayout
android:id="@+id/relativelayout"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:clipChildren="false"
android:background="@mipmap/ddf"
tools:context="com.android.cgcxy.galleryviewpagerview.MainActivity">
<android.support.v4.view.ViewPager
android:layout_gravity="center"
android:id="@+id/ViewPager"
android:clipChildren="false"
android:layout_centerVertical="true"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
</RelativeLayout>
搞定了