[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-4136":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":16,"stars7d":16,"stars30d":17,"stars90d":16,"forks30d":16,"starsTrendScore":16,"compositeScore":18,"rankGlobal":10,"rankLanguage":10,"license":19,"archived":20,"fork":20,"defaultBranch":21,"hasWiki":22,"hasPages":20,"topics":23,"createdAt":10,"pushedAt":10,"updatedAt":24,"readmeContent":25,"aiSummary":26,"trendingCount":16,"starSnapshotCount":16,"syncStatus":17,"lastSyncTime":27,"discoverSource":28},4136,"AndroidSlidingUpPanel","umano\u002FAndroidSlidingUpPanel","umano","This library provides a simple way to add a draggable sliding up panel (popularized by Google Music and Google Maps) to your Android application. Brought to you by Umano.","http:\u002F\u002Fumano.me",null,"Java",9458,2233,342,267,0,2,41,"Apache License 2.0",false,"master",true,[],"2026-06-12 02:00:59","[![Maven Central](https:\u002F\u002Fmaven-badges.herokuapp.com\u002Fmaven-central\u002Fcom.sothree.slidinguppanel\u002Flibrary\u002Fbadge.svg)](https:\u002F\u002Fmaven-badges.herokuapp.com\u002Fmaven-central\u002Fcom.sothree.slidinguppanel\u002Flibrary)\n[![Badge](http:\u002F\u002Fwww.libtastic.com\u002Fstatic\u002Fosbadges\u002F30.png)](http:\u002F\u002Fwww.libtastic.com\u002Ftechnology\u002F30\u002F)\n\n**Note:** we are **not** actively responding to issues right now. If you find a bug, please submit a PR. \n\nAndroid Sliding Up Panel\n=========================\n\nThis library provides a simple way to add a draggable sliding up panel (popularized by Google Music and Google Maps) to your Android application.\n\nAs seen in Umano Android App (now acquired by Dropbox):\n\n![SlidingUpPanelLayout](https:\u002F\u002Fraw.github.com\u002Fumano\u002FAndroidSlidingUpPanelDemo\u002Fmaster\u002Fslidinguppanel.png)\n\n### Known Uses in Popular Apps\n\n* [Soundcloud] (https:\u002F\u002Fplay.google.com\u002Fstore\u002Fapps\u002Fdetails?id=com.soundcloud.android)\n* [Dropbox Paper] (https:\u002F\u002Fplay.google.com\u002Fstore\u002Fapps\u002Fdetails?id=com.dropbox.paper)\n* [Snaptee] (https:\u002F\u002Fplay.google.com\u002Fstore\u002Fapps\u002Fdetails?id=co.snaptee.android)\n\nIf you are using the library and you would like to have your app listed, simply let us know.\n\n### Importing the Library\n\nSimply add the following dependency to your `build.gradle` file to use the latest version:\n\n```groovy\ndependencies {\n    repositories {\n        mavenCentral()\n    }\n    compile 'com.sothree.slidinguppanel:library:3.4.0'\n}\n```\n\n### Usage\n\n* Include `com.sothree.slidinguppanel.SlidingUpPanelLayout` as the root element in your activity layout.\n* The layout must have `gravity` set to either `top` or `bottom`.\n* Make sure that it has two children. The first child is your main layout. The second child is your layout for the sliding up panel.\n* The main layout should have the width and the height set to `match_parent`.\n* The sliding layout should have the width set to `match_parent` and the height set to either `match_parent`, `wrap_content` or the max desireable height. If you would like to define the height as the percetange of the screen, set it to `match_parent` and also define a `layout_weight` attribute for the sliding view.\n* By default, the whole panel will act as a drag region and will intercept clicks and drag events. You can restrict the drag area to a specific view by using the `setDragView` method or `umanoDragView` attribute.\n\nFor more information, please refer to the sample code.\n\n```xml\n\u003Ccom.sothree.slidinguppanel.SlidingUpPanelLayout\n    xmlns:sothree=\"http:\u002F\u002Fschemas.android.com\u002Fapk\u002Fres-auto\"\n    android:id=\"@+id\u002Fsliding_layout\"\n    android:layout_width=\"match_parent\"\n    android:layout_height=\"match_parent\"\n    android:gravity=\"bottom\"\n    sothree:umanoPanelHeight=\"68dp\"\n    sothree:umanoShadowHeight=\"4dp\">\n\n    \u003CTextView\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"match_parent\"\n        android:gravity=\"center\"\n        android:text=\"Main Content\"\n        android:textSize=\"16sp\" \u002F>\n\n    \u003CTextView\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"match_parent\"\n        android:gravity=\"center|top\"\n        android:text=\"The Awesome Sliding Up Panel\"\n        android:textSize=\"16sp\" \u002F>\n\u003C\u002Fcom.sothree.slidinguppanel.SlidingUpPanelLayout>\n```\nFor smooth interaction with the ActionBar, make sure that `windowActionBarOverlay` is set to `true` in your styles:\n```xml\n\u003Cstyle name=\"AppTheme\">\n    \u003Citem name=\"android:windowActionBarOverlay\">true\u003C\u002Fitem>\n\u003C\u002Fstyle>\n```\nHowever, in this case you would likely want to add a top margin to your main layout of `?android:attr\u002FactionBarSize`\nor `?attr\u002FactionBarSize` to support older API versions.\n\n### Caveats, Additional Features and Customization\n\n* If you are using a custom `umanoDragView`, the panel will pass through the click events to the main layout. Make your second layout `clickable` to prevent this.\n* You can change the panel height by using the `setPanelHeight` method or `umanoPanelHeight` attribute.\n* If you would like to hide the shadow above the sliding panel, set `shadowHeight` attribute to 0.\n* Use `setEnabled(false)` to completely disable the sliding panel (including touch and programmatic sliding)\n* Use `setTouchEnabled(false)` to disables panel's touch responsiveness (drag and click), you can still control the panel programatically\n* Use `getPanelState` to get the current panel state\n* Use `setPanelState` to set the current panel state\n* You can add parallax to the main view by setting `umanoParallaxOffset` attribute (see demo for the example).\n* You can set a anchor point in the middle of the screen using `setAnchorPoint` to allow an intermediate expanded state for the panel (similar to Google Maps).\n* You can set a `PanelSlideListener` to monitor events about sliding panes.\n* You can also make the panel slide from the top by changing the `layout_gravity` attribute of the layout to `top`.\n* You can provide a scroll interpolator for the panel movement by setting `umanoScrollInterpolator` attribute. For instance, if you want a bounce or overshoot effect for the panel.\n* By default, the panel pushes up the main content. You can make it overlay the main content by using `setOverlayed` method or `umanoOverlay` attribute. This is useful if you would like to make the sliding layout semi-transparent. You can also set `umanoClipPanel` to false to make the panel transparent in non-overlay mode.\n* By default, the main content is dimmed as the panel slides up. You can change the dim color by changing `umanoFadeColor`. Set it to `\"@android:color\u002Ftransparent\"` to remove dimming completely.\n\n### Scrollable Sliding Views\n\nIf you have a scrollable view inside of the sliding panel, make sure to set `umanoScrollableView` attribute on the panel to supported nested scrolling. The panel supports `ListView`, `ScrollView` and `RecyclerView` out of the box, but you can add support for any type of a scrollable view by setting a custom `ScrollableViewHelper`. Here is an example for `NestedScrollView`\n\n```\npublic class NestedScrollableViewHelper extends ScrollableViewHelper {\n  public int getScrollableViewScrollPosition(View scrollableView, boolean isSlidingUp) {\n    if (mScrollableView instanceof NestedScrollView) {\n      if(isSlidingUp){\n        return mScrollableView.getScrollY();\n      } else {\n        NestedScrollView nsv = ((NestedScrollView) mScrollableView);\n        View child = nsv.getChildAt(0);\n        return (child.getBottom() - (nsv.getHeight() + nsv.getScrollY()));\n      }\n    } else {\n      return 0;\n    }\n  }\n}\n```\n\nOnce you define your helper, you can set it using `setScrollableViewHelper` on the sliding panel.\n\n### Implementation\n\nThis library was initially based on the opened-sourced [SlidingPaneLayout](http:\u002F\u002Fdeveloper.android.com\u002Freference\u002Fandroid\u002Fsupport\u002Fv4\u002Fwidget\u002FSlidingPaneLayout.html) component from the r13 of the Android Support Library. Thanks Android team!\n\n### Requirements\n\nTested on Android 2.2+\n\n### Other Contributors\n\n* Nov 23, 15 - [@kiyeonk](https:\u002F\u002Fgithub.com\u002Fkiyeonk) - umanoScrollInterpolator support\n* Jan 21, 14 - ChaYoung You ([@yous](https:\u002F\u002Fgithub.com\u002Fyous)) - Slide from the top support\n* Aug 20, 13 - [@gipi](https:\u002F\u002Fgithub.com\u002Fgipi) - Android Studio Support\n* Jul 24, 13 - Philip Schiffer ([@hameno](https:\u002F\u002Fgithub.com\u002Fhameno)) - Maven Support\n* Oct 20, 13 - Irina Preșa ([@iriina](https:\u002F\u002Fgithub.com\u002Firiina)) - Anchor Support\n* Dec 1, 13 - ([@youchy](https:\u002F\u002Fgithub.com\u002Fyouchy)) - XML Attributes Support\n* Dec 22, 13 - Vladimir Mironov ([@MironovNsk](https:\u002F\u002Fgithub.com\u002Fnsk-mironov)) - Custom Expanded Panel Height\n\nIf you have an awesome pull request, send it over!\n\n### Changelog\n\n* 3.4.0\n  * Use the latest support library 26 and update the min version to 14.\n  * Bug fixes\n* 3.3.1\n  * Lots of bug fixes from various pull requests.\n  * Removed the nineoldandroids dependency. Use ViewCompat instead.\n* 3.3.0\n  * You can now set a `FadeOnClickListener`, for when the faded area of the main content is clicked.\n  * `PanelSlideListener` has a new format (multiple of them can be set now\n  * Fixed the setTouchEnabled bug\n* 3.2.1\n  * Add support for `umanoScrollInterpolator`\n  * Add support for percentage-based sliding panel height using `layout_weight` attribute\n  * Add `ScrollableViewHelper` to allow users extend support for new types of scrollable views.\n* 3.2.0\n  * Rename `umanoParalaxOffset` to `umanoParallaxOffset`\n  * RecyclerView support.\n* 3.1.0\n  * Added `umanoScrollableView` to supported nested scrolling in children (only ScrollView and ListView are supported for now)\n* 3.0.0\n  * Added `umano` prefix for all attributes\n  * Added `clipPanel` attribute for supporting transparent panels in non-overlay mode.\n  * `setEnabled(false)` - now completely disables the sliding panel (touch and programmatic sliding)\n  * `setTouchEnabled(false)` - disables panel's touch responsiveness (drag and click), you can still control the panel programatically\n  * `getPanelState` - is now the only method to get the current panel state\n  * `setPanelState` - is now the only method to modify the panel state from code\n* 2.0.2 - Allow `wrap_content` for sliding view height attribute. Bug fixes. \n* 2.0.1 - Bug fixes. \n* 2.0.0 - Cleaned up various public method calls. Added animated `showPanel`\u002F`hidePanel` methods. \n* 1.0.1 - Initial Release \n\n### Licence\n\n> Licensed under the Apache License, Version 2.0 (the \"License\");\n> you may not use this work except in compliance with the License.\n> You may obtain a copy of the License in the LICENSE file, or at:\n>\n>  [http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0](http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0)\n>\n> Unless required by applicable law or agreed to in writing, software\n> distributed under the License is distributed on an \"AS IS\" BASIS,\n> WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n> See the License for the specific language governing permissions and\n> limitations under the License.\n","AndroidSlidingUpPanel 是一个用于在Android应用中添加可拖动滑动面板的库，这种设计常见于Google音乐和地图等应用。它支持通过简单的XML配置实现底部或顶部滑动面板，并且能够自定义滑动区域、阴影高度以及面板高度等功能特性，采用Java语言编写。适用于需要增强用户界面交互体验的应用场景，比如媒体播放器、地图导航或者任何希望增加额外信息展示层而不遮挡主内容的应用。此外，该库已被多个知名应用如Soundcloud和Dropbox Paper所采用，证明了其实用性和稳定性。","2026-06-11 02:58:38","top_language"]