效果:


image.png

布局中viewPager必须设置android:clipChildren="false",同时它的父控件也必须设置,且viewpager需要设置与左边及右边的间隔:android:layout_marginLeft、android:layout_marginRight
·布局如下:

    

java中
设置缩放及透明效果主要在ScaleTransformer中,其中Viewpager需要设置page的间隔及预加载页数

@Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.ui_pager);        ViewPager pager = (ViewPager) findViewById(R.id.viewpager);        pager.setPageMargin(8);        pager.setOffscreenPageLimit(5);        pager.setPageTransformer(false,new ScaleTransformer());        pager.setAdapter(new MyAdapter(pager));    }     class MyAdapter extends PagerAdapter{         ViewPager mViewPager;         public MyAdapter(ViewPager viewPager){            mViewPager = viewPager;         }        @Override        public int getCount() {            return 5;        }        @Override        public boolean isViewFromObject(View view, Object object) {            return view==object;        }        @Override        public Object instantiateItem(ViewGroup container, final int position) {            ImageView imageView = new ImageView(PagerActivity.this);            imageView.setImageResource(R.drawable.a);            imageView.setOnClickListener(new View.OnClickListener() {                @Override                public void onClick(View view) {                    mViewPager.setCurrentItem(position);                    Toast.makeText(PagerActivity.this,"position:"+position,Toast.LENGTH_SHORT).show();                }            });            container.addView(imageView);            return imageView;        }         @Override         public void destroyItem(ViewGroup container, int position, Object object) {             container.removeView((View) object);         }     }
public class ScaleTransformer extends AlphaTransformer{    private float MIN_ALPHA = 0.5f;    private float MIN_SCALE = 0.70f;    /**     * position取值特点:     * 假设页面从0~1,则:     * 第一个页面position变化为[0,-1]     * 第二个页面position变化为[1,0]     */    @Override    public void transformPage(View page, float position) {        //缩放效果        if (position < -1 || position > 1) {            page.setAlpha(MIN_ALPHA);            page.setScaleX(MIN_SCALE);            page.setScaleY(MIN_SCALE);        } else if (position <= 1) { // [-1,1]            float scaleFactor = Math.max(MIN_SCALE, 1 - Math.abs(position));            if (position < 0) {                float scaleX = 1 + 0.3f * position;                page.setScaleX(scaleX);                page.setScaleY(scaleX);            } else {                float scaleX = 1 - 0.3f * position;                page.setScaleX(scaleX);                page.setScaleY(scaleX);            }            page.setAlpha(MIN_ALPHA + (scaleFactor - MIN_SCALE) / (1 - MIN_SCALE) * (1 - MIN_ALPHA));        }    }}

更多相关文章

  1. 修改Android默认的RadioButton样式
  2. Android(安卓)初识AppBarLayout 和 CoordinatorLayout
  3. android webket的应用,webview,javascript
  4. JDK ANT ANDROID Configure
  5. 动态设置android:drawableLeft|Right|Top|Bottom
  6. Android(安卓)调用相册 拍照 实现系统控件缩放 切割图片
  7. android手势翻页效果
  8. android背景与style的设置
  9. 【Android】Android(安卓)权限大全

随机推荐

  1. Shake Android(安卓)ui elements
  2. Android(安卓)任务共用性Affinity
  3. 关于Android环境配置SDK的问题Failed to
  4. Android(安卓)ORM框架GreenDao用法
  5. Android系统自带样式(android:theme)(stephe
  6. Android之屏幕切换使用技巧
  7. android 中 涉及到context的时候this和th
  8. Android:常见错误提示
  9. 【Android】Android(安卓)联系人数据库浅
  10. 第一次写博客,先上传一下平常开发android