自定义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