高仿支付宝首页头部动画(使用design实现效果,CoordinatorLayout+AppBarLayout+CollapsingToolbarLayout+Toolbar)

效果图(效果图渐变不明显,建议下载demo或者apk查看)

实现原理(一个CoordinatorLayout嵌套AppBarLayout再嵌套CollapsingToolbarLayout再嵌套Toolbar的布局)

1、CoordinatorLayout嵌套AppBarLayout,这是为了让头部导航栏能够跟随内容视图下拉而展开,跟随内容视图上拉而收缩。这个内容视图可以是RecyclerView,也可以是NestedScrollView;
2、AppBarLayout嵌套CollapsingToolbarLayout,这是为了定义导航栏下面需要展开和收缩的部分视图;
3、CollapsingToolbarLayout嵌套Toolbar,这是为了定义导航栏上方显示的搜索区域或小图标区域,其中Toolbar还要定义两个不同的样式布局,用于分别显示搜索区域或小图标区域。

布局文件如下

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayoutxmlns: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"android:fitsSystemWindows="true"tools:context="leifu.alipayhome.MainActivity"><android.support.design.widget.AppBarLayoutandroid:id="@+id/abl_bar"android:layout_width="match_parent"android:layout_height="wrap_content"><android.support.design.widget.CollapsingToolbarLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"app:layout_scrollFlags="scroll|exitUntilCollapsed|snap"><includelayout="@layout/include_title_big"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginTop="50dp"app:layout_collapseMode="parallax"app:layout_collapseParallaxMultiplier="0.7"/><android.support.v7.widget.Toolbarandroid:layout_width="match_parent"android:layout_height="50dp"app:contentInsetLeft="0dp"app:contentInsetStart="0dp"app:layout_collapseMode="pin"><includeandroid:id="@+id/include_toolbar_search"layout="@layout/include_toolbar_search"/><includeandroid:id="@+id/include_toolbar_small"layout="@layout/include_toolbar_small"/></android.support.v7.widget.Toolbar></android.support.design.widget.CollapsingToolbarLayout></android.support.design.widget.AppBarLayout><android.support.v4.widget.NestedScrollViewandroid:layout_width="match_parent"android:layout_height="wrap_content"app:layout_behavior="@string/appbar_scrolling_view_behavior"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><ImageViewandroid:layout_width="match_parent"android:layout_height="220dp"android:scaleType="centerCrop"android:src="@drawable/menu"/><ImageViewandroid:layout_width="match_parent"android:layout_height="580dp"android:scaleType="centerInside"android:src="@drawable/bg"/><TextViewandroid:layout_width="match_parent"android:layout_height="350dp"android:gravity="center_horizontal"android:padding="20dp"android:text="上下可以滑动"/></LinearLayout></android.support.v4.widget.NestedScrollView></android.support.design.widget.CoordinatorLayout>
  • ## 注意
    1.使用之前要在 /app/build.gradle中添加
  dependencies {compile 'com.android.support:design:26.0.0-alpha1'compile 'com.gyf.barlibrary:barlibrary:2.3.0'}

design为材料设计仓库,barlibrary为第三方沉浸式状态栏的实现

2.CollapsingToolbarLayout中需要添加

        app:layout_scrollFlags="scroll|exitUntilCollapsed|snap"

3.include_title_big(扫一扫 付一付 聊一聊 咻一咻 的大图标)的布局需要

        android:layout_marginTop="50dp"app:layout_collapseMode="parallax"app:layout_collapseParallaxMultiplier="0.7" 

layout_marginTop预留出toolbar的高度,否则布局重叠

4.Toolbar

        android:layout_height="50dp"app:contentInsetLeft="0dp"app:contentInsetStart="0dp"app:layout_collapseMode="pin"

高度为50dp,app:layout_collapseMode=”pin”为固定模式
Toolbar里面放两个布局(一个搜索的布局,一个扫一扫 付一付 聊一聊 咻一咻 的小图标布局),通过监听AppBarLayout的移动控制显示还是隐藏
5.最下面防止滚动的控件,可以是RecyclerView,也可以是NestedScrollView,一定要在布局中设置

app:layout_behavior="@string/appbar_scrolling_view_behavior"
  • ## 最重要一点 因为支付有个淡入淡出的渐变动画

    这个渐变动画其实可分为两段:
    1、导航栏从展开状态向上收缩时,头部的各控件要慢慢向背景色过渡,也就是淡入效果;
    2、导航栏向上收缩到一半,顶部的工具栏要换成收缩状态下的工具栏布局,并且随着导航栏继续向上收缩,新工具栏上的各控件也要慢慢变得清晰起来,也就是淡出效果。
    我们可以采取类似遮罩的做法,即一开始先给导航栏罩上一层透明的视图,此时导航栏的画面就完全显示;然后随着导航栏的移动距离,计算当前位置下的遮罩透明度,比如该遮罩变得越来越不透明,看起来导航栏就像蒙上了一层面纱,蒙到最后就看不见了。反过来,也可以一开始给导航栏罩上一层不透明的视图,此时导航栏的控件是看不见的,然后随着距离的变化,遮罩变得越来越不透明,导航栏也会跟着变得越来越清晰了。

只需给AppBarLayout对象调用addOnOffsetChangedListener方法,即可实现给导航栏注册偏移监听器的功能。

//AppBarLayout的监听方法@Overridepublic void onOffsetChanged(AppBarLayout appBarLayout, int verticalOffset) {Log.d("aaa", "verticalOffset=" + verticalOffset);//720*1080手机 verticalOffset取值范围[0-200]pxint absVerticalOffset = Math.abs(verticalOffset);//AppBarLayout竖直方向偏移距离pxint totalScrollRange = appBarLayout.getTotalScrollRange();//AppBarLayout总的距离px//背景颜色转化成RGB的渐变色int argb = Color.argb(absVerticalOffset, Color.red(mMaskColor), Color.green(mMaskColor), Color.blue(mMaskColor));int argbDouble = Color.argb(absVerticalOffset * 2, Color.red(mMaskColor), Color.green(mMaskColor), Color.blue(mMaskColor));//appBarLayout上滑一半距离后小图标应该由渐变到全透明int title_small_offset = (200 - absVerticalOffset) < 0 ? 0 : 200 - absVerticalOffset;int title_small_argb = Color.argb(title_small_offset * 2, Color.red(mMaskColor),Color.green(mMaskColor), Color.blue(mMaskColor));//appBarLayout上滑不到一半距离if (absVerticalOffset <= totalScrollRange / 2) {include_toolbar_search.setVisibility(View.VISIBLE);include_toolbar_small.setVisibility(View.GONE);//为了和下面的大图标渐变区分,乘以2倍渐变v_toolbar_search_mask.setBackgroundColor(argbDouble);} else {include_toolbar_search.setVisibility(View.GONE);include_toolbar_small.setVisibility(View.VISIBLE);//appBarLayout上滑一半距离后小图标应该由渐变到全透明v_toolbar_small_mask.setBackgroundColor(title_small_argb);}//上滑时遮罩由全透明到半透明v_title_big_mask.setBackgroundColor(argb);}

地址:https://github.com/leifu1107/AlipayHome

APK文件

扫描二维码 或者 点击二维码 下载

高仿支付宝首页头部动画相关推荐

  1. Flutter高仿支付宝打钩动画

    文章目录 简介 效果 预备知识 自定义控件基本知识 动画基本知识 动画分析 PathMetric类作用 关键代码 简介 Flutter高仿支付宝打钩动画,利用动画和路径Path实现简易效果.熟悉And ...

  2. Android开发笔记(一百四十四)高仿支付宝的头部伸缩动画

    Android5.0推出的MaterialDesign库包含了处理头部工具栏的多个控件,不但允许自定义顶部导航栏,而且导航栏高度是可以伸缩的.如此一来,一方面导航栏能够放得下更多控件,另一方面在用户想 ...

  3. Android仿支付宝UI功能开发,UI实例--仿支付宝首页头部伸缩效果

    1. 效果图 下面是我们将要实现的效果图: 效果图 2.具体实现 我们可以利用design和v7包中的控件来实现(涉及到的控件有CoordinatorLayout.AppBarLayout.Toolb ...

  4. 高仿支付宝增加减少item功能和动画效果

    闲来无事,看了下支付宝App做的应用item效果,很炫,效果如下: 自己实现的效果如下: gif可能有点卡,但是实现了支付宝效果, 说下思路:下面是实例图(凑合看吧,大概意思是) 开始是打算用Scro ...

  5. 仿B站首页头部动画的实现

    B站的前端样式一直是我学习和模仿的对象,特别是它的首页头部动画,可以随着鼠标的移动进行场景的变化,很酷,所以我对它进行了大体上的模仿 废话不多说,先看效果 仿B站首页动画演示 视频打不开点击这里 完整 ...

  6. android10.0 bootanimation系统高仿Iphone苹果开机动画

    android10.0系统高仿Iphone苹果开机动画 直接先上效果图 bootanimation.zip压缩前: part0(文件夹存放要播放的图片格式最好是png24) part1(文件夹) de ...

  7. 高仿支付宝手势解锁(增强版)

    CoreLock 高仿支付宝解锁! 注:本框架是高仿支付宝,并集成了所有功能,并非一个简单的解锁界面展示.个人制作用时1周多,打造解锁终结者框架. 框架特性: .ios版本兼容ios 7.0及以上. ...

  8. Android 仿支付宝蚂蚁森林动画效果

    Android 动画可以归纳为以下几种: 视图动画(View 动画) 帧动画(Frame 动画.Drawable 动画) 属性动画 触摸反馈动画(Ripple Effect) 揭露动画(Reveal ...

  9. 仿支付宝首页应用管理(拖拽排序,添加删除)

    MenuManage-Imitate-Alipay 项目地址:ywanhzy/MenuManage-Imitate-Alipay  简介:仿支付宝首页应用管理(拖拽排序,添加删除) 更多:作者   提 ...

最新文章

  1. SQL优化的一些知识
  2. 第13章 Kotlin 集成 SpringBoot 服务端开发(1)
  3. 基于单片机的简单的任务调度器
  4. 2022 年第一场云原生技术实践营开启报名
  5. Servlet 组件相关的接口、抽象类关系图
  6. WebSocket之仿QQWeb即时聊天系统(上)
  7. idea自动构建web项目_构建Web应用程序以自动执行系统管理员任务
  8. azure批量创建虚拟机_如何将数据库迁移到Azure虚拟机
  9. Java System.arraycopy()方法示例
  10. Android kotlin中配置protobuf
  11. 1 操作系统安全加固
  12. python金融网课_Python金融数据分析
  13. 关于64位CentOS上ptrace报linux/user.h no such file 错误的解决方法
  14. 轻量级 js取色器 JSColor
  15. 活动策划方案具体流程
  16. 徐耀赐教授系列讲座——车道宽度理论在城市道路路网中的应用(编译文本)...
  17. 以下哪些属于计算机应用领域,以下哪些计算机的应用领域?()
  18. 保姆级教程 树莓派4b ubuntu20.04 的 linux 之旅
  19. 撸一撸腾讯的微信支付(C#)
  20. 逆向分析:还原 App protobuf 协议加密

热门文章

  1. Facebook发的不是币, 而是世界变革的信号弹
  2. 上古卷轴5附魔挣钱方法
  3. 性别歧视在日本:“我是女生,所以社会不让我学医”
  4. 新型勒索软件WannaRen风险通告
  5. D3D9学习笔记(三) Device
  6. 火狐实用插件 Video DownloadHelper
  7. 勾结网监贪官打压竞争对手 瑞星副总被批捕
  8. 宋维刚老师词霸天下38000词汇思维导图使用指南
  9. 做一个网站需要多少钱?有哪些费用组成?
  10. Quartus ii 软件仿真基本流程(使用VHDL)