安卓卡片式ViewPager
我们来看看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相关推荐
- android卡片风格,[Android] Android 卡片式控件CardView的优雅使用
[Android] Android 卡片式控件CardView的优雅使用 CardView是在安卓5.0提出的卡片式控件 其具体用法如下: 1.在app/build.gradle 文件中添加 comp ...
- Android横向滚动卡片,RecyclerView+CardView实现横向卡片式滑动效果
现在来介绍两种控件recyclerview和cardview,并通过实例将它们结合在一起实现一种横向卡片式滑动效果. 1.recyclerview recyvlerview是android sdk 新 ...
- 树莓派Odroid等卡片式电脑上搭建NAS教程系列6-miniDLNA
目录: 1. 树莓派Odroid等卡片式电脑上搭建NAS教程系列1-Ubuntu系统安装 2. 树莓派Odroid等卡片式电脑上搭建NAS教程系列2-SSH连接访问 3. 树莓派Odroid等卡片式电 ...
- 卡片式设计的最佳实践分享
2017-02-17 三达不留点gpj CocoaChina 卡片本质上是一个简单的信息容器,信息量有限,但设计干净整洁.现如今,在保证界面具有优秀可用性的同时,卡片式的设计甚至成为了平衡界面美学的默 ...
- Flutter实现动画卡片式Tab导航 | 掘金技术征文
前言 本人接触Flutter不到一个月,深深感受到了这个平台的威力,于是不断学习,Flutter官方Example中的flutter_gallery,很好的展示了Flutter各个widget的功能 ...
- html5折叠卡片,基于HTML5折叠卡片式下拉菜单代码
基于HTML5折叠卡片式下拉菜单代码.这是一款基于jQuery+CSS3+HTML5实现的下拉列表框特效代码.效果图如下: 实现的代码. hmtl代码: 爱编程 爱编程 jQuery特效 CSS3特效 ...
- 太极发送卡片软件_QQ卡片式消息一键发送app
QQ卡片式消息一键发送app这是一款能够帮助你有创意的发送广告的app.属于qq的辅助工具,能够让你发送属于自己的卡片信息.如果你想要给自己打广告或者发送某张图片,或者想要显示应用,就可以使用这款软件 ...
- 说说 Android 的 Material Design 设计(四)——卡片式布局
我们使用 CardView 与 RecyclerView 来·实现一个各种猫的卡片式展示列表吧O(∩_∩)O~ 1 CardView 控件 1.1 引入依赖库 打开 app/build.gradle, ...
- android 折叠式布局,Android卡片式折叠交互效果
原标题:Android卡片式折叠交互效果 近日有报道称:在互联网共享单车最早起步的上海,目前有150万辆共享单车.迅猛的增速之下,上海市交通委紧急叫停,成为继杭州.广州等城市之后,国内又一个暂停新增投 ...
最新文章
- [转载]Tensorflow 的reduce_sum()函数的axis,keep_dim这些参数到底是什么意思?
- error LNK1112: module machine type 'X86' conflicts with target machine type 'x64'
- [NOI2002] 银河英雄传说(带权并查集好题)
- C++中的容器(STL容器)container
- 【转】 java自定义注解
- Tomcat服务在Eclipse中能够正常启动,但页面出现404错误的解决方法
- [导入]ASP.NET中上传并读取Excel文件数据
- protobuf在java应用中通过反射动态创建对象
- cf1562D Two Hundred Twenty One
- windows服务编写原理(上)
- c语言学习-判断101-200之间有多少个素数,并输出所有素数及素数的个数
- SPOJ 4487. Can you answer these queries VI splay
- 图片渲染延迟_Qt入门DirectX11学习之旅(六)DirectX11 GBuffer Deffered延迟渲染
- 总结oracle10g在Win10上安装时出现的问题及解决方案
- pscc2018教程photoshop软件全套入门到精通分享
- 缺陷报告单写作准则(5C)
- 计算机主机的税收,税控电脑
- 20182319彭淼迪第一周学习总结
- 第18章 RS485通信和Modbus协议
- Linux查看及测试网络