CoordinatorLayout+AppBarLayout+CollapsingToolbarLayout+ViewPager滑动效果,以及代码处理是否推动效果

本文主要是介绍CoordinatorLayout+AppBarLayout+CollapsingToolbarLayout+ViewPager滑动效果,以及代码处理是否推动效果,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

布局文件

<?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:id="@+id/activity_video_detail"android:layout_width="match_parent"android:layout_height="match_parent"tools:context="exle.li_yuweii.superapp.activitys.VideoDetailActivity"><android.support.design.widget.AppBarLayout
        android:fitsSystemWindows="true"android:id="@+id/video_detail_appbar"android:layout_width="match_parent"android:layout_height="wrap_content"android:background="#ffff"app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"><!--可以收放 ToolBar的布局--><!--设置标题需要调用CollapsingToolbarLayout的 setTitle--><!--使用ContentScrim 可以指定颜色 图片 当收起来的时候,切换成指定的内容--><!--scrimVisibleHeightTrigger当收起多少距离的时候显示contentScrim--><android.support.design.widget.CollapsingToolbarLayout
            android:fitsSystemWindows="true"android:id="@+id/video_detail_collapsing"android:layout_width="match_parent"android:layout_height="200dp"app:contentScrim="#FB7299"app:layout_scrollFlags="scroll|exitUntilCollapsed"><!--app:scrimVisibleHeightTrigger="50dp"--><FrameLayout
                android:id="@+id/video_detail_fragment"android:layout_width="match_parent"android:layout_height="wrap_content"><SurfaceView
                    android:id="@+id/video_detail_surface_view"android:layout_width="match_parent"android:layout_height="200dp"android:visibility="invisible" /><LinearLayout
                    android:id="@+id/video_detail_play_view"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_gravity="bottom"android:background="#9999"android:gravity="center_vertical"android:orientation="horizontal"android:visibility="invisible"><ImageView
                        android:id="@+id/video_controller_play"android:layout_width="wrap_content"android:layout_height="wrap_content"android:src="@android:drawable/ic_media_pause" /><SeekBar
                        android:id="@+id/video_controller_progress"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1" /><TextView
                        android:id="@+id/video_controller_time"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="00:00" /><ImageView
                        android:id="@+id/video_controller_orientation_switch"android:layout_width="20dp"android:layout_height="20dp"android:paddingLeft="3dp"android:src="@drawable/change" /></LinearLayout></FrameLayout><ImageView
                android:fitsSystemWindows="true"android:id="@+id/video_detail_cover"android:layout_width="match_parent"android:layout_height="wrap_content"android:adjustViewBounds="true"android:scaleType="fitXY" /><!--app:layout_collapseMode="parallax" />--><android.support.v7.widget.Toolbar
                android:id="@+id/video_detail_tool_bar"android:layout_width="match_parent"android:layout_height="?actionBarSize"app:layout_collapseMode="pin"><ImageView
                    android:id="@+id/video_detail_iamge1"android:src="@drawable/action_button_back_pressed_light"android:layout_width="wrap_content"android:layout_height="22dp" /><LinearLayout
                    android:orientation="horizontal"android:layout_width="match_parent"android:layout_height="match_parent"><TextView
                        android:id="@+id/video_detail_text1"android:text="SuperApp"android:gravity="center"android:layout_width="wrap_content"android:layout_height="match_parent" /><ImageView
                        android:id="@+id/video_detail_image"android:src="@drawable/ic_tv_play"android:adjustViewBounds="true"android:visibility="invisible"android:layout_width="wrap_content"android:layout_gravity="center"android:layout_height="22dp" /><TextView
                        android:id="@+id/video_detail_text"android:visibility="invisible"android:text="立即播放"android:layout_width="wrap_content"android:layout_height="wrap_content" /></LinearLayout></android.support.v7.widget.Toolbar></android.support.design.widget.CollapsingToolbarLayout><!--Tab 简介和评论--></android.support.design.widget.AppBarLayout><android.support.design.widget.FloatingActionButton
        android:id="@+id/video_detail_play_fab"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginRight="16dp"app:layout_anchor="@id/video_detail_appbar"app:layout_anchorGravity="right|bottom" /><!--layut_behavior 用于处理 当前控件滚动的时候,怎么处理其他控件--><!--TODO:检查在ViewPager中使用,能否滚动Toolbar--><LinearLayout
        android:id="@+id/video_detail_linear_layout"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"app:layout_behavior="@string/appbar_scrolling_view_behavior"><android.support.design.widget.TabLayout
            android:id="@+id/video_detail_tab_layout"android:layout_width="150dp"android:layout_height="wrap_content"app:tabSelectedTextColor="@color/topColor"app:layout_behavior="@string/appbar_scrolling_view_behavior"android:layout_gravity="bottom"app:tabTextColor="#000"/><android.support.v4.view.ViewPager
            android:id="@+id/video_detail_view_pager"android:layout_width="match_parent"android:layout_height="match_parent"android:overScrollMode="never" /></LinearLayout><!--<android.support.v4.widget.NestedScrollView--><!--android:layout_width="match_parent"--><!--android:layout_height="match_parent"--><!--app:layout_behavior="@string/appbar_scrolling_view_behavior">--><!--<LinearLayout--><!--android:layout_width="match_parent"--><!--android:layout_height="match_parent"--><!--android:orientation="vertical">--><!--</LinearLayout>--><!--</android.support.v4.widget.NestedScrollView>--></android.support.design.widget.CoordinatorLayout>
  app:layout_scrollFlags="scroll|exitUntilCollapsed"

这个设置推到上边toolbar在上边保留

  android:fitsSystemWindows="true"

这个设置沉浸效果设置顶部状态栏时

app:layout_anchor="@id/video_detail_appbar"

FloatingActionButton必须绑定到AppBar上才可以推上去消失

 app:layout_behavior="@string/appbar_scrolling_view_behavior"

AppBar下方的控件要设置这个属性才可以联动

代码里设置推动效果

//设置不可推动layoutParams = (AppBarLayout.LayoutParams) collapsing.getLayoutParams();int scrollFlags = layoutParams.getScrollFlags(); layoutParams.setScrollFlags(0);
//设置可以推动
layoutParams = (AppBarLayout.LayoutParams) collapsing.getLayoutParams();layoutParams.setScrollFlags(AppBarLayout.LayoutParams.SCROLL_FLAG_SCROLL| AppBarLayout.LayoutParams.SCROLL_FLAG_ENTER_ALWAYS);collapsing.setLayoutParams(layoutParams);//这句必须加上

这篇关于CoordinatorLayout+AppBarLayout+CollapsingToolbarLayout+ViewPager滑动效果,以及代码处理是否推动效果的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/538984

相关文章

C++使用栈实现括号匹配的代码详解

《C++使用栈实现括号匹配的代码详解》在编程中,括号匹配是一个常见问题,尤其是在处理数学表达式、编译器解析等任务时,栈是一种非常适合处理此类问题的数据结构,能够精确地管理括号的匹配问题,本文将通过C+... 目录引言问题描述代码讲解代码解析栈的状态表示测试总结引言在编程中,括号匹配是一个常见问题,尤其是在

Java实现检查多个时间段是否有重合

《Java实现检查多个时间段是否有重合》这篇文章主要为大家详细介绍了如何使用Java实现检查多个时间段是否有重合,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录流程概述步骤详解China编程步骤1:定义时间段类步骤2:添加时间段步骤3:检查时间段是否有重合步骤4:输出结果示例代码结语作

Java判断多个时间段是否重合的方法小结

《Java判断多个时间段是否重合的方法小结》这篇文章主要为大家详细介绍了Java中判断多个时间段是否重合的方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录判断多个时间段是否有间隔判断时间段集合是否与某时间段重合判断多个时间段是否有间隔实体类内容public class D

Java调用DeepSeek API的最佳实践及详细代码示例

《Java调用DeepSeekAPI的最佳实践及详细代码示例》:本文主要介绍如何使用Java调用DeepSeekAPI,包括获取API密钥、添加HTTP客户端依赖、创建HTTP请求、处理响应、... 目录1. 获取API密钥2. 添加HTTP客户端依赖3. 创建HTTP请求4. 处理响应5. 错误处理6.

使用 sql-research-assistant进行 SQL 数据库研究的实战指南(代码实现演示)

《使用sql-research-assistant进行SQL数据库研究的实战指南(代码实现演示)》本文介绍了sql-research-assistant工具,该工具基于LangChain框架,集... 目录技术背景介绍核心原理解析代码实现演示安装和配置项目集成LangSmith 配置(可选)启动服务应用场景

前端原生js实现拖拽排课效果实例

《前端原生js实现拖拽排课效果实例》:本文主要介绍如何实现一个简单的课程表拖拽功能,通过HTML、CSS和JavaScript的配合,我们实现了课程项的拖拽、放置和显示功能,文中通过实例代码介绍的... 目录1. 效果展示2. 效果分析2.1 关键点2.2 实现方法3. 代码实现3.1 html部分3.2

Python中顺序结构和循环结构示例代码

《Python中顺序结构和循环结构示例代码》:本文主要介绍Python中的条件语句和循环语句,条件语句用于根据条件执行不同的代码块,循环语句用于重复执行一段代码,文章还详细说明了range函数的使... 目录一、条件语句(1)条件语句的定义(2)条件语句的语法(a)单分支 if(b)双分支 if-else(

MySQL数据库函数之JSON_EXTRACT示例代码

《MySQL数据库函数之JSON_EXTRACT示例代码》:本文主要介绍MySQL数据库函数之JSON_EXTRACT的相关资料,JSON_EXTRACT()函数用于从JSON文档中提取值,支持对... 目录前言基本语法路径表达式示例示例 1: 提取简单值示例 2: 提取嵌套值示例 3: 提取数组中的值注意

CSS3中使用flex和grid实现等高元素布局的示例代码

《CSS3中使用flex和grid实现等高元素布局的示例代码》:本文主要介绍了使用CSS3中的Flexbox和Grid布局实现等高元素布局的方法,通过简单的两列实现、每行放置3列以及全部代码的展示,展示了这两种布局方式的实现细节和效果,详细内容请阅读本文,希望能对你有所帮助... 过往的实现方法是使用浮动加

使用C++将处理后的信号保存为PNG和TIFF格式

《使用C++将处理后的信号保存为PNG和TIFF格式》在信号处理领域,我们常常需要将处理结果以图像的形式保存下来,方便后续分析和展示,C++提供了多种库来处理图像数据,本文将介绍如何使用stb_ima... 目录1. PNG格式保存使用stb_imagephp_write库1.1 安装和包含库1.2 代码解