手势滑动 上滑出现隐藏布局 slidinguppanel

上滑滑动

一.在app的build添加依赖

  implementation 'com.sothree.slidinguppanel:library:3.4.0'//滑动框架

二。布局底部添加布局

@mipmap/ic_hd_x

,!--遮布-->
<View
        android:id="@+id/hat_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@color/color_80000000"
        android:visibility="gone" />  

 <com.sothree.slidinguppanel.SlidingUpPanelLayout
        xmlns:sothree="http://schemas.android.com/apk/res-auto"
        android:id="@+id/sliding_layout"
        android:layout_width="match_parent"
        android:layout_height="@dimen/dp_52"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        app:behavior_peekHeight="0dp"
        android:gravity="bottom"
        sothree:umanoDragView="@+id/dragView"
        sothree:umanoOverlay="false"
        sothree:umanoPanelHeight="@dimen/dp_45"
        sothree:umanoParallaxOffset="@dimen/dp_45"
        sothree:umanoScrollableView="@+id/rl_list"
        sothree:umanoShadowHeight="0dp"
        sothree:umanoClipPanel="true">

        <View
            android:layout_width="match_parent"
            android:layout_height="1dp"
            android:background="#00000000" />
        <!-- 滑动布局 -->
        <RelativeLayout
            android:id="@+id/dragView"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:clickable="true"
            android:focusable="false">

            <RelativeLayout
                android:id="@+id/pull_layout"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="#FFFFFF">
                <!--iv_hd是一条横线 需要则自己添加-->
                <ImageView
                    android:id="@+id/iv_hd"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_centerHorizontal="true"
                    android:layout_marginTop="@dimen/dp_05"
                    android:src="@mipmap/iv_hd"/>
                
                <TextView
                    android:id="@+id/tv_sz"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_below="@+id/iv_hd"
                    android:layout_centerHorizontal="true"
                    android:layout_marginTop="@dimen/dp_10"
                    android:layout_marginBottom="@dimen/dp_10"
                    android:drawableLeft="@mipmap/ic_hd_x"
                    android:drawablePadding="@dimen/dp_10"
                    android:text="滑动展开设置"
                    android:textColor="#13BA58"
                    android:textSize="@dimen/sp_14" />
            </RelativeLayout>

            <RelativeLayout
                android:id="@+id/rl_list"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_below="@+id/pull_layout"
                android:background="@color/white">
                <!--自己随意填充布局-->
               
        </RelativeLayout>
    </com.sothree.slidinguppanel.SlidingUpPanelLayout>

三。代码设置

 private SlidingUpPanelLayout mLayout;
    private View hatView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_equipment_details);
        hatView = findViewById(R.id.hat_view);
        Paneview();//上滑滑动画板

    }

    /**
     * 上滑滑动画板
     */
    private void Paneview() {
        mLayout = findViewById(R.id.sliding_layout);
        mLayout.setCoveredFadeColor(Color.parseColor("#00000000"));
        mLayout.addPanelSlideListener(new SlidingUpPanelLayout.PanelSlideListener() {
            @Override
            public void onPanelSlide(View panel, float slideOffset) {
                Log.i(TAG, "onPanelSlide, offset " + slideOffset);
            }

            @Override
            public void onPanelStateChanged(View panel, SlidingUpPanelLayout.PanelState previousState, SlidingUpPanelLayout.PanelState newState) {
                float pxValue = getResources().getDimension(R.dimen.dp_350);//默认dp值; 显示的时候高度动态设置大
                hatView.setVisibility(View.VISIBLE);//显示
                RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) mLayout.getLayoutParams();
                if (mLayout.getPanelState().toString().equals(SlidingUpPanelLayout.PanelState.COLLAPSED.toString())) {
                    hatView.setVisibility(View.GONE);//layout_height隐藏
                    pxValue = getResources().getDimension(R.dimen.dp_52);//获取对应资源文件下的dp值 隐藏状态高度设小 不然会引起滑动冲突
                } else if (mLayout.getPanelState().toString().equals(SlidingUpPanelLayout.PanelState.EXPANDED.toString())) {
                    hatView.setVisibility(View.VISIBLE);//显示
                    pxValue = getResources().getDimension(R.dimen.dp_350);//获取对应资源文件下的dp值  显示的时候高度动态设置大
                }
                //获取当前控件的布局对象
                params.height = (int) pxValue;//设置当前控件布局的高度
                mLayout.setLayoutParams(params);
            }
        });
    }

四.Values下的dimens.xml文件

<resources>
    <!-- Default screen margins, per the Android Design guidelines. -->
    <dimen name="dp_00">0dp</dimen>
    <dimen name="dp_01">1dp</dimen>
    <dimen name="dp_02">2dp</dimen>
    <dimen name="dp_03">3dp</dimen>
    <dimen name="dp_04">4dp</dimen>
    <dimen name="dp_05">5dp</dimen>
    <dimen name="dp_06">6dp</dimen>
    <dimen name="dp_07">7dp</dimen>
    <dimen name="dp_08">8dp</dimen>
    <dimen name="dp_09">09dp</dimen>
    <dimen name="dp_10">10dp</dimen>
    <dimen name="dp_11">11dp</dimen>
    <dimen name="dp_12">12dp</dimen>
    <dimen name="dp_13">13dp</dimen>
    <dimen name="dp_14">14dp</dimen>
    <dimen name="dp_15">15dp</dimen>
    <dimen name="dp_16">16dp</dimen>
    <dimen name="dp_17">17dp</dimen>
    <dimen name="dp_18">18dp</dimen>
    <dimen name="dp_19">19dp</dimen>
    <dimen name="dp_20">20dp</dimen>
    <dimen name="dp_21">21dp</dimen>
    <dimen name="dp_22">22dp</dimen>
    <dimen name="dp_23">23dp</dimen>
    <dimen name="dp_24">24dp</dimen>
    <dimen name="dp_25">25dp</dimen>
    <dimen name="dp_26">26dp</dimen>
    <dimen name="dp_27">27dp</dimen>
    <dimen name="dp_28">28dp</dimen>
    <dimen name="dp_30">30dp</dimen>
    <dimen name="dp_32">32dp</dimen>
    <dimen name="dp_33">33dp</dimen>
    <dimen name="dp_34">34dp</dimen>
    <dimen name="dp_35">35dp</dimen>
    <dimen name="dp_38">38dp</dimen>
    <dimen name="dp_40">40dp</dimen>
    <dimen name="dp_45">45dp</dimen>
    <dimen name="dp_46">46dp</dimen>
    <dimen name="dp_48">48dp</dimen>
    <dimen name="dp_50">50dp</dimen>
    <dimen name="dp_52">52dp</dimen>
    <dimen name="dp_57">57dp</dimen>
    <dimen name="dp_70">70dp</dimen>
    <dimen name="dp_75">75dp</dimen>
    <dimen name="dp_60">60dp</dimen>
    <dimen name="dp_80">80dp</dimen>
    <dimen name="dp_85">85dp</dimen>
    <dimen name="dp_90">90dp</dimen>
    <dimen name="dp_100">100dp</dimen>
    <dimen name="dp_105">105dp</dimen>
    <dimen name="dp_120">120dp</dimen>
    <dimen name="dp_125">125dp</dimen>
    <dimen name="dp_130">130dp</dimen>
    <dimen name="dp_135">135dp</dimen>
    <dimen name="dp_145">145dp</dimen>
    <dimen name="dp_150">150dp</dimen>
    <dimen name="dp_180">180dp</dimen>
    <dimen name="dp_250">250dp</dimen>
    <dimen name="dp_300">300dp</dimen>
    <dimen name="dp_350">350dp</dimen>
    <dimen name="dp_400">400dp</dimen>
    <dimen name="dp_430">430dp</dimen>
    <dimen name="dp_600">600dp</dimen>

</resources>

猜你喜欢

转载自blog.csdn.net/qq_28845393/article/details/109305422