Android开发-DesignDemo-AndroidStudio(十一)FloatingActionButton(3)

FloatingActionButton跟随list滚动隐藏消失。


需要重写MyBehavior.java,将其继承FloatingActionButton.Behavior。


如果看了之前Demo的同学,请在layout里去掉textView引用com包实现跟随list滚动隐藏消失的效果的代码,否则,会报错。


如果同时想实现,FloatingActionButton和textView 跟随list滚动隐藏消失,可以写2个类,分别继承相对的Behavior


项目压缩包下载地址:http://download.csdn.net/detail/iwanghang/9674829



MyBehavior.java:

package com.iwanghang.coordinatordemo;

import android.content.Context;
import android.support.design.widget.CoordinatorLayout;
import android.support.design.widget.FloatingActionButton;
import android.support.v4.view.ViewCompat;
import android.util.AttributeSet;
import android.view.View;

/**
 * 重写Behavior的方法
 */
//public class MyBehavior extends CoordinatorLayout.Behavior {
public class MyBehavior extends FloatingActionButton.Behavior {
    /**
     * 实现下面3行方法 则可以通过
     * app:layout_behavior="com.iwanghang.coordinatordemo.MyBehavior"
     * 来实现 MyBehavior
     */
    public MyBehavior(Context context, AttributeSet attrs) {
        //super(context,attrs);
        super();
    }


    public MyBehavior() {
    }

    // Behavior 开始滚动
    @Override
    public boolean onStartNestedScroll(CoordinatorLayout coordinatorLayout, FloatingActionButton child, View directTargetChild, View target, int nestedScrollAxes) {
        return true; // 为true,表示我们关心这个事件
    }

    // Behavior 正在滚动
    @Override
    public void onNestedPreScroll(CoordinatorLayout coordinatorLayout, FloatingActionButton child, View target, int dx, int dy, int[] consumed) {
        super.onNestedPreScroll(coordinatorLayout, child, target, dx, dy, consumed);
        if (dy < 0){ // 向上滚动
            //ViewCompat.animate(child).scaleX(1).scaleY(1).start(); // 显示控件
            child.show();
        }else { // 向下滚动
            //ViewCompat.animate(child).scaleX(0).scaleY(0).start(); // 隐藏控件
            child.hide();
        }
    }
}

activity_main.xml:

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.iwanghang.coordinatordemo.MainActivity">

    <!--layout_scrollFlags enterAlwaysCollapsed 第一条上拉至第一条数据才出现ActionBar-->
    <!--layout_scrollFlags enterAlways 只要上拉就出现ActionBar-->
    <!--contentScrim 遮蔽颜色-->
    <!--layout_collapseMode parallax 视差-->
    <android.support.design.widget.AppBarLayout
        android:id="@+id/appbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:theme="@style/Widget.AppCompat.ActionBar">
        <android.support.design.widget.CollapsingToolbarLayout
            app:layout_scrollFlags="scroll|exitUntilCollapsed"
            app:contentScrim="@color/colorAccent"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
            <ImageView
                app:layout_collapseMode="parallax"
                android:layout_width="match_parent"
                android:layout_height="200dp"
                android:src="@mipmap/ic_launcher"/>
            <android.support.v7.widget.Toolbar
                android:id="@+id/toolbar"
                android:layout_width="match_parent"
                android:layout_height="?actionBarSize" />
        </android.support.design.widget.CollapsingToolbarLayout>
        <!--<TextView-->
            <!--android:text="悬停条目"-->
            <!--android:textColor="#ffffff"-->
            <!--android:layout_width="match_parent"-->
            <!--android:layout_height="wrap_content" />-->
    </android.support.design.widget.AppBarLayout>

    <android.support.v7.widget.RecyclerView
        android:id="@+id/recycler_1"
        app:layout_behavior="@string/appbar_scrolling_view_behavior"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layoutManager="LinearLayoutManager" />

    <!--<TextView-->
        <!--android:clickable="true"-->
        <!--android:id="@+id/textView_1"-->
        <!--android:layout_width="wrap_content"-->
        <!--android:layout_height="wrap_content"-->
        <!--android:layout_marginTop="100dp"-->
        <!--android:layout_marginLeft="100dp"-->
        <!--android:textSize="20sp"-->
        <!--android:background="#f00"-->
        <!--android:text="textView_1\nlist上下滚动显示隐藏\n通过setBehavior实现" />-->

    <TextView
        android:clickable="true"
        android:id="@+id/textView_2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:textSize="20sp"
        android:background="#f00"
        android:text="textView_2\n向右滑动" />

    <!--<TextView-->
        <!--app:layout_behavior="com.iwanghang.coordinatordemo.MyBehavior"-->
        <!--android:clickable="true"-->
        <!--android:id="@+id/textView_3"-->
        <!--android:layout_width="wrap_content"-->
        <!--android:layout_height="wrap_content"-->
        <!--android:layout_gravity="center|bottom"-->
        <!--android:textSize="20sp"-->
        <!--android:background="#f00"-->
        <!--android:text="textView_3\nlist上下滚动显示隐藏\n指定layout_behavior实现" />-->

    <!--右下角 FloatingActionButton-->
    <android.support.design.widget.FloatingActionButton
        app:layout_behavior="com.iwanghang.coordinatordemo.MyBehavior"
        android:id="@+id/fab"
        android:layout_gravity="end|bottom"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@mipmap/ic_launcher" />
    <!--左下角 ImageButton-->
    <ImageButton
        android:id="@+id/imageBtn"
        android:layout_gravity="start|bottom"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@mipmap/ic_launcher" />

</android.support.design.widget.CoordinatorLayout>

项目压缩包下载地址:http://download.csdn.net/detail/iwanghang/9674829

你可能感兴趣的:(Android开发,design,behavior,androidstudio)