Android 上拉面板 AndroidSlidingUpPanel


上拉详情的时候接触到的,还是这平安的插件使用到的,折腾死我了,所以希望不要重蹈我的覆辙。这个开源控件相当强大,我了解的仅仅是一点点,希望知道多的留下博客网址供点击!

AndroidSlidingUpPanel 是一个上拉面板, 就是向上滑动的时候往上飞出一个显示面板控件, 该库效果在 Google Music, Google Maps and Rdio等 App 中用到。

用法:

  • 使用com.sothree.slidinguppanel.SlidingUpPanelLayout作为您的活动布局的根元素。

  • 布局必须设置为顶部或底部。请确保它有两个元素。

  • 第一个元素是你的主要布局。第二个元素是你的向上滑动面板布局。

  • 主要布局应当具有的宽度和高度设置为match_parent。

  • 滑动的布局的宽度应设置为match_parent;高度应设置为match_parent,WRAP_CONTENT或最大desireable高度。

  • 如果您想定义高度屏幕为percetange,可将其设置为match_parent,滑动视图定义为layout_weight属性。

  •  默认情况下,整个面板将作为拖动区域和将截获的点击和拖动事件。可以通过使用setDragView方法或umanoDragView属性限制牵引区到特定的图。

<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="match_parent"
    android:gravity="bottom"
    sothree:umanoPanelHeight="68dp"
    sothree:umanoShadowHeight="4dp">
    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center"
        android:text="Main Content"
        android:textSize="16sp" />
    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center|top"
        android:text="The Awesome Sliding Up Panel"
        android:textSize="16sp" />
</com.sothree.slidinguppanel.SlidingUpPanelLayout>
可以参考下。目前的项目需要信息保密,所以demo不能上传,见谅,大家可以百度下或者自己去研究下源码。

package com.pingan.pamaplib.module.base;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;


public class SlidingUpPanelTestActivity extends Activity implements View.OnClickListener {

    private static final String TAG = "SlidingUpPanel";

    private SlidingUpPanelLayout mLayout;
    private View headerView;
    private Button btn;

    private float offset;

    @Override
    public void onClick(View v) {
        int id = v.getId();
        if(id == R.id.add) {
            //添加内容,并find头部内容部分
            View view = mLayout.loadView(R.layout.pamap_slidingup_content);

            headerView = view.findViewById(R.id.header);

        } else if(id == R.id.pamap_iv_back){
            //头部返回
            if (mLayout != null &&
                    (mLayout.getPanelState() == SlidingUpPanelLayout.PanelState.EXPANDED || mLayout.getPanelState() == SlidingUpPanelLayout.PanelState.ANCHORED)) {
                mLayout.setPanelState(SlidingUpPanelLayout.PanelState.COLLAPSED);
            }
        } else if(id == R.id.mid) {
            if (mLayout.getAnchorPoint() == 1.0f) {
                //居中停留
                mLayout.setAnchorPoint(0.5f);
                mLayout.setPanelState(SlidingUpPanelLayout.PanelState.ANCHORED);
            } else {
                //取消居中停留
                mLayout.setAnchorPoint(1.0f);
                mLayout.setPanelState(SlidingUpPanelLayout.PanelState.COLLAPSED);
            }

        }
        else {
            Toast.makeText(this, "@_" + id , Toast.LENGTH_SHORT).show();
    }


    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.pamap_slidingup);

        mLayout = (SlidingUpPanelLayout) findViewById(R.id.sliding_layout);

        //
        //设置监听器,并控制头部的显示及隐藏
        mLayout.addPanelSlideListener(new SlidingUpPanelLayout.PanelSlideListener() {
            @Override
            public void onPanelSlide(View panel, float slideOffset) {
                //展开时slideOffset=1.0f; 折叠时slideOffset=0;
                Log.i(TAG, "onPanelSlide, offset " + slideOffset);
                if(slideOffset>0.5f && headerView!=null) {
                    if(headerView.getVisibility()!=View.VISIBLE) {
                        headerView.setVisibility(View.VISIBLE);
                    }
                }else if(slideOffset<=0.5f && headerView!=null){
                    if(headerView.getVisibility()==View.VISIBLE) {
                        headerView.setVisibility(View.GONE);
                    }
                }

            }

            @Override
            public void onPanelStateChanged(View panel, SlidingUpPanelLayout.PanelState previousState, SlidingUpPanelLayout.PanelState newState) {
                Log.i(TAG, "onPanelStateChanged " + newState);
            }
        });
    }
}

好了,这篇博客我以后会完善的,现在只是提醒下自己这个东西还要去研究!



  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
AndroidSlidingUpPanel 是一个上拉面板, 就是向上滑动的时候往上飞出一个显示面板控件, 该库效果在 Google Music, Google Maps and Rdio等 App 中用到。 效果图: 用法:使用com.sothree.slidinguppanel.SlidingUpPanelLayout作为您的活动布局的根元素。 布局必须设置为顶部或底部。请确保它有两个元素。 第一个元素是你的主要布局。第二个元素是你的向上滑动面板布局。 主要布局应当具有的宽度和高度设置为match_parent。 滑动的布局的宽度应设置为match_parent;高度应设置为match_parent,WRAP_CONTENT或最大desireable高度。 如果您想定义高度屏幕为percetange,可将其设置为match_parent,滑动视图定义为layout_weight属性。  默认情况下,整个面板将作为拖动区域和将截获的点击和拖动事件。可以通过使用setDragView方法或umanoDragView属性限制牵引区到特定的图。 想了解更多信息,请参考示例代码:<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="match_parent"     android:gravity="bottom"     sothree:umanoPanelHeight="68dp"     sothree:umanoShadowHeight="4dp">     <TextView         android:layout_width="match_parent"         android:layout_height="match_parent"         android:gravity="center"         android:text="Main Content"         android:textSize="16sp" />     <TextView         android:layout_width="match_parent"         android:layout_height="match_parent"         android:gravity="center|top"         android:text="The Awesome Sliding Up Panel"         android:textSize="16sp" /> </com.sothree.slidinguppanel.SlidingUpPanelLayout>

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值