android 开源库 AndroidSlidingUpPanel 简单使用

1 简介

AndroidSlidingUpPanel  可向上拖动的view

官方展示:
android 开源库 AndroidSlidingUpPanel 简单使用_第1张图片
 

 

2 使用

2.1 添加依赖

repositories {
    mavenCentral()
}

implementation 'com.sothree.slidinguppanel:library:3.4.0'

 

2.2 用法

  • com.sothree.slidinguppanel.SlidingUpPanelLayout作为根布局。
  • 根布局必须gravity设置为topbottom
  • 确保它有两个子view。第一个子view是您的主要布局。第二个子view是您上滑面板的布局。
  • 主布局的宽度和高度应设置为match_parent
  • 滑动布局 tv1 的宽度应设置为 match_parent,高度应设置为 match_parentwrap_content或 android:maxWidth="xxdp"。如果您想将主界面和slidingUpPanel按比例显示于屏幕,请将其设置为 match_parent并使用   layout_weight为 SlidingUpPanelLayout 定义一个属性。
  • 默认情况下,整个面板将充当拖动区域并拦截点击和拖动事件。您可以使用setDragView方法或umanoDragView属性将拖动区域限制为特定View。

 



    

    

 

2.3 ActionBarOverlay

如果当向上滑动的时候actionbar也是跟着慢慢隐藏的,这种效果必须使用ActionBarOverlay:

同时这种情况你需要为 根布局 顶部 设置 margintop 为actionbar的高度,来支持较旧的API版本?android:attr/actionBarSize  or   attr/actionBarSize 

2.4 注意事项,其他功能和自定义

  • 如果您使用的是Custom umanoDragView,则面板会将click事件传递到主布局。进行第二种布局clickable以防止这种情况。
  • 您可以使用setPanelHeight方法或umanoPanelHeight属性来更改面板高度。
  • 如果要隐藏滑动面板上方的阴影,请将shadowHeightattribute 设置为0。
  • 使用setEnabled(false)完全禁用滑动面板(包括触摸和滑动编程)
  • 使用setTouchEnabled(false)以禁用面板的触摸响应(拖动和点击),你仍然可以控制面板编程
  • 使用getPanelState来获得当前面板状态
  • 使用setPanelState设置当前面板状态
  • 您可以通过设置umanoParallaxOffset属性将视差添加到主视图(有关示例,请参见演示)。
  • 您可以在屏幕中间设置锚点,setAnchorPoint用于允许面板处于中间展开状态(类似于Google Maps)。
  • 您可以将设置PanelSlideListener为监视有关滑动窗格的事件。
  • 您还可以通过layout_gravity将布局的属性更改为来使面板从顶部滑动top
  • 您可以通过设置umanoScrollInterpolator属性为面板移动提供滚动插值器。例如,如果您想要面板的反弹或超调效果。
  • 默认情况下,面板上推主要内容。您可以使用setOverlayed方法或umanoOverlay属性使其覆盖主要内容。如果您想使滑动布局半透明,这将很有用。您也可以设置umanoClipPanel为false以在非覆盖模式下使面板透明。
  • 默认情况下,面板向上滑动时,主要内容显示为灰色。您可以通过更改来更改暗色umanoFadeColor。将其设置为"@android:color/transparent"完全消除变暗。

 

2.5 嵌套滑动问题

如果有嵌套滑动问题,请确保umanoScrollableView将面板上的属性设置为 umanoScrollableView 。该组件支持ListViewScrollView以及RecyclerView,但是你可以通过设置自定义添加任何类型的可滚动视图的支持ScrollableViewHelper。这是一个例子NestedScrollView

public class NestedScrollableViewHelper extends ScrollableViewHelper {

    public int getScrollableViewScrollPosition(View mScrollableView, boolean isSlidingUp) {
        if (mScrollableView instanceof NestedScrollView) {
            if(isSlidingUp){
                return mScrollableView.getScrollY();
            } else {
                NestedScrollView nsv = ((NestedScrollView) mScrollableView);
                View child = nsv.getChildAt(0);
                return (child.getBottom() - (nsv.getHeight() + nsv.getScrollY()));
            }
        } else {
            return 0;
        }
    }
}

定义好以后,使用  androidSlidingUpPanel.setScrollableViewHelper 

 该库最初基于Android支持库r13中开源的SlidingPaneLayout组件

 

3 demo以及效果图

demo

效果图:

 

 

 

 

 

 

你可能感兴趣的:(android,androidUI)