在一个已经是月黑风高快下班的时刻了,我们产品突然通知我们开会,要添加一个功能,他闲来无聊随便戳了戳facebook,说点开联系人的那个横向滑动的卡片式的效果不错,让我们在我们的app里添加这个效果,我的天。。。
这如何实现,能滑动的我能想到的也就是viewpager了,但是那个界面显示的是一屏幕显示仨界面,就在我年幼时都不知道这如何百度,这个效果是啥,经过我不懈的努力终于知道了。。。
大概效果是这样。。。
大概就这丑样子。。。
瞅瞅代码吧,先看xml文件activity_main2
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/linear_parent"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clipChildren="false"
android:layerType="software">
<android.support.v4.view.ViewPager
android:id="@+id/vp_wifi_list"
android:layout_width="280dp"
android:layout_height="400dp"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:background="@drawable/selector_wifi_viewpager_bg"
android:clipChildren="false"/>
</RelativeLayout>
重头戏看这里:父布局一定要加这俩属性!
android:clipChildren="false"<父控件里设置,这个属性是限制子控件大小,默认是true,也就是限制,这里需要手动设置成false,通俗点儿说
就是就是说对于子元素来说,超出当前view的部分都会被切掉,那我们在这里把它设置成false,就是让超出view的部分,不要切掉>
android:layerType="software"<父控件里设置,这个属性是设置层的属性为软件层,因为从android4.0之后,android是默认启动硬件加速的,
而硬件加速对clip等操作是有影响的,会有问题,所以如果我们在自定义View样式中,用到clip等操作,对于android4.0以上的版本,我们需要将它的
硬件加速关掉>
代码里是这样:
// 可显示的界面个数
mViewPager.setOffscreenPageLimit(3);
// 每个页面之间的距离
mViewPager.setPageMargin(20);
// 设置adapter
mViewPager.setAdapter(new ViewPagerAdapter(mViews));
可以了就这么简单。。。