android 模拟滑动app,反编译简书app和小红书app滑动效果sticky粘性头布局的实现CoordinatorLayout+behavior...

反编译简书app和小红书app滑动效果sticky粘性头布局的实现CoordinatorLayout+behavior

小红书效果:

698bf9a60e65

xiaohongshuu.gif

简书效果:

698bf9a60e65

jianshug.gif

demo效果图:

698bf9a60e65

FlingBehavior.gif

698bf9a60e65

miao.gif

部分代码:

xmlns:app="http://schemas.android.com/apk/res-auto"

xmlns:tools="http://schemas.android.com/tools"

android:id="@+id/activity_main"

android:layout_width="match_parent"

android:layout_height="match_parent">

android:id="@+id/main_content"

android:layout_width="match_parent"

android:layout_height="match_parent">

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:clipChildren="false"

android:fitsSystemWindows="true"

app:layout_behavior="com.gaom.flingbehaviordemo.FlingBehavior">

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:clipChildren="true"

android:fitsSystemWindows="true"

app:contentScrim="#ff4444"

app:expandedTitleMarginEnd="60dp"

app:expandedTitleMarginStart="48dp"

app:layout_scrollFlags="scroll"

app:statusBarScrim="#feaa33"

app:toolbarId="@+id/toolbar">

android:id="@+id/main.backdrop"

android:layout_width="match_parent"

android:layout_height="300dp"

android:scaleType="centerCrop"

android:src="@drawable/me"

app:layout_collapseMode="parallax"

app:layout_collapseParallaxMultiplier="0.7" />

android:id="@+id/toolbar"

android:layout_width="match_parent"

android:layout_height="100dp"

android:layout_gravity="center"

android:clipChildren="false"

app:contentInsetLeft="0dp"

app:contentInsetStart="0dp"

app:layout_collapseMode="parallax">

android:id="@+id/collapsing_toolbar"

android:layout_width="match_parent"

android:layout_height="100dp"

android:fitsSystemWindows="true"

android:orientation="vertical"

app:layout_collapseParallaxMultiplier="0.7"

app:layout_scrollFlags="scroll"

app:titleEnabled="false">

android:id="@+id/header_view"

android:layout_width="match_parent"

android:layout_height="100dp"

android:animateLayoutChanges="true"

android:background="#77333333"

android:fitsSystemWindows="true"

android:orientation="vertical"

app:layout_collapseParallaxMultiplier="0.7">

android:layout_width="match_parent"

android:layout_height="match_parent"

android:layout_gravity="center"

android:gravity="center"

android:text="我是视察的View,哦,背景也是,可以设置比例哦~"

android:textColor="#fff" />

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:visibility="invisible" />

android:layout_width="match_parent"

android:layout_height="50dp"

android:layout_gravity="bottom"

android:layout_marginBottom="30dp"

android:layout_marginTop="?attr/actionBarSize"

android:background="@android:color/transparent"

android:gravity="top|bottom|left|right|center_vertical|fill_vertical|center_horizontal|fill_horizontal|center|fill|start|end"

android:orientation="vertical"

app:layout_collapseMode="pin">

android:layout_width="match_parent"

android:layout_height="match_parent"

android:layout_gravity="center"

android:background="#77333333"

android:gravity="center"

android:text="我是固定不动被顶着走的view"

android:textColor="#000" />

android:layout_width="match_parent"

android:layout_height="50dp"

android:layout_gravity="top|bottom|center_vertical|fill_vertical|center|fill"

android:orientation="vertical">

android:id="@+id/tablayout_user"

android:layout_width="match_parent"

android:layout_height="50dp"

android:background="@color/colorPrimary"

app:layout_scrollFlags="enterAlways"

app:tabGravity="center"

app:tabIndicatorColor="@android:color/white"

app:tabIndicatorHeight="2dp"

app:tabMaxWidth="0dp"

app:tabMode="fixed"

app:tabPaddingEnd="20dp"

app:tabPaddingStart="20dp"

app:tabSelectedTextColor="@android:color/black"

app:tabTextColor="@android:color/white" />

android:layout_width="match_parent"

android:layout_height="1dp"

android:background="@color/colorPrimary" />

android:id="@+id/viewpager"

android:layout_width="match_parent"

android:layout_height="match_parent"

app:layout_behavior="@string/appbar_scrolling_view_behavior" />

android:layout_width="match_parent"

android:layout_height="50dp"

android:layout_gravity="top|bottom|center_vertical|fill_vertical|center|fill"

android:background="@android:color/transparent"

android:orientation="vertical">

package com.gaom.flingbehaviordemo;

import android.content.Context;

import android.support.design.widget.AppBarLayout;

import android.support.design.widget.AppBarLayout.Behavior;

import android.support.design.widget.CoordinatorLayout;

import android.support.v7.widget.RecyclerView;

import android.util.AttributeSet;

import android.view.View;

public class FlingBehavior extends Behavior {

private boolean a;

public FlingBehavior(Context context, AttributeSet attrs) {

super(context, attrs);

}

public boolean onNestedFling(CoordinatorLayout coordinatorLayout, AppBarLayout child, View target, float velocityX, float velocityY, boolean consumed) {

if ((velocityY > 0.0f && !this.a) || (velocityY < 0.0f && this.a)) {

velocityY *= -1.0f;

}

if ((target instanceof RecyclerView) && velocityY < 0.0f) {

RecyclerView recyclerView = (RecyclerView) target;

if (recyclerView.getChildAdapterPosition(recyclerView.getChildAt(0)) > 3) {

consumed = true;

} else {

consumed = false;

}

}

return super.onNestedFling(coordinatorLayout, child, target, velocityX, velocityY, consumed);

}

public void onNestedPreScroll(CoordinatorLayout coordinatorLayout, AppBarLayout child, View target, int dx, int dy, int[] consumed) {

super.onNestedPreScroll(coordinatorLayout, child, target, dx, dy, consumed);

this.a = dy > 0;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值