android 開源庫 AndroidSlidingUpPanel 簡單使用

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。

 

<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:id="@+id/tv1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center"
        android:text="Main Content"
        android:textSize="16sp" />

    <TextView
        android:id="@+id/tv2"
        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>

 

2.3 ActionBarOverlay

如果當向上滑動的時候actionbar也是跟着慢慢隱藏的,這種效果必須使用ActionBarOverlay:

<style name="AppTheme">
    <item name="android:windowActionBarOverlay">true</item>
</style>

同時這種情況你需要爲 根佈局 頂部 設置 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

效果圖:

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章