美文网首页搞个安卓
behavior使用记录一

behavior使用记录一

作者: space0o0 | 来源:发表于2016-12-01 23:14 被阅读87次

记录初次使用behavior中遇到的问题。
(文中加粗的都是个人认为容易犯错的地方,关于behavior和coordinatorlayout的介绍就不放了)


先看下自定义behavior类:

public class xxxbehavior extends CoordinatorLayout.Behavior {
/** 
* Default constructor for instantiating Behaviors. 
*/
public xxxbehavior() {}

/**
* Default constructor for inflating Behaviors from layout. The Behavior will have 
* the opportunity to parse specially defined layout parameters. These parameters will 
* appear on the child view tag. 
* 
* @param context 
* @param attrs */
public xxxbehavior(Context context, AttributeSet attrs) {  
  super(context, attires);
  }
}

使用方法:

app:layout_behavior="com.example.xxx.behavior.xxxbehavior"

在xml中使用该方法添加behavior,在构造方法的注释中就可看出,这里总是调用xxxbehavior(Context context, AttributeSet attires)构造函数,同时还可以声明自定义参数方便自己使用

在此处调用的是

xxxbehavior behavior=new xxxbehavior();

coordinatorlayout.LayoutParams params=(coordinatorlayout.LayoutParams)yourview.getLayoutParams();

params.setBehavior(behavior);

在代码中绑定behavior,在此处就是调用默认的空构造器了

要使用behavior,其xml的根布局必须是coordinatorlayout。而该布局是在Android5.0以后引入的,所以在此前的系统中是没有效果的。

平时可能会碰到比较复杂的布局,会使用include标签。如果想要使用behavior,则需要注意:Behavior只有是CoordinatorLayout的直接子View才有意义


在了解behavior的调用方法后,开始来使用behavior。
behavior的使用范围仅限于实现了NestedScrollingChild接口,如果有些控件不支持,可以自定义该控件同时实现该接口。

首先使用系统系统自带的效果

behavior_demo1.gif

代码:

<android.support.design.widget.AppBarLayout
    android:id="@+id/appbar"
    android:layout_width="match_parent"
    android:fitsSystemWindows="true"
    android:layout_height="256dp"
    android:theme="@style/theme.AppBarOverlay">
    <android.support.design.widget.CollapsingToolbarLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:contentScrim="?attr/colorPrimary"
        app:expandedTitleMarginEnd="64dp"
        app:expandedTitleMarginStart="56dp"
        app:layout_scrollFlags="scroll|exitUntilCollapsed">
        <ImageView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:fitsSystemWindows="true"
            android:scaleType="centerCrop"
            android:src="@drawable/img_head2"
            app:layout_collapseMode="parallax" />
        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            app:navigationIcon="@drawable/ic_account_circle_deep_purple_400
_24dp"
            app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
            app:title="xxxx"
            app:titleTextColor="@color/white"
            app:layout_collapseMode="pin"/>
    </android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>

在recyclerview标签中添加:

app:layout_behavior="@string/appbar_scrolling_view_behavior"

如果不加CollapsingToolbarLayout,效果就是toolbar会收缩。

使用该效果主要是在AppBarLayout中添加CollapsingToolbarLayout布局,注意添加android:fitsSystemWindows="true",否则会和上下产生间距。

CollapsingToolbarLayout 提供以下属性和方法是用:

  1. Collapsing title:ToolBar的标题,当CollapsingToolbarLayout全屏没有折叠时,title显示的是大字体,在折叠的过程中,title不断变小到一定大小的效果。你可以调用setTitle(CharSequence)方法设置title。
  2. Content scrim:ToolBar被折叠到顶部固定时候的背景,你可以调用setContentScrim(Drawable)方法改变背景或者 在属性中使用 app:contentScrim=”?attr/colorPrimary”来改变背景。
  3. Status bar scrim:状态栏的背景,调用方法setStatusBarScrim(Drawable)。还没研究明白,不过这个只能在Android5.0以上系统有效果。
  4. Parallax scrolling children:CollapsingToolbarLayout滑动时,子视图的视觉差,可以通过属性app:layout_collapseParallaxMultiplier=”0.6”改变。值de的范围[0.0,1.0],值越大视察越大。
  5. CollapseMode :子视图的折叠模式,在子视图设置,有两种“pin”:固定模式,在折叠的时候最后固定在顶端;“parallax”:视差模式,在折叠的时候会有个视差折叠的效果。我们可以在布局中使用属性app:layout_collapseMode=”parallax”来改变。

我们还可以在此基础上添加悬浮控件(此处使用FloatingActionButton)

<android.support.design.widget.FloatingActionButton
    android:id="@+id/fab"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    app:layout_anchor="@id/appbar"
    app:layout_anchorGravity="bottom|right|end"
    android:layout_marginRight="16dp"
    app:srcCompat="@android:drawable/ic_dialog_email" />

使用app:layout_anchor="@id/appbar"来进行关联
app:layout_anchorGravity="bottom|right|end"的参数来决定控件的位置,同时有能使用margin等参数。

下一章记录使用自定义behavior

相关文章

  • behavior使用记录一

    记录初次使用behavior中遇到的问题。(文中加粗的都是个人认为容易犯错的地方,关于behavior和coord...

  • behavior使用记录二

    自定义behavior的使用 本次实现的效果:点击红色图片,绿色的跟随移动 xml代码: behavior的代码:...

  • 深入理解CoordinatorLayout.Behavior

    要研究的几个问题 一、Behavior是什么?为什么要用Behavior?二、怎么使用Behavior?三、从源码...

  • Behavior使用

    一、CoordinatorLayout CoordinatorLayout的主要功能是协调内部各个子控件直接的状态...

  • Android开源库

    UI 之自定义 Behavior 实现 AppBarLayout 越界弹性效果 使用自定义 Behavior 实现...

  • MVP

    UI 之自定义 Behavior 实现 AppBarLayout 越界弹性效果 使用自定义 Behavior 实现...

  • Behavior的使用

    Behavior Behavior将某些特定的功能从某个特定的控件中解耦出来,重用性高 利用behavior实现以...

  • CoordinatorLayout使用(一):Behavior简

    CoordinatorLayout介绍 CoordinatorLayout出来很久了,时间关系,一直没有怎么弄过看...

  • CoordinatorLayout 与 Behavior

    CoordinatorLayout 与 Behavior CoordinatorLayout 的使用 先看官网对 ...

  • Material Design之CoordinatorLayou

    引言 CoordinatorLayout的使用核心就是Beahvior,使用Behavior来实现直接子控件之间的...

网友评论

    本文标题:behavior使用记录一

    本文链接:https://www.haomeiwen.com/subject/xsotmttx.html