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

相关文章

Java 中的 @SneakyThrows 注解使用方法(简化异常处理的利与弊)

《Java中的@SneakyThrows注解使用方法(简化异常处理的利与弊)》为了简化异常处理,Lombok提供了一个强大的注解@SneakyThrows,本文将详细介绍@SneakyThro... 目录1. @SneakyThrows 简介 1.1 什么是 Lombok?2. @SneakyThrows

在 Spring Boot 中实现异常处理最佳实践

《在SpringBoot中实现异常处理最佳实践》本文介绍如何在SpringBoot中实现异常处理,涵盖核心概念、实现方法、与先前查询的集成、性能分析、常见问题和最佳实践,感兴趣的朋友一起看看吧... 目录一、Spring Boot 异常处理的背景与核心概念1.1 为什么需要异常处理?1.2 Spring B

python处理带有时区的日期和时间数据

《python处理带有时区的日期和时间数据》这篇文章主要为大家详细介绍了如何在Python中使用pytz库处理时区信息,包括获取当前UTC时间,转换为特定时区等,有需要的小伙伴可以参考一下... 目录时区基本信息python datetime使用timezonepandas处理时区数据知识延展时区基本信息

利用Python调试串口的示例代码

《利用Python调试串口的示例代码》在嵌入式开发、物联网设备调试过程中,串口通信是最基础的调试手段本文将带你用Python+ttkbootstrap打造一款高颜值、多功能的串口调试助手,需要的可以了... 目录概述:为什么需要专业的串口调试工具项目架构设计1.1 技术栈选型1.2 关键类说明1.3 线程模

Python Transformers库(NLP处理库)案例代码讲解

《PythonTransformers库(NLP处理库)案例代码讲解》本文介绍transformers库的全面讲解,包含基础知识、高级用法、案例代码及学习路径,内容经过组织,适合不同阶段的学习者,对... 目录一、基础知识1. Transformers 库简介2. 安装与环境配置3. 快速上手示例二、核心模

一文详解Java异常处理你都了解哪些知识

《一文详解Java异常处理你都了解哪些知识》:本文主要介绍Java异常处理的相关资料,包括异常的分类、捕获和处理异常的语法、常见的异常类型以及自定义异常的实现,文中通过代码介绍的非常详细,需要的朋... 目录前言一、什么是异常二、异常的分类2.1 受检异常2.2 非受检异常三、异常处理的语法3.1 try-

Python使用getopt处理命令行参数示例解析(最佳实践)

《Python使用getopt处理命令行参数示例解析(最佳实践)》getopt模块是Python标准库中一个简单但强大的命令行参数处理工具,它特别适合那些需要快速实现基本命令行参数解析的场景,或者需要... 目录为什么需要处理命令行参数?getopt模块基础实际应用示例与其他参数处理方式的比较常见问http

Java Response返回值的最佳处理方案

《JavaResponse返回值的最佳处理方案》在开发Web应用程序时,我们经常需要通过HTTP请求从服务器获取响应数据,这些数据可以是JSON、XML、甚至是文件,本篇文章将详细解析Java中处理... 目录摘要概述核心问题:关键技术点:源码解析示例 1:使用HttpURLConnection获取Resp

Python如何精准判断某个进程是否在运行

《Python如何精准判断某个进程是否在运行》这篇文章主要为大家详细介绍了Python如何精准判断某个进程是否在运行,本文为大家整理了3种方法并进行了对比,有需要的小伙伴可以跟随小编一起学习一下... 目录一、为什么需要判断进程是否存在二、方法1:用psutil库(推荐)三、方法2:用os.system调用

Java的栈与队列实现代码解析

《Java的栈与队列实现代码解析》栈是常见的线性数据结构,栈的特点是以先进后出的形式,后进先出,先进后出,分为栈底和栈顶,栈应用于内存的分配,表达式求值,存储临时的数据和方法的调用等,本文给大家介绍J... 目录栈的概念(Stack)栈的实现代码队列(Queue)模拟实现队列(双链表实现)循环队列(循环数组