Skip to content

自定义CoordinatorLayout,头部伸缩layout

Notifications You must be signed in to change notification settings

duanxin1990/FlexDemo

 
 

Repository files navigation

FlexDemo

由CustomCoordinatorLayout控制两个子view(CustomCollaspingToolbarLayout + other)的touchEvent,由CustomCollaspingToolbarLayout控制它的子view随顶部offset变化而变化。

Demo

#引用 compile 'com.gaiso.flex_view:flex-view:1.0.0' #用法 ###CustomCoordinatorLayout

    coordinatorLayout.addOnOffsetChangedListener(this);//顶部offset变化回调 CustomCoordinatorLayout.OnOffsetChangedListener
    //coordinatorLayout.setHorizontalMoveChildView(CustomCoordinatorLayout.CONTENT_VIEW_CAN_MOVE_HORIZONTALLY); 当子view存在viewpager
    //需要横向滑动时设置。HEADER_VIEW_CAN_MOVE_HORIZONTALLY,CONTENT_VIEW_CAN_MOVE_HORIZONTALLY,默认NONE_CAN_MOVE_HORIZONTALLY
    coordinatorLayout.setScrollHandler(new IScrollHandler() {//获取第二个子view的状态及对它的操作
        @Override
        public boolean isTop() {
            return linearLayoutManager.findFirstCompletelyVisibleItemPosition() == 0;
        }

        @Override
        public boolean isBottom() {
            return false;
        }

        @Override
        public void scrollBy(int distance) {
            recyclerView.scrollBy(0, distance);
        }

        @Override
        public void translate(int left, int top, int right, int bottom) {
            recyclerView.measure(View.MeasureSpec.makeMeasureSpec(right, View.MeasureSpec.EXACTLY), View.MeasureSpec
                    .makeMeasureSpec(bottom - top, View.MeasureSpec.EXACTLY));
            recyclerView.layout(left, top, right, bottom);
        }
    });

###CustomCollapsingToolbarLayout

    <com.gaiso.flex_view.CustomCollapsingToolbarLayout
        android:id="@+id/layout_collapse"
        android:layout_width="match_parent"
        android:layout_height="200dp"
        app:collapseHeight="49dp"
        app:layoutScrim="@color/colorPrimary">

        <ImageView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:scaleType="centerCrop"
            android:src="@mipmap/car"/>

        <com.flex.jie.flexdemo.widget.HorizontalFlexSearchView
            android:id="@+id/horizontal_search_view"
            android:layout_width="match_parent"
            android:layout_height="35dp"
            android:layout_alignParentBottom="true"
            android:layout_marginBottom="15dp"
            android:layout_marginLeft="15dp"
            android:layout_marginRight="15dp"
            app:background_color_after="@color/bg_orange"
            app:background_color_before="@color/white"
            app:collapseMode="parallax"
            app:corner_radiu="3dp"
            app:drawScrim="always"
            app:parallax_range="10dp"
            app:right_offset="30dp"
            app:search_icon_after="@mipmap/icon_search"
            app:search_icon_before="@mipmap/icon_gray_search"
            app:search_text="大家都在搜:汽车"
            app:text_color_after="@color/text_orange"
            app:text_color_before="@color/text_gray"
            app:text_size="15sp"/>

    </com.gaiso.flex_view.CustomCollapsingToolbarLayout>
app:collapseHeight 设置收缩状态的高度
app:layoutScrim 设置颜色

#####对子view的设置 app:collapseMode none(默认),pin(offset变化时该子view位置固定),parallax(与parallax_range一起设置) app:drawScrim="always" 设置scrim覆盖哪些子view(按照子view draw的顺序,一般看xml的顺序, 例如子view3设置了always,scrim将覆盖子view1和2) app:parallax_range="10dp" 随着收缩百分比变化的范围

About

自定义CoordinatorLayout,头部伸缩layout

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 100.0%