{"id":23129731,"url":"https://github.com/naxam/draggablepanel-android-binding","last_synced_at":"2026-04-30T15:32:47.713Z","repository":{"id":85432304,"uuid":"99030473","full_name":"NAXAM/draggablepanel-android-binding","owner":"NAXAM","description":"Xamarin Android Binding Library for Pedrovgs DraggablePanel","archived":false,"fork":false,"pushed_at":"2017-08-01T18:21:16.000Z","size":4,"stargazers_count":1,"open_issues_count":2,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-04T06:41:38.824Z","etag":null,"topics":["android","bindings","draggable-panel","draggablepanel","draggableview","xamarin","xamarin-android-binding"],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/NAXAM.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-08-01T18:16:56.000Z","updated_at":"2020-08-12T10:21:16.000Z","dependencies_parsed_at":"2023-03-13T05:14:00.805Z","dependency_job_id":null,"html_url":"https://github.com/NAXAM/draggablepanel-android-binding","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/NAXAM/draggablepanel-android-binding","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NAXAM%2Fdraggablepanel-android-binding","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NAXAM%2Fdraggablepanel-android-binding/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NAXAM%2Fdraggablepanel-android-binding/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NAXAM%2Fdraggablepanel-android-binding/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/NAXAM","download_url":"https://codeload.github.com/NAXAM/draggablepanel-android-binding/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NAXAM%2Fdraggablepanel-android-binding/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32469344,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-30T13:12:12.517Z","status":"ssl_error","status_checked_at":"2026-04-30T13:12:06.837Z","response_time":57,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android","bindings","draggable-panel","draggablepanel","draggableview","xamarin","xamarin-android-binding"],"created_at":"2024-12-17T10:10:15.616Z","updated_at":"2026-04-30T15:32:47.695Z","avatar_url":"https://github.com/NAXAM.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"Draggable Panel - Xamarin Android Binding Library\n===============\n\nDraggable Panel is an Android library created to build a draggable user interface similar to the new YouTube draggable video component based on Fragments or Views.\n\nThis Android library offers you two main classes to use and create your own awesome user interfaces. If you want to use it with fragments add ``DraggablePanel`` to your layout. If you want to use it with views use ``DraggableView`` and put your views inside.\n\nThis new component has been created using some concepts described on [Flavien Laurent Blog][1] and [Denevell Blog][2].\n\nTo create this library I've used an Android component called [ViewDragHelper][3] and [ViewDragHelper.Calback][4]. This component doesn't have too much documentation and that's the reason why I've added some javadoc to my code in order to clarify the component usage.\n\nThis library works on Android 4.X or higher versions but not in lower versions because the scale effect is not going to work properly when the user try to drag the view. The clickable zone on a scaled view in Android 2.X is bigger than the real scaled zone.\n\nScreenshots\n-----------\n\n![Demo Screenshot 1][5]\n![Demo Screenshot 2][6]\n![Demo Screenshot 4][7]\n![Demo Screenshot 3][8]\n\n\nUsage\n-----\n\nTo use Draggable Panel library and get your new awesome UI working you can use two different Android widgets:\n\n* 1. Add ``DraggablePanel`` widget to your layout. Configure the view customization elements using styleable attributes or programatically and configure your fragments to work as top or bottom fragment inside the ``DraggablePanel`` widget.\n\n```xml\n\u003ccom.github.pedrovgs.DraggablePanel\n        android:id=\"@+id/draggable_panel\"\n        android:layout_width=\"fill_parent\"\n        android:layout_height=\"fill_parent\"/\u003e\n```\n\n```java\nprivate void initializeDraggablePanel() throws Resources.NotFoundException {\n      draggablePanel.setFragmentManager(getSupportFragmentManager());\n      draggablePanel.setTopFragment(placeFragment);\n      draggablePanel.setBottomFragment(mapFragment);\n      draggablePanel.initializeView();\n}\n```\n\n* 2. Add ``DraggableView`` widget to your layout. Configure the view to use two children views as the draggable view and the second view. Configure the customization elements using styleable attributes or programatically.\n\n```xml\n\u003ccom.github.pedrovgs.DraggableView\n          xmlns:android=\"http://schemas.android.com/apk/res/android\"\n          xmlns:draggable_view=\"http://schemas.android.com/apk/res-auto\"\n          android:id=\"@+id/draggable_view\"\n          android:layout_width=\"fill_parent\"\n          android:layout_height=\"fill_parent\"\n          draggable_view:top_view_id=\"@+id/iv_fan_art\"\n          draggable_view:bottom_view_id=\"@+id/lv_episodes\"\n          draggable_view:top_view_x_scale_factor=\"@dimen/x_scale_factor\"\n          draggable_view:top_view_y_scale_factor=\"@dimen/y_scale_factor\"\n          draggable_view:top_view_margin_right=\"@dimen/top_fragment_margin\"\n          draggable_view:top_view_margin_bottom=\"@dimen/top_fragment_margin\"\n          android:background=\"@color/black\"\u003e\n\n      \u003c!-- ListView Episodes --\u003e\n\n      \u003cListView\n              android:id=\"@+id/lv_episodes\"\n              android:layout_width=\"fill_parent\"\n              android:layout_height=\"fill_parent\"\n              android:layout_below=\"@+id/iv_fan_art\"\n              style=\"@style/episodes_list_view\"/\u003e\n\n      \u003c!-- TvShow Fan Art --\u003e\n\n      \u003cImageView\n              android:id=\"@+id/iv_fan_art\"\n              android:layout_width=\"fill_parent\"\n              android:layout_height=\"@dimen/tv_show_fan_art_height\"\n              android:layout_alignParentTop=\"true\"\n              style=\"@style/image_view\"/\u003e\n\n\u003c/com.github.pedrovgs.DraggableView\u003e\n```\n\n**If you are going to use ``DraggablePanel`` or ``DraggableView`` combined with a ``DrawerLayout`` review [Famous Places Sample Activity](https://github.com/pedrovgs/DraggablePanel/blob/develop/sample/src/main/java/com/github/pedrovgs/sample/activity/PlacesSampleActivity.java)\n\nImport DraggablePanel dependency\n--------------------------------\n\n```xml\nInstall-Package Naxam.DraggablePanel.Droid\n```\n\nCustomization\n-------------\n\nYou can customize some of the view effects programatically or using xml styleable attributes. The elements to customize are:\n\n* Draggable view / fragment height.\n* Draggable view X scale factor.\n* Draggable view Y scale factor.\n* Draggable view margin right applied when the view is minimized.\n* Draggable view margin bottom applied when the view is minimized.\n* Enable or disable the horizontal alpha effect applied while the view is being horizontally dragged.\n* Enable or disable touch on minimized/maximized view to minimize/maximize.\n\n```xml\n\u003ccom.github.pedrovgs.DraggableView\n        xmlns:android=\"http://schemas.android.com/apk/res/android\"\n        xmlns:draggable_view=\"http://schemas.android.com/apk/res-auto\"\n        android:id=\"@+id/draggable_view\"\n        android:layout_width=\"fill_parent\"\n        android:layout_height=\"fill_parent\"\n        draggable_view:top_view_id=\"@+id/iv_fan_art\"\n        draggable_view:bottom_view_id=\"@+id/lv_episodes\"\n        draggable_view:top_view_x_scale_factor=\"@dimen/x_scale_factor\"\n        draggable_view:top_view_y_scale_factor=\"@dimen/y_scale_factor\"\n        draggable_view:top_view_margin_right=\"@dimen/top_fragment_margin\"\n        draggable_view:top_view_margin_bottom=\"@dimen/top_fragment_margin\"\n        draggable_view:enable_click_to_maximize_view=\"false\"\n        draggable_view:enable_click_to_minimize_view=\"true\"\n        android:background=\"@color/black\"\u003e\n\n        \u003c!-- ....... --\u003e\n\n\u003c/com.github.pedrovgs.DraggableView\u003e\n```\n\n```java\ndraggablePanel.setTopFragment(placeFragment);\ndraggablePanel.setBottomFragment(mapFragment);\ndraggablePanel.setXScaleFactor(xScaleFactor);\ndraggablePanel.setYScaleFactor(yScaleFactor);\ndraggablePanel.setTopViewHeight(topViewHeight);\ndraggablePanel.setTopFragmentMarginRight(topViewMarginRight);\ndraggablePanel.setTopFragmentMarginBottom(topViewMargnBottom);\ndraggablePanel.setClickToMaximizeEnabled(enableClickToMaximize);\ndraggablePanel.setClickToMinimizeEnabled(enableClickToMinimize);\n```\n\nSimilar customizable attributes are available programatically or using styleable attributes in ``DraggableView``.\n\nDo you want to resize the top view instead of scale it? Add ``dragable_view:top_view_resize`` attribute to your DraggableView:\n\n```xml\n\u003ccom.github.pedrovgs.DraggableView\n            xmlns:android=\"http://schemas.android.com/apk/res/android\"\n            xmlns:draggable_view=\"http://schemas.android.com/apk/res-auto\"\n            android:id=\"@+id/draggable_view\"\n            draggable_view:top_view_resize=\"true\"\u003e\n```\n\n\nDo you want to contribute? TODO\n-------------------------------\n\n* Support landscape mode when DraggableView is using ResizeTransformer.\n\nOrigin library Developed By\n------------\n\n* Pedro Vicente Gómez Sánchez - \u003cpedrovicente.gomez@gmail.com\u003e\n\n\u003ca href=\"https://twitter.com/pedro_g_s\"\u003e\n  \u003cimg alt=\"Follow me on Twitter\" src=\"https://image.freepik.com/iconos-gratis/twitter-logo_318-40209.jpg\" height=\"60\" width=\"60\"/\u003e\n\u003c/a\u003e\n\u003ca href=\"https://es.linkedin.com/in/pedrovgs\"\u003e\n  \u003cimg alt=\"Add me to Linkedin\" src=\"https://image.freepik.com/iconos-gratis/boton-del-logotipo-linkedin_318-84979.png\" height=\"60\" width=\"60\"/\u003e\n\u003c/a\u003e\n\n*Does your app use DraggablePanel? If you want to be featured on this list tell me on [Twitter][10]\n\nLibraries used on the sample project\n------------------------------------\n\n* [Renderers][11]\n* [Dagger][12]\n* [Butterknife][13]\n* [NineOldAndroids][14]\n* [Picasso][15]\n* [ActionBarSherlock][16]\n* [YouTube Player][17]\n\n\nOrigin Library License\n-------\n\n    Copyright 2014 Pedro Vicente Gómez Sánchez\n\n    Licensed under the Apache License, Version 2.0 (the \"License\");\n    you may not use this file except in compliance with the License.\n    You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-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\n\n[1]: http://flavienlaurent.com/blog/2013/08/28/each-navigation-drawer-hides-a-viewdraghelper/\n[2]: http://blog.denevell.org/android-viewdraghelper-example-tutorial.html\n[3]: http://developer.android.com/reference/android/support/v4/widget/ViewDragHelper.html\n[4]: http://developer.android.com/reference/android/support/v4/widget/ViewDragHelper.Callback.html\n[5]: https://github.com/pedrovgs/DraggablePanel/raw/develop/art/screenshot1.gif\n[6]: https://github.com/pedrovgs/DraggablePanel/raw/develop/art/screenshot2.gif\n[7]: https://github.com/pedrovgs/DraggablePanel/raw/develop/art/screenshot3.gif\n[8]: https://github.com/pedrovgs/DraggablePanel/raw/develop/art/screenshot4.gif\n[10]: https://twitter.com/pedro_g_s\n[11]: https://github.com/pedrovgs/Renderers\n[12]: https://github.com/square/dagger\n[13]: https://github.com/JakeWharton/butterknife\n[14]: https://github.com/JakeWharton/NineOldAndroids/\n[15]: https://github.com/square/picasso\n[16]: http://actionbarsherlock.com/\n[17]: https://developers.google.com/youtube/android/player/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnaxam%2Fdraggablepanel-android-binding","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnaxam%2Fdraggablepanel-android-binding","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnaxam%2Fdraggablepanel-android-binding/lists"}