搞个安卓

behavior使用记录二

2016-12-02  本文已影响17人  space0o0

自定义behavior的使用

本次实现的效果:
点击红色图片,绿色的跟随移动

behavior_demo2.gif

xml代码:

behaviorDemo3.png

behavior的代码:

public BehaviorExample2Behavior(Context context, AttributeSet attrs) {
    super(context, attires);
}
@Override
public boolean layoutDependsOn(CoordinatorLayout parent, View child, View dependency) {
    /**
     * child为绑定的view,dependency为发生变化的view
     */
    return dependency instanceof TextView;
}
@Override
public boolean onDependentViewChanged(CoordinatorLayout parent, View child, View dependency) {
    /**
     * 当dependency位置发生改变时,计算两个控件水平的距离
     * 再设置child的位移
     */
    int offSet = (int) (dependency.getX() - child.getX());
    ViewCompat.offsetLeftAndRight(child, offSet);
    return super.onDependentViewChanged(parent, child, dependency);}

绑定是在xml中进行的,所以需要BehaviorExample2Behavior(Context context, AttributeSet attrs)构造函数。

layoutDependsOn方法:用于关联手动发生变化的控件(红色块位置手动改变)
这里需要搞清楚的就是child和dependency分别对应的控件。
child:绑定的控件,图片中绿色的textview
dependency:发生变化的控件,图中红色的textview

onDependentViewChanged方法:当dependency发生改变的时候,会调用该方法。相应操作说明已经写在了注释中。

再看activity中的代码:

behaviorDemo4.png

非常简单的逻辑,点击dependency,使该控件向右移动。


实现了NestedScrollingChild的控件

上一篇 下一篇

猜你喜欢

热点阅读