ViewPager 实现画廊效果

来源:互联网 发布:ui设计要学编程吗 编辑:程序博客网 时间:2024/05/17 08:09

有图有真相我们先看图

这里写图片描述

上代码了:

初始化:

 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;//0.85f        @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>

搞定了

原创粉丝点击