我们来看看activity的布局:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context="org.lenve.myviewpagercards2.MainActivity"><android.support.v4.view.ViewPagerandroid:id="@+id/viewpager"android:layout_width="match_parent"android:layout_height="300dp"android:clipToPadding="false"android:paddingBottom="24dp"android:paddingLeft="80dp"android:paddingRight="80dp"android:paddingTop="24dp"></android.support.v4.view.ViewPager>
</RelativeLayout>

ViewPager中每一个item的布局:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView android:id="@+id/cardview"xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"android:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="vertical"app:cardCornerRadius="10dp"><RelativeLayoutandroid:layout_width="match_parent"android:layout_height="300dp"><TextViewandroid:id="@+id/tv"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_centerInParent="true"android:gravity="center"android:text="我是一个TextView"/><Buttonandroid:layout_width="96dp"android:layout_height="36dp"android:textColor="#ffffff"android:layout_below="@id/tv"android:layout_centerHorizontal="true"android:layout_marginTop="12dp"android:background="@color/colorAccent"android:text="我是一个按钮"/></RelativeLayout>
</android.support.v7.widget.CardView>

Adapter:

public class MyAdapter extends PagerAdapter {private List<Integer> list;private Context context;private LayoutInflater inflater;public MyAdapter(Context context, List<Integer> list) {this.context = context;this.list = list;inflater = LayoutInflater.from(context);}@Overridepublic int getCount() {return list.size();}@Overridepublic boolean isViewFromObject(View view, Object object) {return view == object;}@Overridepublic Object instantiateItem(ViewGroup container, int position) {View view = inflater.inflate(R.layout.vp_item, container, false);container.addView(view);return view;}@Overridepublic void destroyItem(ViewGroup container, int position, Object object) {container.removeView((View) object);}
}

Activity中的代码:

ViewPager viewPager = (ViewPager) findViewById(R.id.viewpager);List<Integer> list = new ArrayList<>();list.add(R.drawable.p001);list.add(R.drawable.p002);list.add(R.drawable.p003);list.add(R.drawable.p004);list.add(R.drawable.p005);MyAdapter adapter = new MyAdapter(this, list);viewPager.setAdapter(adapter);viewPager.setPageMargin((int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,48, getResources().getDisplayMetrics()));viewPager.setPageTransformer(false, new ScaleTransformer(this));

最后再来看看我们定义的PageTransformer:

public class ScaleTransformer implements ViewPager.PageTransformer {private Context context;private float elevation;public ScaleTransformer(Context context) {this.context = context;elevation = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,20, context.getResources().getDisplayMetrics());}@Overridepublic void transformPage(View page, float position) {if (position < -1 || position > 1) {} else {if (position < 0) {((CardView) page).setCardElevation((1 + position) * elevation);} else {((CardView) page).setCardElevation((1 - position) * elevation);}}}
}

很简单,我只是对CardView的阴影做了处理 ,其他属性都没改。

Demo下载:https://download.csdn.net/download/qq_26923265/11216282

安卓卡片式ViewPager相关推荐

  1. android卡片风格,[Android] Android 卡片式控件CardView的优雅使用

    [Android] Android 卡片式控件CardView的优雅使用 CardView是在安卓5.0提出的卡片式控件 其具体用法如下: 1.在app/build.gradle 文件中添加 comp ...

  2. Android横向滚动卡片,RecyclerView+CardView实现横向卡片式滑动效果

    现在来介绍两种控件recyclerview和cardview,并通过实例将它们结合在一起实现一种横向卡片式滑动效果. 1.recyclerview recyvlerview是android sdk 新 ...

  3. 树莓派Odroid等卡片式电脑上搭建NAS教程系列6-miniDLNA

    目录: 1. 树莓派Odroid等卡片式电脑上搭建NAS教程系列1-Ubuntu系统安装 2. 树莓派Odroid等卡片式电脑上搭建NAS教程系列2-SSH连接访问 3. 树莓派Odroid等卡片式电 ...

  4. 卡片式设计的最佳实践分享

    2017-02-17 三达不留点gpj CocoaChina 卡片本质上是一个简单的信息容器,信息量有限,但设计干净整洁.现如今,在保证界面具有优秀可用性的同时,卡片式的设计甚至成为了平衡界面美学的默 ...

  5. Flutter实现动画卡片式Tab导航 | 掘金技术征文

    前言 本人接触Flutter不到一个月,深深感受到了这个平台的威力,于是不断学习,Flutter官方Example中的flutter_gallery,很好的展示了Flutter各个widget的功能 ...

  6. html5折叠卡片,基于HTML5折叠卡片式下拉菜单代码

    基于HTML5折叠卡片式下拉菜单代码.这是一款基于jQuery+CSS3+HTML5实现的下拉列表框特效代码.效果图如下: 实现的代码. hmtl代码: 爱编程 爱编程 jQuery特效 CSS3特效 ...

  7. 太极发送卡片软件_QQ卡片式消息一键发送app

    QQ卡片式消息一键发送app这是一款能够帮助你有创意的发送广告的app.属于qq的辅助工具,能够让你发送属于自己的卡片信息.如果你想要给自己打广告或者发送某张图片,或者想要显示应用,就可以使用这款软件 ...

  8. 说说 Android 的 Material Design 设计(四)——卡片式布局

    我们使用 CardView 与 RecyclerView 来·实现一个各种猫的卡片式展示列表吧O(∩_∩)O~ 1 CardView 控件 1.1 引入依赖库 打开 app/build.gradle, ...

  9. android 折叠式布局,Android卡片式折叠交互效果

    原标题:Android卡片式折叠交互效果 近日有报道称:在互联网共享单车最早起步的上海,目前有150万辆共享单车.迅猛的增速之下,上海市交通委紧急叫停,成为继杭州.广州等城市之后,国内又一个暂停新增投 ...

最新文章

  1. [转载]Tensorflow 的reduce_sum()函数的axis,keep_dim这些参数到底是什么意思?
  2. error LNK1112: module machine type 'X86' conflicts with target machine type 'x64'
  3. [NOI2002] 银河英雄传说(带权并查集好题)
  4. C++中的容器(STL容器)container
  5. 【转】 java自定义注解
  6. Tomcat服务在Eclipse中能够正常启动,但页面出现404错误的解决方法
  7. [导入]ASP.NET中上传并读取Excel文件数据
  8. protobuf在java应用中通过反射动态创建对象
  9. cf1562D Two Hundred Twenty One
  10. windows服务编写原理(上)
  11. c语言学习-判断101-200之间有多少个素数,并输出所有素数及素数的个数
  12. SPOJ 4487. Can you answer these queries VI splay
  13. 图片渲染延迟_Qt入门DirectX11学习之旅(六)DirectX11 GBuffer Deffered延迟渲染
  14. 总结oracle10g在Win10上安装时出现的问题及解决方案
  15. pscc2018教程photoshop软件全套入门到精通分享
  16. 缺陷报告单写作准则(5C)
  17. 计算机主机的税收,税控电脑
  18. 20182319彭淼迪第一周学习总结
  19. 第18章 RS485通信和Modbus协议
  20. Linux查看及测试网络

热门文章

  1. #P00603. 倒水
  2. 回归分析regression analysis
  3. java 上传图片与图片读取
  4. java :工资计算
  5. java springboot 商城系统源码
  6. 树莓派控制16路PWM输出的PCA9685模块
  7. joinus计算机怎么弄游戏,美国us计算机专业学校排名:joinus学生计算机如何消除sci...
  8. 微信自动回复功能实现
  9. IOS上传app store审核截图规格要求
  10. pic16F877A音乐盒c语言,基于PIC16F877A单片机的混沌信号发生器的设计