1.实现viewpager同时显示三个item,这个效果实现起来还挺简单的。

只需要设置viewPager.setOffscreenPageLimit(3); 让viewpager可以显示3个item,并设置viewPager.setPageMargin(50);让每个item间有点间隔的效果 。在xml布局中设置viewpager和他的父控件的clipChildren属性为false就好了。

xml布局:

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".Main3Activity"android:clipChildren="false"><android.support.v4.view.ViewPagerandroid:id="@+id/viewpager"android:layout_width="match_parent"android:layout_height="match_parent"android:layout_margin="50dp"android:clipChildren="false"/></android.support.design.widget.CoordinatorLayout>

java代码:(adapter自己写吧,默认大家都会)

public class Main3Activity extends AppCompatActivity {@BindView(R.id.viewpager)ViewPager viewPager;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main3);ButterKnife.bind(this);//设置viewpager可以显示3个item,每个item间有点间隔的效果viewPager.setOffscreenPageLimit(3);viewPager.setPageMargin(50);//设置viewpager的adapterArrayList<Integer> data = new ArrayList<>();data.add(R.drawable.apple);data.add(R.drawable.banana);data.add(R.drawable.watermelon);data.add(R.drawable.pineapple);data.add(R.drawable.strawberry);ViewPagerAdapter adapter = new ViewPagerAdapter(data);viewPager.setAdapter(adapter);}
}

2.实现切换动画。

设置viewpager的setPageTransformer(true, pagetransformer),pageTransFormer是个接口,需要我们自己实现它的transformPage方法。

@Override
public void transformPage(@NonNull View view, float v)

这个方法中的view就是我们的item,v的值随左右滑动而变,概括来讲就是当前显示的item的v为0,其左边item的v都是负值,右边为正值,向左滑v减小,右滑v增大。我实现了一个缩放的效果,你也可以自己定义自己需要的效果。

布局和上面一样,java代码:

public class Main3Activity extends AppCompatActivity {@BindView(R.id.viewpager)ViewPager viewPager;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main3);ButterKnife.bind(this);//设置viewpager可以显示3个item,每个item间有点间隔的效果viewPager.setOffscreenPageLimit(3);viewPager.setPageMargin(50);//设置viewpager的切换动画viewPager.setPageTransformer(true, new ViewPager.PageTransformer() {@Overridepublic void transformPage(@NonNull View view, float v) {//view就是我们adapter里返回的view,设置view的缩放中心为右上角view.setPivotX(view.getWidth());view.setPivotY(0);//v的值随左右滑动而变,概况来讲就是当前显示的item的v为0,其左边item的v都是负值,右边为正值if (v < -1) {//当前显示的item左边第二个及更左的item//看不到的item不缩放view.setScaleX(1);view.setScaleY(1);} else if (v < 0){//当前显示的item左边第一个item//逐渐放大view.setScaleX(1 + v);view.setScaleY(1 + v);} else if (v == 0) {//当前显示的item的} else if (v <= 1) {//当前显示的item右边第一个item//逐渐放大view.setScaleX(1 - v);view.setScaleY(1 - v);} else {//当前显示的item右边第二个及更右的itemview.setScaleX(1);view.setScaleY(1);}}});//设置viewpager的adapterArrayList<Integer> data = new ArrayList<>();data.add(R.drawable.apple);data.add(R.drawable.banana);data.add(R.drawable.watermelon);data.add(R.drawable.pineapple);data.add(R.drawable.strawberry);ViewPagerAdapter adapter = new ViewPagerAdapter(data);viewPager.setAdapter(adapter);}
}

android实现Materia Design风格APP(四):ViewPager同时显示3个item及设置切换动画相关推荐

  1. Android中ViewPager支持一屏多个View、切换动画以及无限滚动

    1. 首先看一下最终的效果图 2. 需求拆解 第一眼看见上面的效果,是不是有些朋友觉得这个效果很酷,有的高手会觉得这个效果很简单.笔者昨天刚拿到需求的时候,最开始也是觉得这个很简单,可是越分析越发现好 ...

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

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

  3. android 基础 materia design 设计

    material design颜色选择 700   500   100 material design字体大小 最基本的样式集合就是基于12.14.16.20和34号的字体排版缩放. 英文字体使用Ro ...

  4. Android问题——解决Toast在APP通知关闭不显示

    Android在8.0中针对通知一块在功能上做了较大的改动. Toast被纳入到了通知管理,其实这在Android 4.4(API 19)以上就已经有特别的处理了.只是一般用户不会怎么注意,开发人员也 ...

  5. Android 实现个性的ViewPager切换动画 实战PageTransformer(兼容Android3.0以下)

    转载请标明出处: http://blog.csdn.net/lmj623565791/article/details/40411921 ,本文出自: [张鸿洋的博客] 1.概述 之前写过一篇博文:An ...

  6. Android ViewPager Parallax视觉差切换动画

    转载请标明原地址:http://blog.csdn.net/gaolei1201/article/details/50428553 ViewPager 我们比较常用,但是它的切换只有水平滚动着一种方式 ...

  7. 【Android项目实战 | 从零开始写app (六) 】用TabLayout+ViewPager搭建App 框架主页面底部导航栏

    本篇实现效果: 搭建app框架的方式有很多,本节主要用TabLayout+ViewPager搭建App框架,这种方式简单易实现,在主页中加载Fragment碎片,实现不同功能页面的切换效果图如下: 文 ...

  8. 【Android项目实战 | 从零开始写app(十二)】实现app首页智慧服务热门推荐热门主题、新闻

    说在前面,由于各种adapter,xml布局,bean实体类,Activity,也为了让看懂,代码基本都是"简单粗暴直接不好看",没啥okhttp和util工具类之类的封装,本篇幅 ...

  9. 【Android项目实战 | 从零开始写app(十三)】实现用户中心模块清除token退出登录信息修改等功能

    五一后,被ji金伤了,哇呜呜,还是得苦逼老老实实打工写代码,看下面吧 本篇实现效果: 实现登录用户名展示到用户中心页面上,并且页面有个人信息,订单列表,修改密码,意见反馈发送到服务端,前面登录后,通过 ...

  10. 【Android项目实战 | 从零开始写app一一智慧服务】完结篇系列导航篇、源代码

    目录 文章介绍 涉及知识 系列汇总 项目源代码 文章介绍 本系列小文是一个简单的Android app项目实战,对于刚入门Android 的初学者来说,基础学完了,但是怎么综合的去写一个小app,可能 ...

最新文章

  1. python input和print,Python基础——输出[print()]与输入[input()]
  2. 如何在WordPress中自定义PHP页面并操作数据库?
  3. play版 高德地图google_iOS 12 发布,苹果 CarPlay 终于开始支持谷歌、高德导航
  4. 我是如何用6个月,从0编程经验变成数据科学家的?
  5. 翻转课堂实践:让学生转换角色试一试
  6. mysql滚动条不见了,11-JS处理滚动条
  7. 1、varargout与nargout区别
  8. Axure RP 8汉化
  9. moodle安装图解
  10. Oracle GoldenGate下载地址
  11. java扫码枪对接支付宝,支付宝扫码枪如何应用?
  12. 统计学——单因素方差分析
  13. VTP(VLAN中继协议)简单介绍
  14. html5梯形图形代码,CSS秘密花园:梯形标签
  15. 计算机科学教学指导委员会,教育部高等学校计算机专业教学指导委员会委员 徐久成教授...
  16. (文末送书)字符数组与字符串
  17. FireBox与Chrome,FireBox 对代码执行严格
  18. 前端js下载文件压缩包
  19. 计算机硬件和软件之间的区别
  20. C#ObjectArx Cad删除实体

热门文章

  1. filter动态参数 maven_多环境下Maven项目的管理
  2. SQL:postgresql修改某字段的部分内容
  3. Javascript特效:图片切换(类似于电商网站图片查看)的封装实现和闭包实现
  4. boost boost::asio::read read_some receive 区别
  5. 论文笔记_S2D.03-2012-BMVC-目标类别分割和稠密立体重建的联合优化
  6. Github大盘点!2021年最惊艳的38篇AI论文
  7. 面向对象三大特性——多态
  8. windows远程桌面神器
  9. 第四次作业——04树
  10. 爬虫协程比线程爬取速度更快?