博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android 开源库 AndroidSlidingUpPanel 简单使用
阅读量:4284 次
发布时间:2019-05-27

本文共 2447 字,大约阅读时间需要 8 分钟。

1 简介

AndroidSlidingUpPanel  可向上拖动的view

官方展示:

这里写图片描述
 

 

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中开源的组件

 

3 demo以及效果图

效果图:

 

 

 

 

 

 

你可能感兴趣的文章
遞迴touch
查看>>
git教學
查看>>
您是否擁有好的英文商用電子郵件禮節呢?
查看>>
被動語態 (Passive Voice)
查看>>
svn : how to set the executable bit on a file?
查看>>
vim 取代指令
查看>>
git 修改過檔案後,如何commit上server
查看>>
git log 應用
查看>>
Git 版本控制系統(3) 還沒 push 前可以做的事
查看>>
Git 基礎 - 檢視提交的歷史記錄
查看>>
wifi 連ap command
查看>>
git clean reset checkout
查看>>
[轉載]6個超強網站讓你查到最道地的英文
查看>>
HUB 與 Switch 差別
查看>>
linux產生 core dump文件方法及設置
查看>>
How to pass macro definition from “makefile” command line arguments to C source code?
查看>>
英文句型
查看>>
mtd and /dev/mtd*相關資料
查看>>
cp: cannot create symbolic link to fat format of usb: Operation not permitted
查看>>
MTD bad Block issue
查看>>