自定义Behavior实现知乎首页效果

作者: 落魄的安卓开发 | 来源:发表于2017-11-27 17:04 被阅读191次

CoordinatorLayout的几个重要的参数:

Behavior字面意思就是行为举止,这里我们通过自定义Behavior来实现自己需要的效果。

  • 首先创建一个类 extends Coordinator.Behavior<T>{}
    释义:childView,这个是主动依赖的View即T
    dependencyView是被依赖的View,即:chidlView 会根据dependencyView的变化发生相应的变化。

  • 给自定义的Behavior定义构造方法,要调用父类的有两个参数的构造方法如下:

      public MyBehavior(Context context, AttributeSet attrs) {
          super(context, attrs);
      }
    

    否则会报错:Could not inflate Behavior subclass 包名.MyBehavior

  1. 重写最终要的两个方法:
    @Override
    public boolean layoutDependsOn(CoordinatorLayout parent, Button child, View dependency) {
        return dependency instanceof MyView;
    }
//释义:该方法是检测被依赖的View(即dependencyView)是否是我们这里定义的View,即:MyView。返回false表示child不依赖dependency,ture表示依赖

    @Override
    public boolean onDependentViewChanged(CoordinatorLayout parent, Button child, View dependency) {
        int top = dependency.getTop();
        //更新childView
        updateChild(child, top);
        return true;
    }
//释义:这里就是监听 被依赖的dependencyView的变化,然后对ChildView进行相应的变化即可。
  1. 然后在CoordinatorLayout布局中加入ChildView和DependencyView,并在ChildView中加入属性:

     app:layout_behavior="com.thc.myzhihu.materialdesigndemo.MyBehavior" 
    
  2. 简陋版知乎首页效果 /躲

相关文章

网友评论

    本文标题:自定义Behavior实现知乎首页效果

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