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

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. 简陋版知乎首页效果 /躲

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容