ViewPager一屏显示多页的内容

ViewPager轮播图实现一屏显示多页的效果,如图所示

接下来具体介绍咋个实现 
1.首先我们要了解一个属性:android:clipChildren;这个属性表示是否限制子View在其范围内,默认是true,即限制子View在其范围内,所以很明显,当前页要显示前后两页的内容,就要在XML文件中将其父布局的这个属性值设置为false,当然也可以在代码中设置:setClipChildren(false)。

2.通过设置 ViewPager 的 layout_marginLeft 和 layout_marginLeft 两个属性以及通过setPageMargin(int marginPixls)方法,可以设置其他页面(非当前页面)的显示大小,setPageMargin(int marginPixls)方法的作用是设置两个page的间距。

需要注意: 
setClipChildren(false)在3.0以上版本,开启了硬件加速后将不能正常生效,需要将其父布局设置成软件加速。设置软件加速的方法是setLayerType(View.LAYER_TYPE_SOFTWARE, null); 也可以在布局文件中添加 android:layerType=”software”。
 

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="150dp"
    android:clipChildren="false"
    android:layerType="software">

    <android.support.v4.view.ViewPager
        android:layout_marginTop="10dp"
        android:id="@+id/viewPager"
        android:layout_width="match_parent"
        android:layout_height="150dp"
        android:layout_marginLeft="20dp"
        android:layout_marginRight="20dp"

        />

</RelativeLayout>

Activity中代码:

 private void addImageView() {
       

        //配置轮播图ViewPager

        mAdapter = new MyPagerAdapter(mItems, mcontext);
        mViewPager.setAdapter(mAdapter);

        mViewPager.setOffscreenPageLimit(3);
        mViewPager.setPageTransformer(true,new Transformer()); //切换动画,左右两边页面高度低
        mViewPager.setPageMargin(DensityUtils.dip2px(10f));

    }

  private class Transformer implements ViewPager.PageTransformer {

        private final float MIN_SCALE = 0.8f;
        @Override
        public void transformPage(View page, float position) {
            if(position >= -1 && position <= 1) {
            
                page.setScaleY(1.0f - Math.abs(position) * (1 - MIN_SCALE));
            } else {
             
                page.setScaleY(MIN_SCALE);
            }
        }
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值