Android view滑动悬浮固定效果实现-踩坑记

android新特性:使用CollapsingToolbarLayout实现折叠效果及问题解决[有比较严重的卡顿感]

https://www.jianshu.com/p/485223349703


CollapsingToolbarLayout有滑动折叠有严重的卡顿,不顺畅,实现一波之后,非常不推荐。 


推荐以下方式,需要悬浮的View整2个,自定义ScrollView中监听滑动 隐藏显示。

Android view滑动悬浮固定效果实现

https://blog.csdn.net/ganshenml/article/details/78341223

https://blog.csdn.net/ganshenml/article/details/53112722,监听ScrollView中的onScrollChanged()


布局

自定义ScrollView

<?xml version="1.0" encoding="utf-8"?>

<layout xmlns:tools="http://schemas.android.com/tools"

    xmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:app="http://schemas.android.com/apk/res-auto" >


    <data>


    </data>


    <RelativeLayout

        android:layout_width="match_parent"

        android:layout_height="match_parent"

        android:background="@color/bg_gray_f8"

        android:orientation="vertical">

        <com.szltech.OrientSecurities.view.CustomTitleBar

            android:id="@+id/titleBar"

            android:layout_width="match_parent"

            android:layout_height="wrap_content"

            app:text_title="我的资产" />


        <com.szltech.OrientSecurities.thirdpart.MyCustomScrollView

            android:id="@+id/my_scroll_view"

            android:layout_below="@id/titleBar"

            android:layout_width="match_parent"

            android:layout_height="wrap_content">

            <LinearLayout

                android:orientation="vertical"

                android:layout_width="match_parent"

                android:layout_height="wrap_content">

                <FrameLayout

                    android:layout_width="match_parent"

                    android:layout_height="wrap_content">


                    <include

                        android:id="@+id/layout_piechart"

                        layout="@layout/layout_piechart"

                        android:layout_width="match_parent"

                        android:layout_height="wrap_content" />

                </FrameLayout>


                <FrameLayout

                    android:id="@+id/tab_layout"

                    android:layout_width="match_parent"

                    android:layout_height="wrap_content">

                    <include

                        layout="@layout/layout_myassert_tab"

                        android:layout_width="match_parent"

                        android:layout_height="match_parent"/>

                </FrameLayout>


                <View

                    android:background="@color/white"

                    android:layout_width="match_parent"

                    android:layout_height="10dp"/>


                <RelativeLayout

                    android:layout_width="match_parent"

                    android:layout_height="wrap_content"

                    android:layout_marginLeft="@dimen/listview_margin"

                    android:layout_marginRight="@dimen/listview_margin"

                    android:background="@drawable/bg_assest_list_top"

                    android:gravity="center_vertical"

                    android:paddingLeft="@dimen/margin_10"

                    android:paddingRight="@dimen/margin_10">


                    <TextView

                        android:id="@+id/tv_tab_total_str"

                        android:layout_width="wrap_content"

                        android:layout_height="wrap_content"

                        android:text="直销总资产"

                        android:textColor="@color/white"

                        android:textSize="@dimen/size16" />


                    <TextView

                        android:id="@+id/tv_tab_total_value"

                        android:layout_width="wrap_content"

                        android:layout_height="wrap_content"

                        android:layout_alignParentRight="true"

                        tools:text="888,888.88"

                        android:text="--"

                        android:textColor="@color/white"

                        android:textSize="@dimen/size16" />

                </RelativeLayout>



                <ListView

                    android:id="@+id/lv_asset_detail"

                    android:layout_width="match_parent"

                    android:layout_height="wrap_content"

                    android:layout_marginLeft="@dimen/listview_margin"

                    android:layout_marginRight="@dimen/listview_margin"

                    android:layout_marginTop="-10dp"

                    android:divider="@null"

                    android:listSelector="@color/transparent"

                    android:scrollbars="none" />



            </LinearLayout>

        </com.szltech.OrientSecurities.thirdpart.MyCustomScrollView>


        <FrameLayout

            android:visibility="gone"

            android:id="@+id/tab_layout_float"

            android:layout_below="@id/titleBar"

            android:layout_width="match_parent"

            android:layout_height="wrap_content">

            <include

                layout="@layout/layout_myassert_tab"

                android:layout_width="match_parent"

                android:layout_height="match_parent"/>

        </FrameLayout>


    </RelativeLayout>

</layout>



CoordinatorLayout方式

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:tools="http://schemas.android.com/tools">


    <data>


    </data>


    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@color/bg_gray_f8"
        android:orientation="vertical">


        <com.szltech.OrientSecurities.view.CustomTitleBar
            android:id="@+id/titleBar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:text_title="我的资产" />


        <android.support.design.widget.CoordinatorLayout
            android:id="@+id/coordinator_Layout"
            android:layout_width="match_parent"
            android:layout_height="match_parent">


            <android.support.design.widget.AppBarLayout
                android:id="@+id/app_bar_layout"
                app:layout_behavior="com.szltech.OrientSecurities.thirdpart.FlingBehavior"
                android:layout_width="match_parent"
                android:layout_height="wrap_content">




                <android.support.design.widget.CollapsingToolbarLayout
                    android:id="@+id/collapsingToolbarLayout"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    app:collapsedTitleTextAppearance="@style/ToolBarTitleText"
                    app:contentScrim="@color/bg_red"
                    app:expandedTitleMarginEnd="10dp"
                    app:expandedTitleMarginStart="10dp"
                    app:expandedTitleTextAppearance="@style/transparentText"
                    app:layout_scrollFlags="scroll|exitUntilCollapsed">
                    <!--设置layout_scrollFlags保证CollapsingToolbarLayout能滚动-->
                    <!--app:layout_scrollFlags="scroll|exitUntilCollapsed"-->




                    <FrameLayout
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content">


                        <include
                            android:id="@+id/layout_piechart"
                            layout="@layout/layout_piechart"
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content" />
                    </FrameLayout>


                </android.support.design.widget.CollapsingToolbarLayout>




                <FrameLayout
                    android:id="@+id/tab_layout"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content">
                    <include
                        android:id="@+id/tab_layout_include"
                        layout="@layout/layout_myassert_tab"
                        android:layout_width="match_parent"
                        android:layout_height="match_parent"/>
                </FrameLayout>


            </android.support.design.widget.AppBarLayout>




            <android.support.v4.widget.NestedScrollView
                android:id="@+id/nsv"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:fillViewport="true"
                android:scrollbars="none"
                app:layout_behavior="@string/appbar_scrolling_view_behavior">




                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:orientation="vertical"
                    app:layout_behavior="@string/appbar_scrolling_view_behavior">


                    <RelativeLayout
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_marginLeft="@dimen/listview_margin"
                        android:layout_marginRight="@dimen/listview_margin"
                        android:background="@drawable/bg_assest_list_top"
                        android:gravity="center_vertical"
                        android:paddingLeft="@dimen/margin_10"
                        android:paddingRight="@dimen/margin_10">


                        <TextView
                            android:id="@+id/tv_tab_total_str"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="直销总资产"
                            android:textColor="@color/white"
                            android:textSize="@dimen/size16" />


                        <TextView
                            android:id="@+id/tv_tab_total_value"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_alignParentRight="true"
                            tools:text="888,888.88元"
                            android:text="--"
                            android:textColor="@color/white"
                            android:textSize="@dimen/size16" />
                    </RelativeLayout>


                    <ListView
                        android:id="@+id/lv_asset_detail"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_marginLeft="@dimen/listview_margin"
                        android:layout_marginRight="@dimen/listview_margin"
                        android:layout_marginTop="-10dp"
                        android:divider="@null"
                        android:listSelector="@color/transparent"
                        android:scrollbars="none" />


                </LinearLayout>
            </android.support.v4.widget.NestedScrollView>




        </android.support.design.widget.CoordinatorLayout>
    </LinearLayout>
</layout>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值