From a5756f4cc7ff6a7f75ff2c1e36b57ec9d16de98b Mon Sep 17 00:00:00 2001 From: Joshua Bahnsen Date: Wed, 24 Apr 2013 09:31:42 -0700 Subject: [PATCH] New FR and HU translations, start of major overhaul --- AndroidManifest.xml | 2 +- android-menudrawer-master/.gitignore | 30 + android-menudrawer-master/.travis.yml | 18 + android-menudrawer-master/CHANGELOG.md | 44 + android-menudrawer-master/LICENSE | 202 +++ android-menudrawer-master/README.md | 96 ++ android-menudrawer-master/art/menu_arrow.svg | 84 + android-menudrawer-master/checkstyle.xml | 120 ++ .../library/AndroidManifest.xml | 8 + android-menudrawer-master/library/build.xml | 92 + android-menudrawer-master/library/pom.xml | 36 + .../library/project.properties | 16 + .../library/res/values/attrs.xml | 43 + .../library/res/values/colors.xml | 6 + .../library/res/values/ids.xml | 20 + .../library/res/values/styles.xml | 11 + .../net/simonvt/menudrawer/BottomDrawer.java | 226 +++ .../menudrawer/BottomStaticDrawer.java | 85 + .../menudrawer/BuildLayerFrameLayout.java | 99 ++ .../net/simonvt/menudrawer/ColorDrawable.java | 170 ++ .../simonvt/menudrawer/DraggableDrawer.java | 672 ++++++++ .../net/simonvt/menudrawer/FloatScroller.java | 175 ++ .../simonvt/menudrawer/HorizontalDrawer.java | 207 +++ .../net/simonvt/menudrawer/LeftDrawer.java | 212 +++ .../simonvt/menudrawer/LeftStaticDrawer.java | 80 + .../net/simonvt/menudrawer/MenuDrawer.java | 1151 +++++++++++++ .../menudrawer/NoClickThroughFrameLayout.java | 28 + .../simonvt/menudrawer/PeekInterpolator.java | 28 + .../src/net/simonvt/menudrawer/Position.java | 18 + .../net/simonvt/menudrawer/RightDrawer.java | 234 +++ .../simonvt/menudrawer/RightStaticDrawer.java | 87 + .../src/net/simonvt/menudrawer/Scroller.java | 505 ++++++ .../menudrawer/SinusoidalInterpolator.java | 15 + .../menudrawer/SmoothInterpolator.java | 12 + .../net/simonvt/menudrawer/StaticDrawer.java | 208 +++ .../src/net/simonvt/menudrawer/TopDrawer.java | 216 +++ .../simonvt/menudrawer/TopStaticDrawer.java | 82 + .../simonvt/menudrawer/VerticalDrawer.java | 216 +++ android-menudrawer-master/pom.xml | 126 ++ .../samples/AndroidManifest.xml | 48 + android-menudrawer-master/samples/build.xml | 92 + .../samples/libs/android-support-v4-r10.jar | Bin 0 -> 349252 bytes android-menudrawer-master/samples/pom.xml | 47 + .../samples/project.properties | 15 + .../res/drawable-hdpi-v14/menu_arrow.png | Bin 0 -> 1568 bytes .../drawable-hdpi-v14/menu_arrow_bottom.png | Bin 0 -> 1540 bytes .../drawable-hdpi-v14/menu_arrow_right.png | Bin 0 -> 1520 bytes .../res/drawable-hdpi-v14/menu_arrow_top.png | Bin 0 -> 1529 bytes .../drawable-hdpi/ic_action_refresh_dark.png | Bin 0 -> 3138 bytes .../ic_action_select_all_dark.png | Bin 0 -> 2861 bytes .../samples/res/drawable-hdpi/ic_launcher.png | Bin 0 -> 9397 bytes ...ic_menu_moreoverflow_normal_holo_light.png | Bin 0 -> 148 bytes .../md__category_background.9.png | Bin 0 -> 173 bytes .../drawable-hdpi/md__list_focused_holo.9.png | Bin 0 -> 191 bytes .../md__list_longpressed_holo.9.png | Bin 0 -> 154 bytes .../md__list_pressed_holo_dark.9.png | Bin 0 -> 159 bytes ...md__list_selector_disabled_holo_dark.9.png | Bin 0 -> 189 bytes .../samples/res/drawable-hdpi/menu_arrow.png | Bin 0 -> 1578 bytes .../res/drawable-hdpi/menu_arrow_bottom.png | Bin 0 -> 1508 bytes .../res/drawable-hdpi/menu_arrow_right.png | Bin 0 -> 1524 bytes .../res/drawable-hdpi/menu_arrow_top.png | Bin 0 -> 1483 bytes .../res/drawable-mdpi-v14/menu_arrow.png | Bin 0 -> 891 bytes .../drawable-mdpi-v14/menu_arrow_bottom.png | Bin 0 -> 904 bytes .../drawable-mdpi-v14/menu_arrow_right.png | Bin 0 -> 862 bytes .../res/drawable-mdpi-v14/menu_arrow_top.png | Bin 0 -> 878 bytes .../drawable-mdpi/ic_action_refresh_dark.png | Bin 0 -> 3033 bytes .../ic_action_select_all_dark.png | Bin 0 -> 2846 bytes .../samples/res/drawable-mdpi/ic_launcher.png | Bin 0 -> 5237 bytes ...ic_menu_moreoverflow_normal_holo_light.png | Bin 0 -> 131 bytes .../md__category_background.9.png | Bin 0 -> 165 bytes .../drawable-mdpi/md__list_focused_holo.9.png | Bin 0 -> 171 bytes .../md__list_longpressed_holo.9.png | Bin 0 -> 151 bytes .../md__list_pressed_holo_dark.9.png | Bin 0 -> 158 bytes ...md__list_selector_disabled_holo_dark.9.png | Bin 0 -> 172 bytes .../samples/res/drawable-mdpi/menu_arrow.png | Bin 0 -> 869 bytes .../res/drawable-mdpi/menu_arrow_bottom.png | Bin 0 -> 887 bytes .../res/drawable-mdpi/menu_arrow_right.png | Bin 0 -> 855 bytes .../res/drawable-mdpi/menu_arrow_top.png | Bin 0 -> 835 bytes .../res/drawable-xhdpi-v14/menu_arrow.png | Bin 0 -> 1735 bytes .../drawable-xhdpi-v14/menu_arrow_bottom.png | Bin 0 -> 1650 bytes .../drawable-xhdpi-v14/menu_arrow_right.png | Bin 0 -> 1669 bytes .../res/drawable-xhdpi-v14/menu_arrow_top.png | Bin 0 -> 1654 bytes .../drawable-xhdpi/ic_action_refresh_dark.png | Bin 0 -> 3219 bytes .../ic_action_select_all_dark.png | Bin 0 -> 2856 bytes .../res/drawable-xhdpi/ic_launcher.png | Bin 0 -> 14383 bytes ...ic_menu_moreoverflow_normal_holo_light.png | Bin 0 -> 184 bytes .../md__category_background.9.png | Bin 0 -> 179 bytes .../md__list_focused_holo.9.png | Bin 0 -> 203 bytes .../md__list_longpressed_holo.9.png | Bin 0 -> 158 bytes .../md__list_pressed_holo_dark.9.png | Bin 0 -> 163 bytes ...md__list_selector_disabled_holo_dark.9.png | Bin 0 -> 190 bytes .../samples/res/drawable-xhdpi/menu_arrow.png | Bin 0 -> 1723 bytes .../res/drawable-xhdpi/menu_arrow_bottom.png | Bin 0 -> 1592 bytes .../res/drawable-xhdpi/menu_arrow_right.png | Bin 0 -> 1694 bytes .../res/drawable-xhdpi/menu_arrow_top.png | Bin 0 -> 1581 bytes ...lector_background_transition_holo_dark.xml | 20 + .../drawable/md__list_selector_holo_dark.xml | 27 + .../res/layout/activity_bottommenu.xml | 21 + .../res/layout/activity_contentsample.xml | 24 + .../res/layout/activity_layoutsample.xml | 63 + .../samples/res/layout/activity_rightmenu.xml | 19 + .../res/layout/activity_staticsample.xml | 19 + .../samples/res/layout/activity_topmenu.xml | 21 + .../res/layout/activity_viewpagersample.xml | 5 + .../res/layout/activity_windowsample.xml | 19 + .../samples/res/layout/list_row_sample.xml | 26 + .../samples/res/layout/main.xml | 33 + .../samples/res/layout/menu_bottom.xml | 30 + .../samples/res/layout/menu_row_category.xml | 5 + .../samples/res/layout/menu_row_item.xml | 5 + .../samples/res/layout/menu_scrollview.xml | 73 + .../samples/res/layout/menu_top.xml | 30 + .../samples/res/values-v14/colors.xml | 4 + .../samples/res/values-v14/themes.xml | 7 + .../samples/res/values/colors.xml | 6 + .../samples/res/values/strings.xml | 34 + .../samples/res/values/styles.xml | 55 + .../samples/res/values/themes.xml | 23 + .../samples/ActionBarOverlaySample.java | 13 + .../menudrawer/samples/BottomMenuSample.java | 43 + .../menudrawer/samples/ContentSample.java | 218 +++ .../menudrawer/samples/LayoutSample.java | 36 + .../samples/ListActivitySample.java | 118 ++ .../menudrawer/samples/RightMenuSample.java | 215 +++ .../menudrawer/samples/SamplesActivity.java | 99 ++ .../samples/StaticDrawerSample.java | 175 ++ .../menudrawer/samples/TopMenuSample.java | 75 + .../menudrawer/samples/ViewPagerSample.java | 300 ++++ .../menudrawer/samples/WindowSample.java | 99 ++ assets/html/fr/index.html | 99 ++ .../thejoshwa/ultrasonic/androidapp/R.java | 1516 ++++++++++------- gen/net/simonvt/menudrawer/R.java | 53 + project.properties | 1 + res/drawable-hdpi-v14/menu_arrow.png | Bin 0 -> 1568 bytes res/drawable-hdpi-v14/menu_arrow_bottom.png | Bin 0 -> 1540 bytes res/drawable-hdpi-v14/menu_arrow_right.png | Bin 0 -> 1520 bytes res/drawable-hdpi-v14/menu_arrow_top.png | Bin 0 -> 1529 bytes res/drawable-hdpi/menu_arrow.png | Bin 0 -> 1578 bytes res/drawable-hdpi/menu_arrow_bottom.png | Bin 0 -> 1508 bytes res/drawable-hdpi/menu_arrow_right.png | Bin 0 -> 1524 bytes res/drawable-hdpi/menu_arrow_top.png | Bin 0 -> 1483 bytes res/drawable-mdpi-v14/menu_arrow.png | Bin 0 -> 891 bytes res/drawable-mdpi-v14/menu_arrow_bottom.png | Bin 0 -> 904 bytes res/drawable-mdpi-v14/menu_arrow_right.png | Bin 0 -> 862 bytes res/drawable-mdpi-v14/menu_arrow_top.png | Bin 0 -> 878 bytes res/drawable-mdpi/menu_arrow.png | Bin 0 -> 869 bytes res/drawable-mdpi/menu_arrow_bottom.png | Bin 0 -> 887 bytes res/drawable-mdpi/menu_arrow_right.png | Bin 0 -> 855 bytes res/drawable-mdpi/menu_arrow_top.png | Bin 0 -> 835 bytes res/drawable-xhdpi-v14/menu_arrow.png | Bin 0 -> 1735 bytes res/drawable-xhdpi-v14/menu_arrow_bottom.png | Bin 0 -> 1650 bytes res/drawable-xhdpi-v14/menu_arrow_right.png | Bin 0 -> 1669 bytes res/drawable-xhdpi-v14/menu_arrow_top.png | Bin 0 -> 1654 bytes .../md__category_background.9.png | Bin 0 -> 179 bytes .../md__list_focused_holo.9.png | Bin 0 -> 203 bytes .../md__list_longpressed_holo.9.png | Bin 0 -> 158 bytes .../md__list_pressed_holo_dark.9.png | Bin 0 -> 163 bytes ...md__list_selector_disabled_holo_dark.9.png | Bin 0 -> 190 bytes res/drawable-xhdpi/menu_arrow.png | Bin 0 -> 1723 bytes res/drawable-xhdpi/menu_arrow_bottom.png | Bin 0 -> 1592 bytes res/drawable-xhdpi/menu_arrow_right.png | Bin 0 -> 1694 bytes res/drawable-xhdpi/menu_arrow_top.png | Bin 0 -> 1581 bytes res/drawable/border.xml | 13 + ...lector_background_transition_holo_dark.xml | 20 + res/drawable/md__list_selector_holo_dark.xml | 27 + res/layout-land/download.xml | 12 +- res/layout/button_bar.xml | 49 - res/layout/download_button_bar_flipper.xml | 4 +- res/layout/lyrics.xml | 116 +- res/layout/main.xml | 43 +- res/layout/menu.xml | 91 + res/layout/menu_row_category.xml | 5 + res/layout/menu_row_item.xml | 5 + res/layout/now_playing.xml | 75 + res/layout/search.xml | 32 +- res/layout/select_album.xml | 4 +- res/layout/select_artist.xml | 11 +- res/layout/select_genre.xml | 4 +- res/layout/select_playlist.xml | 50 +- res/menu/common.xml | 24 - res/values-fr/strings.xml | 298 ++++ res/values-hu/strings.xml | 298 ++++ res/values/colors.xml | 2 + res/values/strings.xml | 2 + res/values/styles.xml | 138 +- .../androidapp/activity/DownloadActivity.java | 2 +- .../androidapp/activity/LyricsActivity.java | 2 +- .../androidapp/activity/MainActivity.java | 23 +- .../androidapp/activity/SearchActivity.java | 1 - .../activity/SelectAlbumActivity.java | 24 +- .../activity/SelectArtistActivity.java | 24 +- .../activity/SelectGenreActivity.java | 22 +- .../activity/SelectPlaylistActivity.java | 21 +- .../activity/SubsonicTabActivity.java | 529 +++--- .../androidapp/service/DownloadService.java | 2 + .../service/DownloadServiceImpl.java | 34 +- .../ultrasonic/androidapp/util/Util.java | 76 +- 197 files changed, 10330 insertions(+), 1264 deletions(-) create mode 100644 android-menudrawer-master/.gitignore create mode 100644 android-menudrawer-master/.travis.yml create mode 100644 android-menudrawer-master/CHANGELOG.md create mode 100644 android-menudrawer-master/LICENSE create mode 100644 android-menudrawer-master/README.md create mode 100644 android-menudrawer-master/art/menu_arrow.svg create mode 100644 android-menudrawer-master/checkstyle.xml create mode 100644 android-menudrawer-master/library/AndroidManifest.xml create mode 100644 android-menudrawer-master/library/build.xml create mode 100644 android-menudrawer-master/library/pom.xml create mode 100644 android-menudrawer-master/library/project.properties create mode 100644 android-menudrawer-master/library/res/values/attrs.xml create mode 100644 android-menudrawer-master/library/res/values/colors.xml create mode 100644 android-menudrawer-master/library/res/values/ids.xml create mode 100644 android-menudrawer-master/library/res/values/styles.xml create mode 100644 android-menudrawer-master/library/src/net/simonvt/menudrawer/BottomDrawer.java create mode 100644 android-menudrawer-master/library/src/net/simonvt/menudrawer/BottomStaticDrawer.java create mode 100644 android-menudrawer-master/library/src/net/simonvt/menudrawer/BuildLayerFrameLayout.java create mode 100644 android-menudrawer-master/library/src/net/simonvt/menudrawer/ColorDrawable.java create mode 100644 android-menudrawer-master/library/src/net/simonvt/menudrawer/DraggableDrawer.java create mode 100644 android-menudrawer-master/library/src/net/simonvt/menudrawer/FloatScroller.java create mode 100644 android-menudrawer-master/library/src/net/simonvt/menudrawer/HorizontalDrawer.java create mode 100644 android-menudrawer-master/library/src/net/simonvt/menudrawer/LeftDrawer.java create mode 100644 android-menudrawer-master/library/src/net/simonvt/menudrawer/LeftStaticDrawer.java create mode 100644 android-menudrawer-master/library/src/net/simonvt/menudrawer/MenuDrawer.java create mode 100644 android-menudrawer-master/library/src/net/simonvt/menudrawer/NoClickThroughFrameLayout.java create mode 100644 android-menudrawer-master/library/src/net/simonvt/menudrawer/PeekInterpolator.java create mode 100644 android-menudrawer-master/library/src/net/simonvt/menudrawer/Position.java create mode 100644 android-menudrawer-master/library/src/net/simonvt/menudrawer/RightDrawer.java create mode 100644 android-menudrawer-master/library/src/net/simonvt/menudrawer/RightStaticDrawer.java create mode 100644 android-menudrawer-master/library/src/net/simonvt/menudrawer/Scroller.java create mode 100644 android-menudrawer-master/library/src/net/simonvt/menudrawer/SinusoidalInterpolator.java create mode 100644 android-menudrawer-master/library/src/net/simonvt/menudrawer/SmoothInterpolator.java create mode 100644 android-menudrawer-master/library/src/net/simonvt/menudrawer/StaticDrawer.java create mode 100644 android-menudrawer-master/library/src/net/simonvt/menudrawer/TopDrawer.java create mode 100644 android-menudrawer-master/library/src/net/simonvt/menudrawer/TopStaticDrawer.java create mode 100644 android-menudrawer-master/library/src/net/simonvt/menudrawer/VerticalDrawer.java create mode 100644 android-menudrawer-master/pom.xml create mode 100644 android-menudrawer-master/samples/AndroidManifest.xml create mode 100644 android-menudrawer-master/samples/build.xml create mode 100644 android-menudrawer-master/samples/libs/android-support-v4-r10.jar create mode 100644 android-menudrawer-master/samples/pom.xml create mode 100644 android-menudrawer-master/samples/project.properties create mode 100644 android-menudrawer-master/samples/res/drawable-hdpi-v14/menu_arrow.png create mode 100644 android-menudrawer-master/samples/res/drawable-hdpi-v14/menu_arrow_bottom.png create mode 100644 android-menudrawer-master/samples/res/drawable-hdpi-v14/menu_arrow_right.png create mode 100644 android-menudrawer-master/samples/res/drawable-hdpi-v14/menu_arrow_top.png create mode 100644 android-menudrawer-master/samples/res/drawable-hdpi/ic_action_refresh_dark.png create mode 100644 android-menudrawer-master/samples/res/drawable-hdpi/ic_action_select_all_dark.png create mode 100644 android-menudrawer-master/samples/res/drawable-hdpi/ic_launcher.png create mode 100644 android-menudrawer-master/samples/res/drawable-hdpi/ic_menu_moreoverflow_normal_holo_light.png create mode 100644 android-menudrawer-master/samples/res/drawable-hdpi/md__category_background.9.png create mode 100644 android-menudrawer-master/samples/res/drawable-hdpi/md__list_focused_holo.9.png create mode 100644 android-menudrawer-master/samples/res/drawable-hdpi/md__list_longpressed_holo.9.png create mode 100644 android-menudrawer-master/samples/res/drawable-hdpi/md__list_pressed_holo_dark.9.png create mode 100644 android-menudrawer-master/samples/res/drawable-hdpi/md__list_selector_disabled_holo_dark.9.png create mode 100644 android-menudrawer-master/samples/res/drawable-hdpi/menu_arrow.png create mode 100644 android-menudrawer-master/samples/res/drawable-hdpi/menu_arrow_bottom.png create mode 100644 android-menudrawer-master/samples/res/drawable-hdpi/menu_arrow_right.png create mode 100644 android-menudrawer-master/samples/res/drawable-hdpi/menu_arrow_top.png create mode 100644 android-menudrawer-master/samples/res/drawable-mdpi-v14/menu_arrow.png create mode 100644 android-menudrawer-master/samples/res/drawable-mdpi-v14/menu_arrow_bottom.png create mode 100644 android-menudrawer-master/samples/res/drawable-mdpi-v14/menu_arrow_right.png create mode 100644 android-menudrawer-master/samples/res/drawable-mdpi-v14/menu_arrow_top.png create mode 100644 android-menudrawer-master/samples/res/drawable-mdpi/ic_action_refresh_dark.png create mode 100644 android-menudrawer-master/samples/res/drawable-mdpi/ic_action_select_all_dark.png create mode 100644 android-menudrawer-master/samples/res/drawable-mdpi/ic_launcher.png create mode 100644 android-menudrawer-master/samples/res/drawable-mdpi/ic_menu_moreoverflow_normal_holo_light.png create mode 100644 android-menudrawer-master/samples/res/drawable-mdpi/md__category_background.9.png create mode 100644 android-menudrawer-master/samples/res/drawable-mdpi/md__list_focused_holo.9.png create mode 100644 android-menudrawer-master/samples/res/drawable-mdpi/md__list_longpressed_holo.9.png create mode 100644 android-menudrawer-master/samples/res/drawable-mdpi/md__list_pressed_holo_dark.9.png create mode 100644 android-menudrawer-master/samples/res/drawable-mdpi/md__list_selector_disabled_holo_dark.9.png create mode 100644 android-menudrawer-master/samples/res/drawable-mdpi/menu_arrow.png create mode 100644 android-menudrawer-master/samples/res/drawable-mdpi/menu_arrow_bottom.png create mode 100644 android-menudrawer-master/samples/res/drawable-mdpi/menu_arrow_right.png create mode 100644 android-menudrawer-master/samples/res/drawable-mdpi/menu_arrow_top.png create mode 100644 android-menudrawer-master/samples/res/drawable-xhdpi-v14/menu_arrow.png create mode 100644 android-menudrawer-master/samples/res/drawable-xhdpi-v14/menu_arrow_bottom.png create mode 100644 android-menudrawer-master/samples/res/drawable-xhdpi-v14/menu_arrow_right.png create mode 100644 android-menudrawer-master/samples/res/drawable-xhdpi-v14/menu_arrow_top.png create mode 100644 android-menudrawer-master/samples/res/drawable-xhdpi/ic_action_refresh_dark.png create mode 100644 android-menudrawer-master/samples/res/drawable-xhdpi/ic_action_select_all_dark.png create mode 100644 android-menudrawer-master/samples/res/drawable-xhdpi/ic_launcher.png create mode 100644 android-menudrawer-master/samples/res/drawable-xhdpi/ic_menu_moreoverflow_normal_holo_light.png create mode 100644 android-menudrawer-master/samples/res/drawable-xhdpi/md__category_background.9.png create mode 100644 android-menudrawer-master/samples/res/drawable-xhdpi/md__list_focused_holo.9.png create mode 100644 android-menudrawer-master/samples/res/drawable-xhdpi/md__list_longpressed_holo.9.png create mode 100644 android-menudrawer-master/samples/res/drawable-xhdpi/md__list_pressed_holo_dark.9.png create mode 100644 android-menudrawer-master/samples/res/drawable-xhdpi/md__list_selector_disabled_holo_dark.9.png create mode 100644 android-menudrawer-master/samples/res/drawable-xhdpi/menu_arrow.png create mode 100644 android-menudrawer-master/samples/res/drawable-xhdpi/menu_arrow_bottom.png create mode 100644 android-menudrawer-master/samples/res/drawable-xhdpi/menu_arrow_right.png create mode 100644 android-menudrawer-master/samples/res/drawable-xhdpi/menu_arrow_top.png create mode 100644 android-menudrawer-master/samples/res/drawable/md__list_selector_background_transition_holo_dark.xml create mode 100644 android-menudrawer-master/samples/res/drawable/md__list_selector_holo_dark.xml create mode 100644 android-menudrawer-master/samples/res/layout/activity_bottommenu.xml create mode 100644 android-menudrawer-master/samples/res/layout/activity_contentsample.xml create mode 100644 android-menudrawer-master/samples/res/layout/activity_layoutsample.xml create mode 100644 android-menudrawer-master/samples/res/layout/activity_rightmenu.xml create mode 100644 android-menudrawer-master/samples/res/layout/activity_staticsample.xml create mode 100644 android-menudrawer-master/samples/res/layout/activity_topmenu.xml create mode 100644 android-menudrawer-master/samples/res/layout/activity_viewpagersample.xml create mode 100644 android-menudrawer-master/samples/res/layout/activity_windowsample.xml create mode 100644 android-menudrawer-master/samples/res/layout/list_row_sample.xml create mode 100644 android-menudrawer-master/samples/res/layout/main.xml create mode 100644 android-menudrawer-master/samples/res/layout/menu_bottom.xml create mode 100644 android-menudrawer-master/samples/res/layout/menu_row_category.xml create mode 100644 android-menudrawer-master/samples/res/layout/menu_row_item.xml create mode 100644 android-menudrawer-master/samples/res/layout/menu_scrollview.xml create mode 100644 android-menudrawer-master/samples/res/layout/menu_top.xml create mode 100644 android-menudrawer-master/samples/res/values-v14/colors.xml create mode 100644 android-menudrawer-master/samples/res/values-v14/themes.xml create mode 100644 android-menudrawer-master/samples/res/values/colors.xml create mode 100644 android-menudrawer-master/samples/res/values/strings.xml create mode 100644 android-menudrawer-master/samples/res/values/styles.xml create mode 100644 android-menudrawer-master/samples/res/values/themes.xml create mode 100644 android-menudrawer-master/samples/src/net/simonvt/menudrawer/samples/ActionBarOverlaySample.java create mode 100644 android-menudrawer-master/samples/src/net/simonvt/menudrawer/samples/BottomMenuSample.java create mode 100644 android-menudrawer-master/samples/src/net/simonvt/menudrawer/samples/ContentSample.java create mode 100644 android-menudrawer-master/samples/src/net/simonvt/menudrawer/samples/LayoutSample.java create mode 100644 android-menudrawer-master/samples/src/net/simonvt/menudrawer/samples/ListActivitySample.java create mode 100644 android-menudrawer-master/samples/src/net/simonvt/menudrawer/samples/RightMenuSample.java create mode 100644 android-menudrawer-master/samples/src/net/simonvt/menudrawer/samples/SamplesActivity.java create mode 100644 android-menudrawer-master/samples/src/net/simonvt/menudrawer/samples/StaticDrawerSample.java create mode 100644 android-menudrawer-master/samples/src/net/simonvt/menudrawer/samples/TopMenuSample.java create mode 100644 android-menudrawer-master/samples/src/net/simonvt/menudrawer/samples/ViewPagerSample.java create mode 100644 android-menudrawer-master/samples/src/net/simonvt/menudrawer/samples/WindowSample.java create mode 100644 assets/html/fr/index.html create mode 100644 gen/net/simonvt/menudrawer/R.java create mode 100644 res/drawable-hdpi-v14/menu_arrow.png create mode 100644 res/drawable-hdpi-v14/menu_arrow_bottom.png create mode 100644 res/drawable-hdpi-v14/menu_arrow_right.png create mode 100644 res/drawable-hdpi-v14/menu_arrow_top.png create mode 100644 res/drawable-hdpi/menu_arrow.png create mode 100644 res/drawable-hdpi/menu_arrow_bottom.png create mode 100644 res/drawable-hdpi/menu_arrow_right.png create mode 100644 res/drawable-hdpi/menu_arrow_top.png create mode 100644 res/drawable-mdpi-v14/menu_arrow.png create mode 100644 res/drawable-mdpi-v14/menu_arrow_bottom.png create mode 100644 res/drawable-mdpi-v14/menu_arrow_right.png create mode 100644 res/drawable-mdpi-v14/menu_arrow_top.png create mode 100644 res/drawable-mdpi/menu_arrow.png create mode 100644 res/drawable-mdpi/menu_arrow_bottom.png create mode 100644 res/drawable-mdpi/menu_arrow_right.png create mode 100644 res/drawable-mdpi/menu_arrow_top.png create mode 100644 res/drawable-xhdpi-v14/menu_arrow.png create mode 100644 res/drawable-xhdpi-v14/menu_arrow_bottom.png create mode 100644 res/drawable-xhdpi-v14/menu_arrow_right.png create mode 100644 res/drawable-xhdpi-v14/menu_arrow_top.png create mode 100644 res/drawable-xhdpi/md__category_background.9.png create mode 100644 res/drawable-xhdpi/md__list_focused_holo.9.png create mode 100644 res/drawable-xhdpi/md__list_longpressed_holo.9.png create mode 100644 res/drawable-xhdpi/md__list_pressed_holo_dark.9.png create mode 100644 res/drawable-xhdpi/md__list_selector_disabled_holo_dark.9.png create mode 100644 res/drawable-xhdpi/menu_arrow.png create mode 100644 res/drawable-xhdpi/menu_arrow_bottom.png create mode 100644 res/drawable-xhdpi/menu_arrow_right.png create mode 100644 res/drawable-xhdpi/menu_arrow_top.png create mode 100644 res/drawable/border.xml create mode 100644 res/drawable/md__list_selector_background_transition_holo_dark.xml create mode 100644 res/drawable/md__list_selector_holo_dark.xml delete mode 100644 res/layout/button_bar.xml create mode 100644 res/layout/menu.xml create mode 100644 res/layout/menu_row_category.xml create mode 100644 res/layout/menu_row_item.xml create mode 100644 res/layout/now_playing.xml delete mode 100644 res/menu/common.xml create mode 100644 res/values-fr/strings.xml create mode 100644 res/values-hu/strings.xml diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 183c145b..e2fb2e2b 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -3,7 +3,7 @@ package="com.thejoshwa.ultrasonic.androidapp" a:installLocation="auto" a:versionCode="8" - a:versionName="1.0.1.2" > + a:versionName="1.0.1.3" > diff --git a/android-menudrawer-master/.gitignore b/android-menudrawer-master/.gitignore new file mode 100644 index 00000000..fdb137a8 --- /dev/null +++ b/android-menudrawer-master/.gitignore @@ -0,0 +1,30 @@ +/* + +!.gitignore +!.travis.yml +!CHANGELOG.md +!README.md +!LICENSE +!checkstyle.xml +!pom.xml + +!art/ + +!library/ +library/* +!library/src/ +!library/res/ +!library/AndroidManifest.xml +!library/build.xml +!library/pom.xml +!library/project.properties + +!samples/ +samples/* +!samples/src/ +!samples/res/ +!samples/libs/ +!samples/AndroidManifest.xml +!samples/build.xml +!samples/pom.xml +!samples/project.properties diff --git a/android-menudrawer-master/.travis.yml b/android-menudrawer-master/.travis.yml new file mode 100644 index 00000000..ee6ec5ca --- /dev/null +++ b/android-menudrawer-master/.travis.yml @@ -0,0 +1,18 @@ +language: java + +notifications: + email: false + +before_install: + - wget http://dl.google.com/android/android-sdk_r21.0.1-linux.tgz + - tar -zxf android-sdk_r21.0.1-linux.tgz + - export ANDROID_HOME=~/builds/SimonVT/android-menudrawer/android-sdk-linux + - export PATH=${PATH}:${ANDROID_HOME}/tools:${ANDROID_HOME}/platform-tools + - TOOLS=$(android list sdk --no-ui | grep "Android SDK Platform-tools" | cut -d"-" -f1) + - android update sdk --filter "$TOOLS" --no-ui --force + - SDK=$(android list sdk --no-ui | grep ", API 16," | cut -d"-" -f1) + - android update sdk --filter "$SDK" --no-ui --force + +install: + - "mvn package --quiet -DskipTests" + - "mvn verify" diff --git a/android-menudrawer-master/CHANGELOG.md b/android-menudrawer-master/CHANGELOG.md new file mode 100644 index 00000000..a570a8e4 --- /dev/null +++ b/android-menudrawer-master/CHANGELOG.md @@ -0,0 +1,44 @@ +Change Log +========== + +Version 2.0.2 *(2013-03-31)* +---------------------------- + * Added listener that makes it possible to disabllow intercepting touch events over + certain views + * Added setter for the maximum animation duration + * Added getter for menu size + * Added methods that enable/disable indicator animation + * Fix: Removed log statements + * Fix: Drawing the active indicator might cause crash if the active view is not a + child of the MenuDrawer + * Fix: Crash in static drawer if no active indicator bitmap was set + +Version 2.0.1 *(2013-02-12)* +---------------------------- + * Indicator now animates between active views + * Fixed restoring state for right/bottom drawer + +Version 2.0.0 *(2013-01-23)* +---------------------------- + + * Major API changes + + * All classes are now in the net.simonvt.menudrawer package. + * MenuDrawerManager no longet exists. Menu is added with MenuDrawer#attach(...). + * Drawer position is now selected with Position enums instead of int constants. + * Width methods/attributes have been renamed to 'size'. + + * Added top/bottom drawer. + * Added static (non-draggable, always visible) drawers. + * The touch bezel size is now configurable with MenuDrawer#setTouchBezelSize(int). + * MenuDrawer#saveState() now only required when dragging the entire window. + * Drawers can now be used in XML layouts. + * Fix: Scroller class caused conflicts with other libraries. + * Fix: No more overdraw when the drawer is closed. + * Fix: Content no longer falls behind when slowly dragging. + + +Version 1.0.0 *(2012-10-30)* +---------------------------- + +Initial release. diff --git a/android-menudrawer-master/LICENSE b/android-menudrawer-master/LICENSE new file mode 100644 index 00000000..7a4a3ea2 --- /dev/null +++ b/android-menudrawer-master/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/android-menudrawer-master/README.md b/android-menudrawer-master/README.md new file mode 100644 index 00000000..17732748 --- /dev/null +++ b/android-menudrawer-master/README.md @@ -0,0 +1,96 @@ +MenuDrawer +========== + +A slide-out menu implementation, which allows users to navigate between views +in your app. Most commonly the menu is revealed by either dragging the edge +of the screen, or clicking the 'up' button in the action bar. + + +Features +-------- + + * The menu can be positioned along all four edges. + * Supports attaching an always visible, non-draggable menu, which is useful + on e.g. tablets. + * The menu can wrap both the content and the entire window. + * Allows the drawer to be opened by dragging the edge, the entire screen or + not at all. + * Can be used in XML layouts. + * Indicator that shows which screen is currently visible. + + +Usage +===== + +This library is very simple to use. It requires no extension of custom classes, +it's simply added to an activity by calling one of the `MenuDrawer#attach(...)` +methods. + +For more examples on how to use this library, check out the sample app. + + +Left menu +--------- +```java +public class SampleActivity extends Activity { + + private MenuDrawer mDrawer; + + @Override + protected void onCreate(Bundle state) { + super.onCreate(state); + mDrawer = MenuDrawer.attach(this); + mDrawer.setContentView(R.layout.activity_sample); + mDrawer.setMenuView(R.layout.menu_sample); + } +} +``` + + +Right menu +---------- +```java +public class SampleActivity extends Activity { + + private MenuDrawer mDrawer; + + @Override + protected void onCreate(Bundle state) { + super.onCreate(state); + mDrawer = MenuDrawer.attach(this, Position.RIGHT); + mDrawer.setContentView(R.layout.activity_sample); + mDrawer.setMenuView(R.layout.menu_sample); + } +} +``` + + +Credits +======= + + * Cyril Mottier for his [articles][1] on the pattern + + +License +======= + + Copyright 2012 Simon Vig Therkildsen + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + + + + + [1]: http://android.cyrilmottier.com/?p=658 diff --git a/android-menudrawer-master/art/menu_arrow.svg b/android-menudrawer-master/art/menu_arrow.svg new file mode 100644 index 00000000..05f205a3 --- /dev/null +++ b/android-menudrawer-master/art/menu_arrow.svg @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/android-menudrawer-master/checkstyle.xml b/android-menudrawer-master/checkstyle.xml new file mode 100644 index 00000000..e5fb679c --- /dev/null +++ b/android-menudrawer-master/checkstyle.xml @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/android-menudrawer-master/library/AndroidManifest.xml b/android-menudrawer-master/library/AndroidManifest.xml new file mode 100644 index 00000000..a77d28a9 --- /dev/null +++ b/android-menudrawer-master/library/AndroidManifest.xml @@ -0,0 +1,8 @@ + + + + + diff --git a/android-menudrawer-master/library/build.xml b/android-menudrawer-master/library/build.xml new file mode 100644 index 00000000..e5eb1dc0 --- /dev/null +++ b/android-menudrawer-master/library/build.xml @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/android-menudrawer-master/library/pom.xml b/android-menudrawer-master/library/pom.xml new file mode 100644 index 00000000..b5bd8810 --- /dev/null +++ b/android-menudrawer-master/library/pom.xml @@ -0,0 +1,36 @@ + + + + 4.0.0 + + + net.simonvt + android-menudrawer-parent + 2.0.3-SNAPSHOT + ../pom.xml + + + android-menudrawer + Android MenuDrawer + apklib + + + + com.google.android + android + provided + + + + + src + + + + com.jayway.maven.plugins.android.generation2 + android-maven-plugin + true + + + + diff --git a/android-menudrawer-master/library/project.properties b/android-menudrawer-master/library/project.properties new file mode 100644 index 00000000..87089b82 --- /dev/null +++ b/android-menudrawer-master/library/project.properties @@ -0,0 +1,16 @@ +# This file is automatically generated by Android Tools. +# Do not modify this file -- YOUR CHANGES WILL BE ERASED! +# +# This file must be checked in Version Control Systems. +# +# To customize properties used by the Ant build system edit +# "ant.properties", and override values to adapt the script to your +# project structure. +# +# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home): +#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt + +android.library=true +# Project target. +target=android-16 + diff --git a/android-menudrawer-master/library/res/values/attrs.xml b/android-menudrawer-master/library/res/values/attrs.xml new file mode 100644 index 00000000..c8ec7797 --- /dev/null +++ b/android-menudrawer-master/library/res/values/attrs.xml @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/android-menudrawer-master/library/res/values/colors.xml b/android-menudrawer-master/library/res/values/colors.xml new file mode 100644 index 00000000..2866c6ab --- /dev/null +++ b/android-menudrawer-master/library/res/values/colors.xml @@ -0,0 +1,6 @@ + + + + #FF555555 + + diff --git a/android-menudrawer-master/library/res/values/ids.xml b/android-menudrawer-master/library/res/values/ids.xml new file mode 100644 index 00000000..c6001910 --- /dev/null +++ b/android-menudrawer-master/library/res/values/ids.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/android-menudrawer-master/library/res/values/styles.xml b/android-menudrawer-master/library/res/values/styles.xml new file mode 100644 index 00000000..415be6d2 --- /dev/null +++ b/android-menudrawer-master/library/res/values/styles.xml @@ -0,0 +1,11 @@ + + + + + diff --git a/android-menudrawer-master/library/src/net/simonvt/menudrawer/BottomDrawer.java b/android-menudrawer-master/library/src/net/simonvt/menudrawer/BottomDrawer.java new file mode 100644 index 00000000..17f41e2c --- /dev/null +++ b/android-menudrawer-master/library/src/net/simonvt/menudrawer/BottomDrawer.java @@ -0,0 +1,226 @@ +package net.simonvt.menudrawer; + +import android.app.Activity; +import android.content.Context; +import android.graphics.Canvas; +import android.graphics.drawable.GradientDrawable; +import android.util.AttributeSet; +import android.view.MotionEvent; + +public class BottomDrawer extends VerticalDrawer { + + private int mIndicatorLeft; + + BottomDrawer(Activity activity, int dragMode) { + super(activity, dragMode); + } + + public BottomDrawer(Context context) { + super(context); + } + + public BottomDrawer(Context context, AttributeSet attrs) { + super(context, attrs); + } + + public BottomDrawer(Context context, AttributeSet attrs, int defStyle) { + super(context, attrs, defStyle); + } + + @Override + public void openMenu(boolean animate) { + animateOffsetTo(-mMenuSize, 0, animate); + } + + @Override + public void closeMenu(boolean animate) { + animateOffsetTo(0, 0, animate); + } + + @Override + public void setDropShadowColor(int color) { + final int endColor = color & 0x00FFFFFF; + mDropShadowDrawable = new GradientDrawable(GradientDrawable.Orientation.TOP_BOTTOM, + new int[] { + color, + endColor, + }); + invalidate(); + } + + @Override + protected void onLayout(boolean changed, int l, int t, int r, int b) { + final int width = r - l; + final int height = b - t; + final int offsetPixels = (int) mOffsetPixels; + final int menuSize = mMenuSize; + + mMenuContainer.layout(0, height - menuSize, width, height); + offsetMenu(offsetPixels); + + if (USE_TRANSLATIONS) { + mContentContainer.layout(0, 0, width, height); + } else { + mContentContainer.layout(0, offsetPixels, width, height + offsetPixels); + } + } + + /** + * Offsets the menu relative to its original position based on the position of the content. + * + * @param offsetPixels The number of pixels the content if offset. + */ + private void offsetMenu(int offsetPixels) { + if (mOffsetMenu && mMenuSize != 0) { + final int height = getHeight(); + final int menuSize = mMenuSize; + final float openRatio = (menuSize + (float) offsetPixels) / menuSize; + + if (USE_TRANSLATIONS) { + if (offsetPixels != 0) { + final int offset = (int) (0.25f * (openRatio * menuSize)); + mMenuContainer.setTranslationY(offset); + } else { + mMenuContainer.setTranslationY(height + menuSize); + } + + } else { + final int oldMenuTop = mMenuContainer.getTop(); + final int offsetBy = (int) (0.25f * (openRatio * menuSize)); + final int offset = height - mMenuSize + offsetBy - oldMenuTop; + mMenuContainer.offsetTopAndBottom(offset); + mMenuContainer.setVisibility(offsetPixels == 0 ? INVISIBLE : VISIBLE); + } + } + } + + @Override + protected void drawDropShadow(Canvas canvas, int offsetPixels) { + final int width = getWidth(); + final int height = getHeight(); + + mDropShadowDrawable.setBounds(0, height + offsetPixels, width, height + offsetPixels + mDropShadowSize); + mDropShadowDrawable.draw(canvas); + } + + @Override + protected void drawMenuOverlay(Canvas canvas, int offsetPixels) { + final int width = getWidth(); + final int height = getHeight(); + final float openRatio = ((float) Math.abs(offsetPixels)) / mMenuSize; + + mMenuOverlay.setBounds(0, height + offsetPixels, width, height); + mMenuOverlay.setAlpha((int) (MAX_MENU_OVERLAY_ALPHA * (1.f - openRatio))); + mMenuOverlay.draw(canvas); + } + + @Override + protected void drawIndicator(Canvas canvas, int offsetPixels) { + if (mActiveView != null && isViewDescendant(mActiveView)) { + Integer position = (Integer) mActiveView.getTag(R.id.mdActiveViewPosition); + final int pos = position == null ? 0 : position; + + if (pos == mActivePosition) { + final int height = getHeight(); + final int menuHeight = mMenuSize; + final int indicatorHeight = mActiveIndicator.getHeight(); + + final float openRatio = ((float) Math.abs(offsetPixels)) / menuHeight; + + mActiveView.getDrawingRect(mActiveRect); + offsetDescendantRectToMyCoords(mActiveView, mActiveRect); + final int indicatorWidth = mActiveIndicator.getWidth(); + + final float interpolatedRatio = 1.f - INDICATOR_INTERPOLATOR.getInterpolation((1.f - openRatio)); + final int interpolatedHeight = (int) (indicatorHeight * interpolatedRatio); + + final int indicatorBottom = height + offsetPixels + interpolatedHeight; + final int indicatorTop = indicatorBottom - indicatorHeight; + if (mIndicatorAnimating) { + final int finalLeft = mActiveRect.left + ((mActiveRect.width() - indicatorWidth) / 2); + final int startLeft = mIndicatorStartPos; + final int diff = finalLeft - startLeft; + final int startOffset = (int) (diff * mIndicatorOffset); + mIndicatorLeft = startLeft + startOffset; + } else { + mIndicatorLeft = mActiveRect.left + ((mActiveRect.width() - indicatorWidth) / 2); + } + + canvas.save(); + canvas.clipRect(mIndicatorLeft, height + offsetPixels, mIndicatorLeft + indicatorWidth, + indicatorBottom); + canvas.drawBitmap(mActiveIndicator, mIndicatorLeft, indicatorTop, null); + canvas.restore(); + } + } + } + + @Override + protected int getIndicatorStartPos() { + return mIndicatorLeft; + } + + @Override + protected void initPeekScroller() { + final int dx = -mMenuSize / 3; + mPeekScroller.startScroll(0, 0, dx, 0, PEEK_DURATION); + } + + @Override + protected void onOffsetPixelsChanged(int offsetPixels) { + if (USE_TRANSLATIONS) { + mContentContainer.setTranslationY(offsetPixels); + offsetMenu(offsetPixels); + invalidate(); + } else { + mContentContainer.offsetTopAndBottom(offsetPixels - mContentContainer.getTop()); + offsetMenu(offsetPixels); + invalidate(); + } + } + + ////////////////////////////////////////////////////////////////////// + // Touch handling + ////////////////////////////////////////////////////////////////////// + + @Override + protected boolean isContentTouch(MotionEvent ev) { + return ev.getY() < getHeight() + mOffsetPixels; + } + + @Override + protected boolean onDownAllowDrag(MotionEvent ev) { + final int height = getHeight(); + return (!mMenuVisible && mInitialMotionY >= height - mTouchSize) + || (mMenuVisible && mInitialMotionY <= height + mOffsetPixels); + } + + @Override + protected boolean onMoveAllowDrag(MotionEvent ev, float diff) { + final int height = getHeight(); + return (!mMenuVisible && mInitialMotionY >= height - mTouchSize && (diff < 0)) + || (mMenuVisible && mInitialMotionY <= height + mOffsetPixels); + } + + @Override + protected void onMoveEvent(float dx) { + setOffsetPixels(Math.max(Math.min(mOffsetPixels + dx, 0), -mMenuSize)); + } + + @Override + protected void onUpEvent(MotionEvent ev) { + final int offsetPixels = (int) mOffsetPixels; + + if (mIsDragging) { + mVelocityTracker.computeCurrentVelocity(1000, mMaxVelocity); + final int initialVelocity = (int) mVelocityTracker.getXVelocity(); + mLastMotionY = ev.getY(); + animateOffsetTo(mVelocityTracker.getYVelocity() < 0 ? -mMenuSize : 0, initialVelocity, + true); + + // Close the menu when content is clicked while the menu is visible. + } else if (mMenuVisible && ev.getY() < getHeight() + offsetPixels) { + closeMenu(); + } + } +} diff --git a/android-menudrawer-master/library/src/net/simonvt/menudrawer/BottomStaticDrawer.java b/android-menudrawer-master/library/src/net/simonvt/menudrawer/BottomStaticDrawer.java new file mode 100644 index 00000000..df4b5f49 --- /dev/null +++ b/android-menudrawer-master/library/src/net/simonvt/menudrawer/BottomStaticDrawer.java @@ -0,0 +1,85 @@ +package net.simonvt.menudrawer; + +import android.app.Activity; +import android.content.Context; +import android.graphics.Canvas; +import android.graphics.drawable.GradientDrawable; +import android.util.AttributeSet; + +public class BottomStaticDrawer extends StaticDrawer { + + private int mIndicatorLeft; + + BottomStaticDrawer(Activity activity, int dragMode) { + super(activity, dragMode); + } + + public BottomStaticDrawer(Context context) { + super(context); + } + + public BottomStaticDrawer(Context context, AttributeSet attrs) { + super(context, attrs); + } + + public BottomStaticDrawer(Context context, AttributeSet attrs, int defStyle) { + super(context, attrs, defStyle); + } + + @Override + protected void initDrawer(Context context, AttributeSet attrs, int defStyle) { + super.initDrawer(context, attrs, defStyle); + mPosition = Position.BOTTOM; + } + + @Override + public void setDropShadowColor(int color) { + final int endColor = color & 0x00FFFFFF; + mDropShadowDrawable = new GradientDrawable(GradientDrawable.Orientation.TOP_BOTTOM, new int[] { + color, + endColor, + }); + invalidate(); + } + + @Override + protected void drawIndicator(Canvas canvas) { + if (mActiveView != null && isViewDescendant(mActiveView)) { + Integer position = (Integer) mActiveView.getTag(R.id.mdActiveViewPosition); + final int pos = position == null ? 0 : position; + + if (pos == mActivePosition) { + final int height = getHeight(); + final int menuHeight = mMenuSize; + final int indicatorHeight = mActiveIndicator.getHeight(); + + mActiveView.getDrawingRect(mActiveRect); + offsetDescendantRectToMyCoords(mActiveView, mActiveRect); + final int indicatorWidth = mActiveIndicator.getWidth(); + + final int indicatorTop = height - menuHeight; + final int indicatorBottom = indicatorTop + indicatorHeight; + if (mIndicatorAnimating) { + final int finalLeft = mActiveRect.left + ((mActiveRect.width() - indicatorWidth) / 2); + final int startLeft = mIndicatorStartPos; + final int diff = finalLeft - startLeft; + final int startOffset = (int) (diff * mIndicatorOffset); + mIndicatorLeft = startLeft + startOffset; + } else { + mIndicatorLeft = mActiveRect.left + ((mActiveRect.width() - indicatorWidth) / 2); + } + + canvas.save(); + canvas.clipRect(mIndicatorLeft, indicatorTop, mIndicatorLeft + indicatorWidth, + indicatorBottom); + canvas.drawBitmap(mActiveIndicator, mIndicatorLeft, indicatorTop, null); + canvas.restore(); + } + } + } + + @Override + protected int getIndicatorStartPos() { + return mIndicatorLeft; + } +} diff --git a/android-menudrawer-master/library/src/net/simonvt/menudrawer/BuildLayerFrameLayout.java b/android-menudrawer-master/library/src/net/simonvt/menudrawer/BuildLayerFrameLayout.java new file mode 100644 index 00000000..45f5aa13 --- /dev/null +++ b/android-menudrawer-master/library/src/net/simonvt/menudrawer/BuildLayerFrameLayout.java @@ -0,0 +1,99 @@ +package net.simonvt.menudrawer; + +import android.content.Context; +import android.graphics.Canvas; +import android.util.AttributeSet; +import android.widget.FrameLayout; + +/** + * FrameLayout which caches the hardware layer if available. + *

+ * If it's not posted twice the layer either wont be built on start, or it'll be built twice. + */ +public class BuildLayerFrameLayout extends FrameLayout { + + private boolean mChanged; + + private boolean mHardwareLayersEnabled = true; + + private boolean mAttached; + + private boolean mFirst = true; + + public BuildLayerFrameLayout(Context context) { + super(context); + if (MenuDrawer.USE_TRANSLATIONS) { + setLayerType(LAYER_TYPE_HARDWARE, null); + } + } + + public BuildLayerFrameLayout(Context context, AttributeSet attrs) { + super(context, attrs); + if (MenuDrawer.USE_TRANSLATIONS) { + setLayerType(LAYER_TYPE_HARDWARE, null); + } + } + + public BuildLayerFrameLayout(Context context, AttributeSet attrs, int defStyle) { + super(context, attrs, defStyle); + if (MenuDrawer.USE_TRANSLATIONS) { + setLayerType(LAYER_TYPE_HARDWARE, null); + } + } + + void setHardwareLayersEnabled(boolean enabled) { + mHardwareLayersEnabled = enabled; + } + + @Override + protected void onAttachedToWindow() { + super.onAttachedToWindow(); + mAttached = true; + } + + @Override + protected void onDetachedFromWindow() { + super.onDetachedFromWindow(); + mAttached = false; + } + + @Override + protected void onSizeChanged(int w, int h, int oldw, int oldh) { + super.onSizeChanged(w, h, oldw, oldh); + + if (MenuDrawer.USE_TRANSLATIONS && mHardwareLayersEnabled) { + post(new Runnable() { + @Override + public void run() { + mChanged = true; + invalidate(); + } + }); + } + } + + @Override + protected void dispatchDraw(Canvas canvas) { + super.dispatchDraw(canvas); + + if (mChanged && MenuDrawer.USE_TRANSLATIONS) { + post(new Runnable() { + @Override + public void run() { + if (mAttached) { + final int layerType = getLayerType(); + // If it's already a hardware layer, it'll be built anyway. + if (layerType != LAYER_TYPE_HARDWARE || mFirst) { + mFirst = false; + setLayerType(LAYER_TYPE_HARDWARE, null); + buildLayer(); + setLayerType(LAYER_TYPE_NONE, null); + } + } + } + }); + + mChanged = false; + } + } +} diff --git a/android-menudrawer-master/library/src/net/simonvt/menudrawer/ColorDrawable.java b/android-menudrawer-master/library/src/net/simonvt/menudrawer/ColorDrawable.java new file mode 100644 index 00000000..10a35e7f --- /dev/null +++ b/android-menudrawer-master/library/src/net/simonvt/menudrawer/ColorDrawable.java @@ -0,0 +1,170 @@ +/* + * Copyright (C) 2008 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package net.simonvt.menudrawer; + +import android.content.res.Resources; +import android.graphics.Canvas; +import android.graphics.ColorFilter; +import android.graphics.Paint; +import android.graphics.PixelFormat; +import android.graphics.drawable.Drawable; + +/** + * A specialized Drawable that fills the Canvas with a specified color. + * Note that a ColorDrawable ignores the ColorFilter. + *

+ *

It can be defined in an XML file with the <color> element.

+ * + * @attr ref android.R.styleable#ColorDrawable_color + */ +public class ColorDrawable extends Drawable { + + private ColorState mState; + private final Paint mPaint = new Paint(); + + /** Creates a new black ColorDrawable. */ + public ColorDrawable() { + this(null); + } + + /** + * Creates a new ColorDrawable with the specified color. + * + * @param color The color to draw. + */ + public ColorDrawable(int color) { + this(null); + setColor(color); + } + + private ColorDrawable(ColorState state) { + mState = new ColorState(state); + } + + @Override + public int getChangingConfigurations() { + return super.getChangingConfigurations() | mState.mChangingConfigurations; + } + + @Override + public void draw(Canvas canvas) { + if ((mState.mUseColor >>> 24) != 0) { + mPaint.setColor(mState.mUseColor); + canvas.drawRect(getBounds(), mPaint); + } + } + + /** + * Gets the drawable's color value. + * + * @return int The color to draw. + */ + public int getColor() { + return mState.mUseColor; + } + + /** + * Sets the drawable's color value. This action will clobber the results of prior calls to + * {@link #setAlpha(int)} on this object, which side-affected the underlying color. + * + * @param color The color to draw. + */ + public void setColor(int color) { + if (mState.mBaseColor != color || mState.mUseColor != color) { + invalidateSelf(); + mState.mBaseColor = mState.mUseColor = color; + } + } + + /** + * Returns the alpha value of this drawable's color. + * + * @return A value between 0 and 255. + */ + public int getAlpha() { + return mState.mUseColor >>> 24; + } + + /** + * Sets the color's alpha value. + * + * @param alpha The alpha value to set, between 0 and 255. + */ + public void setAlpha(int alpha) { + alpha += alpha >> 7; // make it 0..256 + int baseAlpha = mState.mBaseColor >>> 24; + int useAlpha = baseAlpha * alpha >> 8; + int oldUseColor = mState.mUseColor; + mState.mUseColor = (mState.mBaseColor << 8 >>> 8) | (useAlpha << 24); + if (oldUseColor != mState.mUseColor) { + invalidateSelf(); + } + } + + /** + * Setting a color filter on a ColorDrawable has no effect. + * + * @param colorFilter Ignore. + */ + public void setColorFilter(ColorFilter colorFilter) { + } + + public int getOpacity() { + switch (mState.mUseColor >>> 24) { + case 255: + return PixelFormat.OPAQUE; + case 0: + return PixelFormat.TRANSPARENT; + } + return PixelFormat.TRANSLUCENT; + } + + @Override + public ConstantState getConstantState() { + mState.mChangingConfigurations = getChangingConfigurations(); + return mState; + } + + static final class ColorState extends ConstantState { + + int mBaseColor; // base color, independent of setAlpha() + int mUseColor; // basecolor modulated by setAlpha() + int mChangingConfigurations; + + ColorState(ColorState state) { + if (state != null) { + mBaseColor = state.mBaseColor; + mUseColor = state.mUseColor; + } + } + + @Override + public Drawable newDrawable() { + return new ColorDrawable(this); + } + + @Override + public Drawable newDrawable(Resources res) { + return new ColorDrawable(this); + } + + @Override + public int getChangingConfigurations() { + return mChangingConfigurations; + } + } +} diff --git a/android-menudrawer-master/library/src/net/simonvt/menudrawer/DraggableDrawer.java b/android-menudrawer-master/library/src/net/simonvt/menudrawer/DraggableDrawer.java new file mode 100644 index 00000000..77fc98e5 --- /dev/null +++ b/android-menudrawer-master/library/src/net/simonvt/menudrawer/DraggableDrawer.java @@ -0,0 +1,672 @@ +package net.simonvt.menudrawer; + +import android.app.Activity; +import android.content.Context; +import android.graphics.Canvas; +import android.os.Build; +import android.os.Bundle; +import android.os.Parcelable; +import android.util.AttributeSet; +import android.view.MotionEvent; +import android.view.VelocityTracker; +import android.view.View; +import android.view.ViewConfiguration; +import android.view.ViewGroup; +import android.view.animation.AccelerateInterpolator; +import android.view.animation.Interpolator; + +public abstract class DraggableDrawer extends MenuDrawer { + + /** + * Key used when saving menu visibility state. + */ + private static final String STATE_MENU_VISIBLE = "net.simonvt.menudrawer.MenuDrawer.menuVisible"; + + /** + * Interpolator used for stretching/retracting the active indicator. + */ + protected static final Interpolator INDICATOR_INTERPOLATOR = new AccelerateInterpolator(); + + /** + * Interpolator used for peeking at the drawer. + */ + private static final Interpolator PEEK_INTERPOLATOR = new PeekInterpolator(); + + /** + * The maximum alpha of the dark menu overlay used for dimming the menu. + */ + protected static final int MAX_MENU_OVERLAY_ALPHA = 185; + + /** + * Default delay from {@link #peekDrawer()} is called until first animation is run. + */ + private static final long DEFAULT_PEEK_START_DELAY = 5000; + + /** + * Default delay between each subsequent animation, after {@link #peekDrawer()} has been called. + */ + private static final long DEFAULT_PEEK_DELAY = 10000; + + /** + * The duration of the peek animation. + */ + protected static final int PEEK_DURATION = 5000; + + /** + * Distance in dp from closed position from where the drawer is considered closed with regards to touch events. + */ + private static final int CLOSE_ENOUGH = 3; + + /** + * Slop before starting a drag. + */ + protected int mTouchSlop; + + /** + * Runnable used when the peek animation is running. + */ + protected final Runnable mPeekRunnable = new Runnable() { + @Override + public void run() { + peekDrawerInvalidate(); + } + }; + + /** + * Runnable used when animating the drawer open/closed. + */ + private final Runnable mDragRunnable = new Runnable() { + @Override + public void run() { + postAnimationInvalidate(); + } + }; + + /** + * Current left position of the content. + */ + protected float mOffsetPixels; + + /** + * Indicates whether the drawer is currently being dragged. + */ + protected boolean mIsDragging; + + /** + * The initial X position of a drag. + */ + protected float mInitialMotionX; + + /** + * The initial Y position of a drag. + */ + protected float mInitialMotionY; + + /** + * The last X position of a drag. + */ + protected float mLastMotionX = -1; + + /** + * The last Y position of a drag. + */ + protected float mLastMotionY = -1; + + /** + * Default delay between each subsequent animation, after {@link #peekDrawer()} has been called. + */ + protected long mPeekDelay; + + /** + * Scroller used for the peek drawer animation. + */ + protected Scroller mPeekScroller; + + /** + * Velocity tracker used when animating the drawer open/closed after a drag. + */ + protected VelocityTracker mVelocityTracker; + + /** + * Maximum velocity allowed when animating the drawer open/closed. + */ + protected int mMaxVelocity; + + /** + * Indicates whether the menu should be offset when dragging the drawer. + */ + protected boolean mOffsetMenu = true; + + /** + * Distance in px from closed position from where the drawer is considered closed with regards to touch events. + */ + protected int mCloseEnough; + + /** + * Runnable used for first call to {@link #startPeek()} after {@link #peekDrawer()} has been called. + */ + private Runnable mPeekStartRunnable; + + /** + * Scroller used when animating the drawer open/closed. + */ + private Scroller mScroller; + + /** + * Indicates whether the current layer type is {@link android.view.View#LAYER_TYPE_HARDWARE}. + */ + private boolean mLayerTypeHardware; + + DraggableDrawer(Activity activity, int dragMode) { + super(activity, dragMode); + } + + public DraggableDrawer(Context context) { + super(context); + } + + public DraggableDrawer(Context context, AttributeSet attrs) { + super(context, attrs); + } + + public DraggableDrawer(Context context, AttributeSet attrs, int defStyle) { + super(context, attrs, defStyle); + } + + @Override + protected void initDrawer(Context context, AttributeSet attrs, int defStyle) { + super.initDrawer(context, attrs, defStyle); + + final ViewConfiguration configuration = ViewConfiguration.get(context); + mTouchSlop = configuration.getScaledTouchSlop(); + mMaxVelocity = configuration.getScaledMaximumFlingVelocity(); + + mScroller = new Scroller(context, MenuDrawer.SMOOTH_INTERPOLATOR); + mPeekScroller = new Scroller(context, DraggableDrawer.PEEK_INTERPOLATOR); + + mCloseEnough = dpToPx(DraggableDrawer.CLOSE_ENOUGH); + } + + public void toggleMenu(boolean animate) { + if (mDrawerState == STATE_OPEN || mDrawerState == STATE_OPENING) { + closeMenu(animate); + } else if (mDrawerState == STATE_CLOSED || mDrawerState == STATE_CLOSING) { + openMenu(animate); + } + } + + public boolean isMenuVisible() { + return mMenuVisible; + } + + public void setMenuSize(final int size) { + mMenuSize = size; + mMenuSizeSet = true; + if (mDrawerState == STATE_OPEN || mDrawerState == STATE_OPENING) { + setOffsetPixels(mMenuSize); + } + requestLayout(); + invalidate(); + } + + public void setOffsetMenuEnabled(boolean offsetMenu) { + if (offsetMenu != mOffsetMenu) { + mOffsetMenu = offsetMenu; + requestLayout(); + invalidate(); + } + } + + public boolean getOffsetMenuEnabled() { + return mOffsetMenu; + } + + public void peekDrawer() { + peekDrawer(DEFAULT_PEEK_START_DELAY, DEFAULT_PEEK_DELAY); + } + + public void peekDrawer(long delay) { + peekDrawer(DEFAULT_PEEK_START_DELAY, delay); + } + + public void peekDrawer(final long startDelay, final long delay) { + if (startDelay < 0) { + throw new IllegalArgumentException("startDelay must be zero or larger."); + } + if (delay < 0) { + throw new IllegalArgumentException("delay must be zero or larger"); + } + + removeCallbacks(mPeekRunnable); + removeCallbacks(mPeekStartRunnable); + + mPeekDelay = delay; + mPeekStartRunnable = new Runnable() { + @Override + public void run() { + startPeek(); + } + }; + postDelayed(mPeekStartRunnable, startDelay); + } + + public void setHardwareLayerEnabled(boolean enabled) { + if (enabled != mHardwareLayersEnabled) { + mHardwareLayersEnabled = enabled; + mMenuContainer.setHardwareLayersEnabled(enabled); + mContentContainer.setHardwareLayersEnabled(enabled); + stopLayerTranslation(); + } + } + + public int getTouchMode() { + return mTouchMode; + } + + public void setTouchMode(int mode) { + if (mTouchMode != mode) { + mTouchMode = mode; + updateTouchAreaSize(); + } + } + + public void setTouchBezelSize(int size) { + mTouchBezelSize = size; + } + + public int getTouchBezelSize() { + return mTouchBezelSize; + } + + /** + * Sets the number of pixels the content should be offset. + * + * @param offsetPixels The number of pixels to offset the content by. + */ + protected void setOffsetPixels(float offsetPixels) { + final int oldOffset = (int) mOffsetPixels; + final int newOffset = (int) offsetPixels; + + mOffsetPixels = offsetPixels; + + if (newOffset != oldOffset) { + onOffsetPixelsChanged(newOffset); + mMenuVisible = newOffset != 0; + } + } + + /** + * Called when the number of pixels the content should be offset by has changed. + * + * @param offsetPixels The number of pixels to offset the content by. + */ + protected abstract void onOffsetPixelsChanged(int offsetPixels); + + /** + * If possible, set the layer type to {@link android.view.View#LAYER_TYPE_HARDWARE}. + */ + protected void startLayerTranslation() { + if (USE_TRANSLATIONS && mHardwareLayersEnabled && !mLayerTypeHardware) { + mLayerTypeHardware = true; + mContentContainer.setLayerType(View.LAYER_TYPE_HARDWARE, null); + mMenuContainer.setLayerType(View.LAYER_TYPE_HARDWARE, null); + } + } + + /** + * If the current layer type is {@link android.view.View#LAYER_TYPE_HARDWARE}, this will set it to + * {@link View#LAYER_TYPE_NONE}. + */ + private void stopLayerTranslation() { + if (mLayerTypeHardware) { + mLayerTypeHardware = false; + mContentContainer.setLayerType(View.LAYER_TYPE_NONE, null); + mMenuContainer.setLayerType(View.LAYER_TYPE_NONE, null); + } + } + + /** + * Compute the touch area based on the touch mode. + */ + protected void updateTouchAreaSize() { + if (mTouchMode == TOUCH_MODE_BEZEL) { + mTouchSize = mTouchBezelSize; + } else if (mTouchMode == TOUCH_MODE_FULLSCREEN) { + mTouchSize = getMeasuredWidth(); + } else { + mTouchSize = 0; + } + } + + /** + * Called when a drag has been ended. + */ + protected void endDrag() { + mIsDragging = false; + + if (mVelocityTracker != null) { + mVelocityTracker.recycle(); + mVelocityTracker = null; + } + } + + /** + * Stops ongoing animation of the drawer. + */ + protected void stopAnimation() { + removeCallbacks(mDragRunnable); + mScroller.abortAnimation(); + stopLayerTranslation(); + } + + /** + * Called when a drawer animation has successfully completed. + */ + private void completeAnimation() { + mScroller.abortAnimation(); + final int finalX = mScroller.getFinalX(); + setOffsetPixels(finalX); + setDrawerState(finalX == 0 ? STATE_CLOSED : STATE_OPEN); + stopLayerTranslation(); + } + + /** + * Moves the drawer to the position passed. + * + * @param position The position the content is moved to. + * @param velocity Optional velocity if called by releasing a drag event. + * @param animate Whether the move is animated. + */ + protected void animateOffsetTo(int position, int velocity, boolean animate) { + endDrag(); + endPeek(); + + final int startX = (int) mOffsetPixels; + final int dx = position - startX; + if (dx == 0 || !animate) { + setOffsetPixels(position); + setDrawerState(position == 0 ? STATE_CLOSED : STATE_OPEN); + stopLayerTranslation(); + return; + } + + int duration; + + velocity = Math.abs(velocity); + if (velocity > 0) { + duration = 4 * Math.round(1000.f * Math.abs((float) dx / velocity)); + } else { + duration = (int) (600.f * Math.abs((float) dx / mMenuSize)); + } + + duration = Math.min(duration, mMaxAnimationDuration); + + if (dx > 0) { + setDrawerState(STATE_OPENING); + mScroller.startScroll(startX, 0, dx, 0, duration); + } else { + setDrawerState(STATE_CLOSING); + mScroller.startScroll(startX, 0, dx, 0, duration); + } + + startLayerTranslation(); + + postAnimationInvalidate(); + } + + /** + * Callback when each frame in the drawer animation should be drawn. + */ + private void postAnimationInvalidate() { + if (mScroller.computeScrollOffset()) { + final int oldX = (int) mOffsetPixels; + final int x = mScroller.getCurrX(); + + if (x != oldX) setOffsetPixels(x); + if (x != mScroller.getFinalX()) { + postOnAnimation(mDragRunnable); + return; + } + } + + completeAnimation(); + } + + /** + * Starts peek drawer animation. + */ + protected void startPeek() { + initPeekScroller(); + + startLayerTranslation(); + peekDrawerInvalidate(); + } + + protected abstract void initPeekScroller(); + + /** + * Callback when each frame in the peek drawer animation should be drawn. + */ + private void peekDrawerInvalidate() { + if (mPeekScroller.computeScrollOffset()) { + final int oldX = (int) mOffsetPixels; + final int x = mPeekScroller.getCurrX(); + if (x != oldX) setOffsetPixels(x); + + if (!mPeekScroller.isFinished()) { + postOnAnimation(mPeekRunnable); + return; + + } else if (mPeekDelay > 0) { + mPeekStartRunnable = new Runnable() { + @Override + public void run() { + startPeek(); + } + }; + postDelayed(mPeekStartRunnable, mPeekDelay); + } + } + + completePeek(); + } + + /** + * Called when the peek drawer animation has successfully completed. + */ + private void completePeek() { + mPeekScroller.abortAnimation(); + + setOffsetPixels(0); + + setDrawerState(STATE_CLOSED); + stopLayerTranslation(); + } + + /** + * Stops ongoing peek drawer animation. + */ + protected void endPeek() { + removeCallbacks(mPeekStartRunnable); + removeCallbacks(mPeekRunnable); + stopLayerTranslation(); + } + + protected boolean isCloseEnough() { + return Math.abs(mOffsetPixels) <= mCloseEnough; + } + + /** + * Returns true if the touch event occurs over the content. + * + * @param ev The motion event. + * @return True if the touch event occurred over the content, false otherwise. + */ + protected abstract boolean isContentTouch(MotionEvent ev); + + /** + * Returns true if dragging the content should be allowed. + * + * @param ev The motion event. + * @return True if dragging the content should be allowed, false otherwise. + */ + protected abstract boolean onDownAllowDrag(MotionEvent ev); + + /** + * Tests scrollability within child views of v given a delta of dx. + * + * @param v View to test for horizontal scrollability + * @param checkV Whether the view should be checked for draggability + * @param dx Delta scrolled in pixels + * @param x X coordinate of the active touch point + * @param y Y coordinate of the active touch point + * @return true if child views of v can be scrolled by delta of dx. + */ + protected boolean canChildScrollHorizontally(View v, boolean checkV, int dx, int x, int y) { + if (v instanceof ViewGroup) { + final ViewGroup group = (ViewGroup) v; + + final int count = group.getChildCount(); + // Count backwards - let topmost views consume scroll distance first. + for (int i = count - 1; i >= 0; i--) { + final View child = group.getChildAt(i); + + final int childLeft = child.getLeft() + supportGetTranslationX(child); + final int childRight = child.getRight() + supportGetTranslationX(child); + final int childTop = child.getTop() + supportGetTranslationY(child); + final int childBottom = child.getBottom() + supportGetTranslationY(child); + + if (x >= childLeft && x < childRight && y >= childTop && y < childBottom + && canChildScrollHorizontally(child, true, dx, x - childLeft, y - childTop)) { + return true; + } + } + } + + return checkV && mOnInterceptMoveEventListener.isViewDraggable(v, dx, x, y); + } + + /** + * Tests scrollability within child views of v given a delta of dx. + * + * @param v View to test for horizontal scrollability + * @param checkV Whether the view should be checked for draggability + * @param dx Delta scrolled in pixels + * @param x X coordinate of the active touch point + * @param y Y coordinate of the active touch point + * @return true if child views of v can be scrolled by delta of dx. + */ + protected boolean canChildScrollVertically(View v, boolean checkV, int dx, int x, int y) { + if (v instanceof ViewGroup) { + final ViewGroup group = (ViewGroup) v; + + final int count = group.getChildCount(); + // Count backwards - let topmost views consume scroll distance first. + for (int i = count - 1; i >= 0; i--) { + final View child = group.getChildAt(i); + + final int childLeft = child.getLeft() + supportGetTranslationX(child); + final int childRight = child.getRight() + supportGetTranslationX(child); + final int childTop = child.getTop() + supportGetTranslationY(child); + final int childBottom = child.getBottom() + supportGetTranslationY(child); + + if (x >= childLeft && x < childRight && y >= childTop && y < childBottom + && canChildScrollVertically(child, true, dx, x - childLeft, y - childTop)) { + return true; + } + } + } + + return checkV && mOnInterceptMoveEventListener.isViewDraggable(v, dx, x, y); + } + + private int supportGetTranslationY(View v) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { + return (int) v.getTranslationY(); + } + + return 0; + } + + private int supportGetTranslationX(View v) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { + return (int) v.getTranslationX(); + } + + return 0; + } + + /** + * Returns true if dragging the content should be allowed. + * + * @param ev The motion event. + * @return True if dragging the content should be allowed, false otherwise. + */ + protected abstract boolean onMoveAllowDrag(MotionEvent ev, float dx); + + /** + * Called when a move event has happened while dragging the content is in progress. + * + * @param dx The X difference between the last motion event and the current motion event. + */ + protected abstract void onMoveEvent(float dx); + + /** + * Called when {@link android.view.MotionEvent#ACTION_UP} of {@link android.view.MotionEvent#ACTION_CANCEL} is + * delivered to {@link net.simonvt.menudrawer.MenuDrawer#onTouchEvent(android.view.MotionEvent)}. + * + * @param ev The motion event. + */ + protected abstract void onUpEvent(MotionEvent ev); + + @Override + protected void dispatchDraw(Canvas canvas) { + super.dispatchDraw(canvas); + final int offsetPixels = (int) mOffsetPixels; + + if (offsetPixels != 0) drawMenuOverlay(canvas, offsetPixels); + if (mDropShadowEnabled) drawDropShadow(canvas, offsetPixels); + if (mActiveIndicator != null) drawIndicator(canvas, offsetPixels); + } + + /** + * Called when the content drop shadow should be drawn. + * + * @param canvas The canvas on which to draw. + * @param offsetPixels Value in pixels indicating the offset. + */ + protected abstract void drawDropShadow(Canvas canvas, int offsetPixels); + + /** + * Called when the menu overlay should be drawn. + * + * @param canvas The canvas on which to draw. + * @param offsetPixels Value in pixels indicating the offset. + */ + protected abstract void drawMenuOverlay(Canvas canvas, int offsetPixels); + + /** + * Called when the active indicator should be drawn. + * + * @param canvas The canvas on which to draw. + * @param offsetPixels Value in pixels indicating the offset. + */ + protected abstract void drawIndicator(Canvas canvas, int offsetPixels); + + void saveState(Bundle state) { + final boolean menuVisible = mDrawerState == STATE_OPEN || mDrawerState == STATE_OPENING; + state.putBoolean(STATE_MENU_VISIBLE, menuVisible); + } + + public void restoreState(Parcelable in) { + super.restoreState(in); + Bundle state = (Bundle) in; + final boolean menuOpen = state.getBoolean(STATE_MENU_VISIBLE); + if (menuOpen) { + openMenu(false); + } else { + setOffsetPixels(0); + } + mDrawerState = menuOpen ? STATE_OPEN : STATE_CLOSED; + } +} diff --git a/android-menudrawer-master/library/src/net/simonvt/menudrawer/FloatScroller.java b/android-menudrawer-master/library/src/net/simonvt/menudrawer/FloatScroller.java new file mode 100644 index 00000000..df5b445c --- /dev/null +++ b/android-menudrawer-master/library/src/net/simonvt/menudrawer/FloatScroller.java @@ -0,0 +1,175 @@ +/* + * Copyright (C) 2006 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package net.simonvt.menudrawer; + +import android.view.animation.AnimationUtils; +import android.view.animation.Interpolator; + +/** + * This class encapsulates scrolling. The duration of the scroll + * can be passed in the constructor and specifies the maximum time that + * the scrolling animation should take. Past this time, the scrolling is + * automatically moved to its final stage and computeScrollOffset() + * will always return false to indicate that scrolling is over. + */ +public class FloatScroller { + + private float mStart; + private float mFinal; + + private float mCurr; + private long mStartTime; + private int mDuration; + private float mDurationReciprocal; + private float mDeltaX; + private boolean mFinished; + private Interpolator mInterpolator; + + /** + * Create a Scroller with the specified interpolator. If the interpolator is + * null, the default (viscous) interpolator will be used. Specify whether or + * not to support progressive "flywheel" behavior in flinging. + */ + public FloatScroller(Interpolator interpolator) { + mFinished = true; + mInterpolator = interpolator; + } + + /** + * Returns whether the scroller has finished scrolling. + * + * @return True if the scroller has finished scrolling, false otherwise. + */ + public final boolean isFinished() { + return mFinished; + } + + /** + * Force the finished field to a particular value. + * + * @param finished The new finished value. + */ + public final void forceFinished(boolean finished) { + mFinished = finished; + } + + /** + * Returns how long the scroll event will take, in milliseconds. + * + * @return The duration of the scroll in milliseconds. + */ + public final int getDuration() { + return mDuration; + } + + /** + * Returns the current offset in the scroll. + * + * @return The new offset as an absolute distance from the origin. + */ + public final float getCurr() { + return mCurr; + } + + /** + * Returns the start offset in the scroll. + * + * @return The start offset as an absolute distance from the origin. + */ + public final float getStart() { + return mStart; + } + + /** + * Returns where the scroll will end. Valid only for "fling" scrolls. + * + * @return The final offset as an absolute distance from the origin. + */ + public final float getFinal() { + return mFinal; + } + + public boolean computeScrollOffset() { + if (mFinished) { + return false; + } + + int timePassed = (int) (AnimationUtils.currentAnimationTimeMillis() - mStartTime); + + if (timePassed < mDuration) { + float x = timePassed * mDurationReciprocal; + x = mInterpolator.getInterpolation(x); + mCurr = mStart + x * mDeltaX; + + } else { + mCurr = mFinal; + mFinished = true; + } + return true; + } + + public void startScroll(float start, float delta, int duration) { + mFinished = false; + mDuration = duration; + mStartTime = AnimationUtils.currentAnimationTimeMillis(); + mStart = start; + mFinal = start + delta; + mDeltaX = delta; + mDurationReciprocal = 1.0f / (float) mDuration; + } + + /** + * Stops the animation. Contrary to {@link #forceFinished(boolean)}, + * aborting the animating cause the scroller to move to the final x and y + * position + * + * @see #forceFinished(boolean) + */ + public void abortAnimation() { + mCurr = mFinal; + mFinished = true; + } + + /** + * Extend the scroll animation. This allows a running animation to scroll + * further and longer, when used with {@link #setFinal(float)}. + * + * @param extend Additional time to scroll in milliseconds. + * @see #setFinal(float) + */ + public void extendDuration(int extend) { + int passed = timePassed(); + mDuration = passed + extend; + mDurationReciprocal = 1.0f / mDuration; + mFinished = false; + } + + /** + * Returns the time elapsed since the beginning of the scrolling. + * + * @return The elapsed time in milliseconds. + */ + public int timePassed() { + return (int) (AnimationUtils.currentAnimationTimeMillis() - mStartTime); + } + + public void setFinal(float newVal) { + mFinal = newVal; + mDeltaX = mFinal - mStart; + mFinished = false; + } +} diff --git a/android-menudrawer-master/library/src/net/simonvt/menudrawer/HorizontalDrawer.java b/android-menudrawer-master/library/src/net/simonvt/menudrawer/HorizontalDrawer.java new file mode 100644 index 00000000..6f1c8300 --- /dev/null +++ b/android-menudrawer-master/library/src/net/simonvt/menudrawer/HorizontalDrawer.java @@ -0,0 +1,207 @@ +package net.simonvt.menudrawer; + +import android.app.Activity; +import android.content.Context; +import android.util.AttributeSet; +import android.view.MotionEvent; +import android.view.VelocityTracker; + +public abstract class HorizontalDrawer extends DraggableDrawer { + + private static final String TAG = "HorizontalDrawer"; + + HorizontalDrawer(Activity activity, int dragMode) { + super(activity, dragMode); + } + + public HorizontalDrawer(Context context) { + super(context); + } + + public HorizontalDrawer(Context context, AttributeSet attrs) { + super(context, attrs); + } + + public HorizontalDrawer(Context context, AttributeSet attrs, int defStyle) { + super(context, attrs, defStyle); + } + + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + final int widthMode = MeasureSpec.getMode(widthMeasureSpec); + final int heightMode = MeasureSpec.getMode(heightMeasureSpec); + + if (widthMode != MeasureSpec.EXACTLY || heightMode != MeasureSpec.EXACTLY) { + throw new IllegalStateException("Must measure with an exact size"); + } + + final int width = MeasureSpec.getSize(widthMeasureSpec); + final int height = MeasureSpec.getSize(heightMeasureSpec); + + if (!mMenuSizeSet) mMenuSize = (int) (width * 0.8f); + if (mOffsetPixels == -1) openMenu(false); + + final int menuWidthMeasureSpec = getChildMeasureSpec(widthMeasureSpec, 0, mMenuSize); + final int menuHeightMeasureSpec = getChildMeasureSpec(widthMeasureSpec, 0, height); + mMenuContainer.measure(menuWidthMeasureSpec, menuHeightMeasureSpec); + + final int contentWidthMeasureSpec = getChildMeasureSpec(widthMeasureSpec, 0, width); + final int contentHeightMeasureSpec = getChildMeasureSpec(widthMeasureSpec, 0, height); + mContentContainer.measure(contentWidthMeasureSpec, contentHeightMeasureSpec); + + setMeasuredDimension(width, height); + + updateTouchAreaSize(); + } + + @Override + public boolean onInterceptTouchEvent(MotionEvent ev) { + final int action = ev.getAction() & MotionEvent.ACTION_MASK; + + if (action == MotionEvent.ACTION_DOWN && mMenuVisible && isCloseEnough()) { + setOffsetPixels(0); + stopAnimation(); + endPeek(); + setDrawerState(STATE_CLOSED); + } + + // Always intercept events over the content while menu is visible. + if (mMenuVisible && isContentTouch(ev)) return true; + + if (mTouchMode == TOUCH_MODE_NONE) { + return false; + } + + if (action != MotionEvent.ACTION_DOWN) { + if (mIsDragging) return true; + } + + switch (action) { + case MotionEvent.ACTION_DOWN: { + mLastMotionX = mInitialMotionX = ev.getX(); + mLastMotionY = mInitialMotionY = ev.getY(); + final boolean allowDrag = onDownAllowDrag(ev); + + if (allowDrag) { + setDrawerState(mMenuVisible ? STATE_OPEN : STATE_CLOSED); + stopAnimation(); + endPeek(); + mIsDragging = false; + } + break; + } + + case MotionEvent.ACTION_MOVE: { + final float x = ev.getX(); + final float dx = x - mLastMotionX; + final float xDiff = Math.abs(dx); + final float y = ev.getY(); + final float yDiff = Math.abs(y - mLastMotionY); + + if (xDiff > mTouchSlop && xDiff > yDiff) { + if (mOnInterceptMoveEventListener != null && mTouchMode == TOUCH_MODE_FULLSCREEN + && canChildScrollHorizontally(mContentContainer, false, (int) dx, (int) x, (int) y)) { + endDrag(); // Release the velocity tracker + return false; + } + + final boolean allowDrag = onMoveAllowDrag(ev, dx); + + if (allowDrag) { + setDrawerState(STATE_DRAGGING); + mIsDragging = true; + mLastMotionX = x; + mLastMotionY = y; + } + } + break; + } + + /** + * If you click really fast, an up or cancel event is delivered here. + * Just snap content to whatever is closest. + * */ + case MotionEvent.ACTION_CANCEL: + case MotionEvent.ACTION_UP: { + if (Math.abs(mOffsetPixels) > mMenuSize / 2) { + openMenu(); + } else { + closeMenu(); + } + break; + } + } + + if (mVelocityTracker == null) mVelocityTracker = VelocityTracker.obtain(); + mVelocityTracker.addMovement(ev); + + return mIsDragging; + } + + @Override + public boolean onTouchEvent(MotionEvent ev) { + if (!mMenuVisible && !mIsDragging && (mTouchMode == TOUCH_MODE_NONE)) { + return false; + } + final int action = ev.getAction() & MotionEvent.ACTION_MASK; + + if (mVelocityTracker == null) mVelocityTracker = VelocityTracker.obtain(); + mVelocityTracker.addMovement(ev); + + switch (action) { + case MotionEvent.ACTION_DOWN: { + mLastMotionX = mInitialMotionX = ev.getX(); + mLastMotionY = mInitialMotionY = ev.getY(); + final boolean allowDrag = onDownAllowDrag(ev); + + if (allowDrag) { + stopAnimation(); + endPeek(); + startLayerTranslation(); + } + break; + } + + case MotionEvent.ACTION_MOVE: { + if (!mIsDragging) { + final float x = ev.getX(); + final float dx = x - mLastMotionX; + final float xDiff = Math.abs(dx); + final float y = ev.getY(); + final float yDiff = Math.abs(y - mLastMotionY); + + if (xDiff > mTouchSlop && xDiff > yDiff) { + final boolean allowDrag = onMoveAllowDrag(ev, dx); + + if (allowDrag) { + setDrawerState(STATE_DRAGGING); + mIsDragging = true; + mLastMotionX = x - mInitialMotionX > 0 + ? mInitialMotionX + mTouchSlop + : mInitialMotionX - mTouchSlop; + } + } + } + + if (mIsDragging) { + startLayerTranslation(); + + final float x = ev.getX(); + final float dx = x - mLastMotionX; + + mLastMotionX = x; + onMoveEvent(dx); + } + break; + } + + case MotionEvent.ACTION_CANCEL: + case MotionEvent.ACTION_UP: { + onUpEvent(ev); + break; + } + } + + return true; + } +} diff --git a/android-menudrawer-master/library/src/net/simonvt/menudrawer/LeftDrawer.java b/android-menudrawer-master/library/src/net/simonvt/menudrawer/LeftDrawer.java new file mode 100644 index 00000000..59a4fc4c --- /dev/null +++ b/android-menudrawer-master/library/src/net/simonvt/menudrawer/LeftDrawer.java @@ -0,0 +1,212 @@ +package net.simonvt.menudrawer; + +import android.app.Activity; +import android.content.Context; +import android.graphics.Canvas; +import android.graphics.drawable.GradientDrawable; +import android.util.AttributeSet; +import android.view.MotionEvent; + +public class LeftDrawer extends HorizontalDrawer { + + private int mIndicatorTop; + + LeftDrawer(Activity activity, int dragMode) { + super(activity, dragMode); + } + + public LeftDrawer(Context context) { + super(context); + } + + public LeftDrawer(Context context, AttributeSet attrs) { + super(context, attrs); + } + + public LeftDrawer(Context context, AttributeSet attrs, int defStyle) { + super(context, attrs, defStyle); + } + + @Override + public void openMenu(boolean animate) { + animateOffsetTo(mMenuSize, 0, animate); + } + + @Override + public void closeMenu(boolean animate) { + animateOffsetTo(0, 0, animate); + } + + @Override + public void setDropShadowColor(int color) { + final int endColor = color & 0x00FFFFFF; + mDropShadowDrawable = new GradientDrawable(GradientDrawable.Orientation.RIGHT_LEFT, new int[] { + color, + endColor, + }); + invalidate(); + } + + @Override + protected void onLayout(boolean changed, int l, int t, int r, int b) { + final int width = r - l; + final int height = b - t; + final int offsetPixels = (int) mOffsetPixels; + + mMenuContainer.layout(0, 0, mMenuSize, height); + offsetMenu(offsetPixels); + + if (USE_TRANSLATIONS) { + mContentContainer.layout(0, 0, width, height); + } else { + mContentContainer.layout(offsetPixels, 0, width + offsetPixels, height); + } + } + + /** + * Offsets the menu relative to its original position based on the position of the content. + * + * @param offsetPixels The number of pixels the content if offset. + */ + private void offsetMenu(int offsetPixels) { + if (mOffsetMenu && mMenuSize != 0) { + final int menuWidth = mMenuSize; + final float openRatio = (menuWidth - (float) offsetPixels) / menuWidth; + + if (USE_TRANSLATIONS) { + if (offsetPixels > 0) { + final int menuLeft = (int) (0.25f * (-openRatio * menuWidth)); + mMenuContainer.setTranslationX(menuLeft); + } else { + mMenuContainer.setTranslationX(-menuWidth); + } + + } else { + final int oldMenuLeft = mMenuContainer.getLeft(); + final int offset = (int) (0.25f * (-openRatio * menuWidth)) - oldMenuLeft; + mMenuContainer.offsetLeftAndRight(offset); + mMenuContainer.setVisibility(offsetPixels == 0 ? INVISIBLE : VISIBLE); + } + } + } + + @Override + protected void drawDropShadow(Canvas canvas, int offsetPixels) { + final int height = getHeight(); + + mDropShadowDrawable.setBounds(offsetPixels - mDropShadowSize, 0, offsetPixels, height); + mDropShadowDrawable.draw(canvas); + } + + @Override + protected void drawMenuOverlay(Canvas canvas, int offsetPixels) { + final int height = getHeight(); + final float openRatio = ((float) offsetPixels) / mMenuSize; + + mMenuOverlay.setBounds(0, 0, offsetPixels, height); + mMenuOverlay.setAlpha((int) (MAX_MENU_OVERLAY_ALPHA * (1.f - openRatio))); + mMenuOverlay.draw(canvas); + } + + @Override + protected void drawIndicator(Canvas canvas, int offsetPixels) { + if (mActiveView != null && isViewDescendant(mActiveView)) { + Integer position = (Integer) mActiveView.getTag(R.id.mdActiveViewPosition); + final int pos = position == null ? 0 : position; + + if (pos == mActivePosition) { + final float openRatio = ((float) offsetPixels) / mMenuSize; + + mActiveView.getDrawingRect(mActiveRect); + offsetDescendantRectToMyCoords(mActiveView, mActiveRect); + + final float interpolatedRatio = 1.f - INDICATOR_INTERPOLATOR.getInterpolation((1.f - openRatio)); + final int interpolatedWidth = (int) (mActiveIndicator.getWidth() * interpolatedRatio); + + if (mIndicatorAnimating) { + final int indicatorFinalTop = mActiveRect.top + ((mActiveRect.height() + - mActiveIndicator.getHeight()) / 2); + final int indicatorStartTop = mIndicatorStartPos; + final int diff = indicatorFinalTop - indicatorStartTop; + final int startOffset = (int) (diff * mIndicatorOffset); + mIndicatorTop = indicatorStartTop + startOffset; + } else { + mIndicatorTop = mActiveRect.top + ((mActiveRect.height() - mActiveIndicator.getHeight()) / 2); + } + final int right = offsetPixels; + final int left = right - interpolatedWidth; + + canvas.save(); + canvas.clipRect(left, 0, right, getHeight()); + canvas.drawBitmap(mActiveIndicator, left, mIndicatorTop, null); + canvas.restore(); + } + } + } + + @Override + protected int getIndicatorStartPos() { + return mIndicatorTop; + } + + @Override + protected void initPeekScroller() { + final int dx = mMenuSize / 3; + mPeekScroller.startScroll(0, 0, dx, 0, PEEK_DURATION); + } + + @Override + protected void onOffsetPixelsChanged(int offsetPixels) { + if (USE_TRANSLATIONS) { + mContentContainer.setTranslationX(offsetPixels); + offsetMenu(offsetPixels); + invalidate(); + } else { + mContentContainer.offsetLeftAndRight(offsetPixels - mContentContainer.getLeft()); + offsetMenu(offsetPixels); + invalidate(); + } + } + + ////////////////////////////////////////////////////////////////////// + // Touch handling + ////////////////////////////////////////////////////////////////////// + + @Override + protected boolean isContentTouch(MotionEvent ev) { + return ev.getX() > mOffsetPixels; + } + + @Override + protected boolean onDownAllowDrag(MotionEvent ev) { + return (!mMenuVisible && mInitialMotionX <= mTouchSize) + || (mMenuVisible && mInitialMotionX >= mOffsetPixels); + } + + @Override + protected boolean onMoveAllowDrag(MotionEvent ev, float diff) { + return (!mMenuVisible && mInitialMotionX <= mTouchSize && (diff > 0)) + || (mMenuVisible && mInitialMotionX >= mOffsetPixels); + } + + @Override + protected void onMoveEvent(float dx) { + setOffsetPixels(Math.min(Math.max(mOffsetPixels + dx, 0), mMenuSize)); + } + + @Override + protected void onUpEvent(MotionEvent ev) { + final int offsetPixels = (int) mOffsetPixels; + + if (mIsDragging) { + mVelocityTracker.computeCurrentVelocity(1000, mMaxVelocity); + final int initialVelocity = (int) mVelocityTracker.getXVelocity(); + mLastMotionX = ev.getX(); + animateOffsetTo(mVelocityTracker.getXVelocity() > 0 ? mMenuSize : 0, initialVelocity, true); + + // Close the menu when content is clicked while the menu is visible. + } else if (mMenuVisible && ev.getX() > offsetPixels) { + closeMenu(); + } + } +} diff --git a/android-menudrawer-master/library/src/net/simonvt/menudrawer/LeftStaticDrawer.java b/android-menudrawer-master/library/src/net/simonvt/menudrawer/LeftStaticDrawer.java new file mode 100644 index 00000000..47fa75a3 --- /dev/null +++ b/android-menudrawer-master/library/src/net/simonvt/menudrawer/LeftStaticDrawer.java @@ -0,0 +1,80 @@ +package net.simonvt.menudrawer; + +import android.app.Activity; +import android.content.Context; +import android.graphics.Canvas; +import android.graphics.drawable.GradientDrawable; +import android.util.AttributeSet; + +public class LeftStaticDrawer extends StaticDrawer { + + private int mIndicatorTop; + + LeftStaticDrawer(Activity activity, int dragMode) { + super(activity, dragMode); + } + + public LeftStaticDrawer(Context context) { + super(context); + } + + public LeftStaticDrawer(Context context, AttributeSet attrs) { + super(context, attrs); + } + + public LeftStaticDrawer(Context context, AttributeSet attrs, int defStyle) { + super(context, attrs, defStyle); + } + + @Override + protected void initDrawer(Context context, AttributeSet attrs, int defStyle) { + super.initDrawer(context, attrs, defStyle); + mPosition = Position.LEFT; + } + + @Override + public void setDropShadowColor(int color) { + final int endColor = color & 0x00FFFFFF; + mDropShadowDrawable = new GradientDrawable(GradientDrawable.Orientation.RIGHT_LEFT, new int[] { + color, + endColor, + }); + invalidate(); + } + + @Override + protected void drawIndicator(Canvas canvas) { + if (mActiveView != null && isViewDescendant(mActiveView)) { + Integer position = (Integer) mActiveView.getTag(R.id.mdActiveViewPosition); + final int pos = position == null ? 0 : position; + + if (pos == mActivePosition) { + mActiveView.getDrawingRect(mActiveRect); + offsetDescendantRectToMyCoords(mActiveView, mActiveRect); + + if (mIndicatorAnimating) { + final int indicatorFinalTop = mActiveRect.top + ((mActiveRect.height() + - mActiveIndicator.getHeight()) / 2); + final int indicatorStartTop = mIndicatorStartPos; + final int diff = indicatorFinalTop - indicatorStartTop; + final int startOffset = (int) (diff * mIndicatorOffset); + mIndicatorTop = indicatorStartTop + startOffset; + } else { + mIndicatorTop = mActiveRect.top + ((mActiveRect.height() - mActiveIndicator.getHeight()) / 2); + } + final int right = mMenuSize; + final int left = right - mActiveIndicator.getWidth(); + + canvas.save(); + canvas.clipRect(left, 0, right, getHeight()); + canvas.drawBitmap(mActiveIndicator, left, mIndicatorTop, null); + canvas.restore(); + } + } + } + + @Override + protected int getIndicatorStartPos() { + return mIndicatorTop; + } +} diff --git a/android-menudrawer-master/library/src/net/simonvt/menudrawer/MenuDrawer.java b/android-menudrawer-master/library/src/net/simonvt/menudrawer/MenuDrawer.java new file mode 100644 index 00000000..7f998e44 --- /dev/null +++ b/android-menudrawer-master/library/src/net/simonvt/menudrawer/MenuDrawer.java @@ -0,0 +1,1151 @@ +package net.simonvt.menudrawer; + +import android.app.Activity; +import android.content.Context; +import android.content.res.TypedArray; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; +import android.graphics.Rect; +import android.graphics.drawable.Drawable; +import android.os.Build; +import android.os.Bundle; +import android.os.Parcel; +import android.os.Parcelable; +import android.util.AttributeSet; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.view.ViewParent; +import android.view.ViewTreeObserver; +import android.view.animation.Interpolator; + +public abstract class MenuDrawer extends ViewGroup { + + /** + * Callback interface for changing state of the drawer. + */ + public interface OnDrawerStateChangeListener { + + /** + * Called when the drawer state changes. + * + * @param oldState The old drawer state. + * @param newState The new drawer state. + */ + void onDrawerStateChange(int oldState, int newState); + } + + /** + * Callback that is invoked when the drawer is in the process of deciding whether it should intercept the touch + * event. This lets the listener decide if the pointer is on a view that would disallow dragging of the drawer. + * This is only called when the touch mode is {@link #TOUCH_MODE_FULLSCREEN}. + */ + public interface OnInterceptMoveEventListener { + + /** + * Called for each child the pointer i on when the drawer is deciding whether to intercept the touch event. + * + * @param v View to test for draggability + * @param dx Delta drag in pixels + * @param x X coordinate of the active touch point + * @param y Y coordinate of the active touch point + * @return true if view is draggable by delta dx. + */ + boolean isViewDraggable(View v, int dx, int x, int y); + } + + /** + * Tag used when logging. + */ + private static final String TAG = "MenuDrawer"; + + /** + * Indicates whether debug code should be enabled. + */ + private static final boolean DEBUG = false; + + /** + * The time between each frame when animating the drawer. + */ + protected static final int ANIMATION_DELAY = 1000 / 60; + + /** + * The default touch bezel size of the drawer in dp. + */ + private static final int DEFAULT_DRAG_BEZEL_DP = 24; + + /** + * The default drop shadow size in dp. + */ + private static final int DEFAULT_DROP_SHADOW_DP = 6; + + /** + * Drag mode for sliding only the content view. + */ + public static final int MENU_DRAG_CONTENT = 0; + + /** + * Drag mode for sliding the entire window. + */ + public static final int MENU_DRAG_WINDOW = 1; + + /** + * Disallow opening the drawer by dragging the screen. + */ + public static final int TOUCH_MODE_NONE = 0; + + /** + * Allow opening drawer only by dragging on the edge of the screen. + */ + public static final int TOUCH_MODE_BEZEL = 1; + + /** + * Allow opening drawer by dragging anywhere on the screen. + */ + public static final int TOUCH_MODE_FULLSCREEN = 2; + + /** + * Indicates that the drawer is currently closed. + */ + public static final int STATE_CLOSED = 0; + + /** + * Indicates that the drawer is currently closing. + */ + public static final int STATE_CLOSING = 1; + + /** + * Indicates that the drawer is currently being dragged by the user. + */ + public static final int STATE_DRAGGING = 2; + + /** + * Indicates that the drawer is currently opening. + */ + public static final int STATE_OPENING = 4; + + /** + * Indicates that the drawer is currently open. + */ + public static final int STATE_OPEN = 8; + + /** + * Indicates whether to use {@link View#setTranslationX(float)} when positioning views. + */ + static final boolean USE_TRANSLATIONS = Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR1; + + /** + * Time to animate the indicator to the new active view. + */ + static final int INDICATOR_ANIM_DURATION = 800; + + /** + * The maximum animation duration. + */ + private static final int DEFAULT_ANIMATION_DURATION = 600; + + /** + * Interpolator used when animating the drawer open/closed. + */ + protected static final Interpolator SMOOTH_INTERPOLATOR = new SmoothInterpolator(); + + /** + * Drawable used as menu overlay. + */ + protected Drawable mMenuOverlay; + + /** + * Defines whether the drop shadow is enabled. + */ + protected boolean mDropShadowEnabled; + + /** + * Drawable used as content drop shadow onto the menu. + */ + protected Drawable mDropShadowDrawable; + + /** + * The size of the content drop shadow. + */ + protected int mDropShadowSize; + + /** + * Bitmap used to indicate the active view. + */ + protected Bitmap mActiveIndicator; + + /** + * The currently active view. + */ + protected View mActiveView; + + /** + * Position of the active view. This is compared to View#getTag(R.id.mdActiveViewPosition) when drawing the + * indicator. + */ + protected int mActivePosition; + + /** + * Whether the indicator should be animated between positions. + */ + private boolean mAllowIndicatorAnimation; + + /** + * Used when reading the position of the active view. + */ + protected final Rect mActiveRect = new Rect(); + + /** + * Temporary {@link Rect} used for deciding whether the view should be invalidated so the indicator can be redrawn. + */ + private final Rect mTempRect = new Rect(); + + /** + * The custom menu view set by the user. + */ + private View mMenuView; + + /** + * The parent of the menu view. + */ + protected BuildLayerFrameLayout mMenuContainer; + + /** + * The parent of the content view. + */ + protected BuildLayerFrameLayout mContentContainer; + + /** + * The size of the menu (width or height depending on the gravity). + */ + protected int mMenuSize; + + /** + * Indicates whether the menu size has been set explicity either via the theme or by calling + * {@link #setMenuSize(int)}. + */ + protected boolean mMenuSizeSet; + + /** + * Indicates whether the menu is currently visible. + */ + protected boolean mMenuVisible; + + /** + * The drag mode of the drawer. Can be either {@link #MENU_DRAG_CONTENT} or {@link #MENU_DRAG_WINDOW}. + */ + private int mDragMode = MENU_DRAG_CONTENT; + + /** + * The current drawer state. + * + * @see #STATE_CLOSED + * @see #STATE_CLOSING + * @see #STATE_DRAGGING + * @see #STATE_OPENING + * @see #STATE_OPEN + */ + protected int mDrawerState = STATE_CLOSED; + + /** + * The touch bezel size of the drawer in px. + */ + protected int mTouchBezelSize; + + /** + * The touch area size of the drawer in px. + */ + protected int mTouchSize; + + /** + * Listener used to dispatch state change events. + */ + private OnDrawerStateChangeListener mOnDrawerStateChangeListener; + + /** + * Touch mode for the Drawer. + * Possible values are {@link #TOUCH_MODE_NONE}, {@link #TOUCH_MODE_BEZEL} or {@link #TOUCH_MODE_FULLSCREEN} + * Default: {@link #TOUCH_MODE_BEZEL} + */ + protected int mTouchMode = TOUCH_MODE_BEZEL; + + /** + * Indicates whether to use {@link View#LAYER_TYPE_HARDWARE} when animating the drawer. + */ + protected boolean mHardwareLayersEnabled = true; + + /** + * The Activity the drawer is attached to. + */ + private Activity mActivity; + + /** + * Scroller used when animating the indicator to a new position. + */ + private FloatScroller mIndicatorScroller; + + /** + * Runnable used when animating the indicator to a new position. + */ + private Runnable mIndicatorRunnable = new Runnable() { + @Override + public void run() { + animateIndicatorInvalidate(); + } + }; + + /** + * The start position of the indicator when animating it to a new position. + */ + protected int mIndicatorStartPos; + + /** + * [0..1] value indicating the current progress of the animation. + */ + protected float mIndicatorOffset; + + /** + * Whether the indicator is currently animating. + */ + protected boolean mIndicatorAnimating; + + /** + * Bundle used to hold the drawers state. + */ + protected Bundle mState; + + /** + * The maximum duration of open/close animations. + */ + protected int mMaxAnimationDuration = DEFAULT_ANIMATION_DURATION; + + /** + * Callback that lets the listener override intercepting of touch events. + */ + protected OnInterceptMoveEventListener mOnInterceptMoveEventListener; + + /** + * Attaches the MenuDrawer to the Activity. + * + * @param activity The activity that the MenuDrawer will be attached to. + * @return The created MenuDrawer instance. + */ + public static MenuDrawer attach(Activity activity) { + return attach(activity, MENU_DRAG_CONTENT); + } + + /** + * Attaches the MenuDrawer to the Activity. + * + * @param activity The activity the menu drawer will be attached to. + * @param dragMode The drag mode of the drawer. Can be either {@link MenuDrawer#MENU_DRAG_CONTENT} + * or {@link MenuDrawer#MENU_DRAG_WINDOW}. + * @return The created MenuDrawer instance. + */ + public static MenuDrawer attach(Activity activity, int dragMode) { + return attach(activity, dragMode, Position.LEFT); + } + + /** + * Attaches the MenuDrawer to the Activity. + * + * @param activity The activity the menu drawer will be attached to. + * @param position Where to position the menu. + * @return The created MenuDrawer instance. + */ + public static MenuDrawer attach(Activity activity, Position position) { + return attach(activity, MENU_DRAG_CONTENT, position); + } + + /** + * Attaches the MenuDrawer to the Activity. + * + * @param activity The activity the menu drawer will be attached to. + * @param dragMode The drag mode of the drawer. Can be either {@link MenuDrawer#MENU_DRAG_CONTENT} + * or {@link MenuDrawer#MENU_DRAG_WINDOW}. + * @param position Where to position the menu. + * @return The created MenuDrawer instance. + */ + public static MenuDrawer attach(Activity activity, int dragMode, Position position) { + return attach(activity, dragMode, position, false); + } + + /** + * Attaches the MenuDrawer to the Activity. + * + * @param activity The activity the menu drawer will be attached to. + * @param dragMode The drag mode of the drawer. Can be either {@link MenuDrawer#MENU_DRAG_CONTENT} + * or {@link MenuDrawer#MENU_DRAG_WINDOW}. + * @param position Where to position the menu. + * @param attachStatic Whether a static (non-draggable, always visible) drawer should be used. + * @return The created MenuDrawer instance. + */ + public static MenuDrawer attach(Activity activity, int dragMode, Position position, boolean attachStatic) { + MenuDrawer menuDrawer = createMenuDrawer(activity, dragMode, position, attachStatic); + menuDrawer.setId(R.id.md__drawer); + + switch (dragMode) { + case MenuDrawer.MENU_DRAG_CONTENT: + attachToContent(activity, menuDrawer); + break; + + case MenuDrawer.MENU_DRAG_WINDOW: + attachToDecor(activity, menuDrawer); + break; + + default: + throw new RuntimeException("Unknown menu mode: " + dragMode); + } + + return menuDrawer; + } + + /** + * Constructs the appropriate MenuDrawer based on the position. + */ + private static MenuDrawer createMenuDrawer(Activity activity, int dragMode, Position position, + boolean attachStatic) { + if (attachStatic) { + switch (position) { + case LEFT: + return new LeftStaticDrawer(activity, dragMode); + case RIGHT: + return new RightStaticDrawer(activity, dragMode); + case TOP: + return new TopStaticDrawer(activity, dragMode); + case BOTTOM: + return new BottomStaticDrawer(activity, dragMode); + default: + throw new IllegalArgumentException("position must be one of LEFT, TOP, RIGHT or BOTTOM"); + } + } + + switch (position) { + case LEFT: + return new LeftDrawer(activity, dragMode); + case RIGHT: + return new RightDrawer(activity, dragMode); + case TOP: + return new TopDrawer(activity, dragMode); + case BOTTOM: + return new BottomDrawer(activity, dragMode); + default: + throw new IllegalArgumentException("position must be one of LEFT, TOP, RIGHT or BOTTOM"); + } + } + + /** + * Attaches the menu drawer to the content view. + */ + private static void attachToContent(Activity activity, MenuDrawer menuDrawer) { + /** + * Do not call mActivity#setContentView. + * E.g. if using with a ListActivity, Activity#setContentView is overridden and dispatched to + * MenuDrawer#setContentView, which then again would call Activity#setContentView. + */ + ViewGroup content = (ViewGroup) activity.findViewById(android.R.id.content); + content.removeAllViews(); + content.addView(menuDrawer, LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT); + } + + /** + * Attaches the menu drawer to the window. + */ + private static void attachToDecor(Activity activity, MenuDrawer menuDrawer) { + ViewGroup decorView = (ViewGroup) activity.getWindow().getDecorView(); + ViewGroup decorChild = (ViewGroup) decorView.getChildAt(0); + + decorView.removeAllViews(); + decorView.addView(menuDrawer, LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT); + + menuDrawer.mContentContainer.addView(decorChild, decorChild.getLayoutParams()); + } + + MenuDrawer(Activity activity, int dragMode) { + this(activity); + + mActivity = activity; + mDragMode = dragMode; + } + + public MenuDrawer(Context context) { + this(context, null); + } + + public MenuDrawer(Context context, AttributeSet attrs) { + this(context, attrs, R.attr.menuDrawerStyle); + } + + public MenuDrawer(Context context, AttributeSet attrs, int defStyle) { + super(context, attrs, defStyle); + initDrawer(context, attrs, defStyle); + } + + protected void initDrawer(Context context, AttributeSet attrs, int defStyle) { + setWillNotDraw(false); + setFocusable(false); + + TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.MenuDrawer, R.attr.menuDrawerStyle, + R.style.Widget_MenuDrawer); + + final Drawable contentBackground = a.getDrawable(R.styleable.MenuDrawer_mdContentBackground); + final Drawable menuBackground = a.getDrawable(R.styleable.MenuDrawer_mdMenuBackground); + + mMenuSize = a.getDimensionPixelSize(R.styleable.MenuDrawer_mdMenuSize, -1); + mMenuSizeSet = mMenuSize != -1; + + final int indicatorResId = a.getResourceId(R.styleable.MenuDrawer_mdActiveIndicator, 0); + if (indicatorResId != 0) { + mActiveIndicator = BitmapFactory.decodeResource(getResources(), indicatorResId); + } + + mDropShadowEnabled = a.getBoolean(R.styleable.MenuDrawer_mdDropShadowEnabled, true); + + mDropShadowDrawable = a.getDrawable(R.styleable.MenuDrawer_mdDropShadow); + + if (mDropShadowDrawable == null) { + final int dropShadowColor = a.getColor(R.styleable.MenuDrawer_mdDropShadowColor, 0xFF000000); + setDropShadowColor(dropShadowColor); + } + + mDropShadowSize = a.getDimensionPixelSize(R.styleable.MenuDrawer_mdDropShadowSize, + dpToPx(DEFAULT_DROP_SHADOW_DP)); + + mTouchBezelSize = a.getDimensionPixelSize(R.styleable.MenuDrawer_mdTouchBezelSize, + dpToPx(DEFAULT_DRAG_BEZEL_DP)); + + mAllowIndicatorAnimation = a.getBoolean(R.styleable.MenuDrawer_mdAllowIndicatorAnimation, false); + + mMaxAnimationDuration = a.getInt(R.styleable.MenuDrawer_mdMaxAnimationDuration, DEFAULT_ANIMATION_DURATION); + + a.recycle(); + + mMenuContainer = new BuildLayerFrameLayout(context); + mMenuContainer.setId(R.id.md__menu); + mMenuContainer.setBackgroundDrawable(menuBackground); + super.addView(mMenuContainer, -1, new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT)); + + mContentContainer = new NoClickThroughFrameLayout(context); + mContentContainer.setId(R.id.md__content); + mContentContainer.setBackgroundDrawable(contentBackground); + super.addView(mContentContainer, -1, new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT)); + + mMenuOverlay = new ColorDrawable(0xFF000000); + + mIndicatorScroller = new FloatScroller(SMOOTH_INTERPOLATOR); + } + + @Override + public void addView(View child, int index, LayoutParams params) { + int childCount = mMenuContainer.getChildCount(); + if (childCount == 0) { + mMenuContainer.addView(child, index, params); + return; + } + + childCount = mContentContainer.getChildCount(); + if (childCount == 0) { + mContentContainer.addView(child, index, params); + return; + } + + throw new IllegalStateException("MenuDrawer can only hold two child views"); + } + + protected int dpToPx(int dp) { + return (int) (getResources().getDisplayMetrics().density * dp + 0.5f); + } + + protected boolean isViewDescendant(View v) { + ViewParent parent = v.getParent(); + while (parent != null) { + if (parent == this) { + return true; + } + + parent = parent.getParent(); + } + + return false; + } + + @Override + protected void onAttachedToWindow() { + super.onAttachedToWindow(); + getViewTreeObserver().addOnScrollChangedListener(mScrollListener); + } + + @Override + protected void onDetachedFromWindow() { + getViewTreeObserver().removeOnScrollChangedListener(mScrollListener); + super.onDetachedFromWindow(); + } + + /** + * Toggles the menu open and close with animation. + */ + public void toggleMenu() { + toggleMenu(true); + } + + /** + * Toggles the menu open and close. + * + * @param animate Whether open/close should be animated. + */ + public abstract void toggleMenu(boolean animate); + + /** + * Animates the menu open. + */ + public void openMenu() { + openMenu(true); + } + + /** + * Opens the menu. + * + * @param animate Whether open/close should be animated. + */ + public abstract void openMenu(boolean animate); + + /** + * Animates the menu closed. + */ + public void closeMenu() { + closeMenu(true); + } + + /** + * Closes the menu. + * + * @param animate Whether open/close should be animated. + */ + public abstract void closeMenu(boolean animate); + + /** + * Indicates whether the menu is currently visible. + * + * @return True if the menu is open, false otherwise. + */ + public abstract boolean isMenuVisible(); + + /** + * Set the size of the menu drawer when open. + * + * @param size The size of the menu. + */ + public abstract void setMenuSize(int size); + + /** + * Returns the size of the menu. + * + * @return The size of the menu. + */ + public int getMenuSize() { + return mMenuSize; + } + + /** + * Set the active view. + * If the mdActiveIndicator attribute is set, this View will have the indicator drawn next to it. + * + * @param v The active view. + */ + public void setActiveView(View v) { + setActiveView(v, 0); + } + + /** + * Set the active view. + * If the mdActiveIndicator attribute is set, this View will have the indicator drawn next to it. + * + * @param v The active view. + * @param position Optional position, usually used with ListView. v.setTag(R.id.mdActiveViewPosition, position) + * must be called first. + */ + public void setActiveView(View v, int position) { + final View oldView = mActiveView; + mActiveView = v; + mActivePosition = position; + + if (mAllowIndicatorAnimation && oldView != null) { + startAnimatingIndicator(); + } + + invalidate(); + } + + /** + * Sets whether the indicator should be animated between active views. + * + * @param animate Whether the indicator should be animated between active views. + */ + public void setAllowIndicatorAnimation(boolean animate) { + if (animate != mAllowIndicatorAnimation) { + mAllowIndicatorAnimation = animate; + completeAnimatingIndicator(); + } + } + + /** + * Indicates whether the indicator should be animated between active views. + * + * @return Whether the indicator should be animated between active views. + */ + public boolean getAllowIndicatorAnimation() { + return mAllowIndicatorAnimation; + } + + /** + * Scroll listener that checks whether the active view has moved before the drawer is invalidated. + */ + private ViewTreeObserver.OnScrollChangedListener mScrollListener = new ViewTreeObserver.OnScrollChangedListener() { + @Override + public void onScrollChanged() { + if (mActiveView != null && isViewDescendant(mActiveView)) { + mActiveView.getDrawingRect(mTempRect); + offsetDescendantRectToMyCoords(mActiveView, mTempRect); + if (mTempRect.left != mActiveRect.left || mTempRect.top != mActiveRect.top + || mTempRect.right != mActiveRect.right || mTempRect.bottom != mActiveRect.bottom) { + invalidate(); + } + } + } + }; + + /** + * Starts animating the indicator to a new position. + */ + private void startAnimatingIndicator() { + mIndicatorStartPos = getIndicatorStartPos(); + mIndicatorAnimating = true; + mIndicatorScroller.startScroll(0.0f, 1.0f, INDICATOR_ANIM_DURATION); + + animateIndicatorInvalidate(); + } + + /** + * Returns the start position of the indicator. + * + * @return The start position of the indicator. + */ + protected abstract int getIndicatorStartPos(); + + /** + * Callback when each frame in the indicator animation should be drawn. + */ + private void animateIndicatorInvalidate() { + if (mIndicatorScroller.computeScrollOffset()) { + mIndicatorOffset = mIndicatorScroller.getCurr(); + invalidate(); + + if (!mIndicatorScroller.isFinished()) { + postOnAnimation(mIndicatorRunnable); + return; + } + } + + completeAnimatingIndicator(); + } + + /** + * Called when the indicator animation has completed. + */ + private void completeAnimatingIndicator() { + mIndicatorOffset = 1.0f; + mIndicatorAnimating = false; + invalidate(); + } + + /** + * Enables or disables offsetting the menu when dragging the drawer. + * + * @param offsetMenu True to offset the menu, false otherwise. + */ + public abstract void setOffsetMenuEnabled(boolean offsetMenu); + + /** + * Indicates whether the menu is being offset when dragging the drawer. + * + * @return True if the menu is being offset, false otherwise. + */ + public abstract boolean getOffsetMenuEnabled(); + + public int getDrawerState() { + return mDrawerState; + } + + /** + * Register a callback to be invoked when the drawer state changes. + * + * @param listener The callback that will run. + */ + public void setOnDrawerStateChangeListener(OnDrawerStateChangeListener listener) { + mOnDrawerStateChangeListener = listener; + } + + /** + * Register a callback that will be invoked when the drawer is about to intercept touch events. + * + * @param listener The callback that will be invoked. + */ + public void setOnInterceptMoveEventListener(OnInterceptMoveEventListener listener) { + mOnInterceptMoveEventListener = listener; + } + + /** + * Defines whether the drop shadow is enabled. + * + * @param enabled Whether the drop shadow is enabled. + */ + public void setDropShadowEnabled(boolean enabled) { + mDropShadowEnabled = enabled; + invalidate(); + } + + /** + * Sets the color of the drop shadow. + * + * @param color The color of the drop shadow. + */ + public abstract void setDropShadowColor(int color); + + /** + * Sets the drawable of the drop shadow. + * + * @param drawable The drawable of the drop shadow. + */ + public void setDropShadow(Drawable drawable) { + mDropShadowDrawable = drawable; + invalidate(); + } + + /** + * Sets the drawable of the drop shadow. + * + * @param resId The resource identifier of the the drawable. + */ + public void setDropShadow(int resId) { + setDropShadow(getResources().getDrawable(resId)); + } + + /** + * Returns the drawable of the drop shadow. + */ + public Drawable getDropShadow() { + return mDropShadowDrawable; + } + + /** + * Sets the size of the drop shadow. + * + * @param size The size of the drop shadow in px. + */ + public void setDropShadowSize(int size) { + mDropShadowSize = size; + invalidate(); + } + + /** + * Animates the drawer slightly open until the user opens the drawer. + */ + public abstract void peekDrawer(); + + /** + * Animates the drawer slightly open. If delay is larger than 0, this happens until the user opens the drawer. + * + * @param delay The delay (in milliseconds) between each run of the animation. If 0, this animation is only run + * once. + */ + public abstract void peekDrawer(long delay); + + /** + * Animates the drawer slightly open. If delay is larger than 0, this happens until the user opens the drawer. + * + * @param startDelay The delay (in milliseconds) until the animation is first run. + * @param delay The delay (in milliseconds) between each run of the animation. If 0, this animation is only run + * once. + */ + public abstract void peekDrawer(long startDelay, long delay); + + /** + * Enables or disables the user of {@link View#LAYER_TYPE_HARDWARE} when animations views. + * + * @param enabled Whether hardware layers are enabled. + */ + public abstract void setHardwareLayerEnabled(boolean enabled); + + /** + * Sets the maximum duration of open/close animations. + * @param duration The maximum duration in milliseconds. + */ + public void setMaxAnimationDuration(int duration) { + mMaxAnimationDuration = duration; + } + + /** + * Returns the ViewGroup used as a parent for the menu view. + * + * @return The menu view's parent. + */ + public ViewGroup getMenuContainer() { + return mMenuContainer; + } + + /** + * Returns the ViewGroup used as a parent for the content view. + * + * @return The content view's parent. + */ + public ViewGroup getContentContainer() { + if (mDragMode == MENU_DRAG_CONTENT) { + return mContentContainer; + } else { + return (ViewGroup) findViewById(android.R.id.content); + } + } + + /** + * Set the menu view from a layout resource. + * + * @param layoutResId Resource ID to be inflated. + */ + public void setMenuView(int layoutResId) { + mMenuContainer.removeAllViews(); + mMenuView = LayoutInflater.from(getContext()).inflate(layoutResId, mMenuContainer, false); + mMenuContainer.addView(mMenuView); + } + + /** + * Set the menu view to an explicit view. + * + * @param view The menu view. + */ + public void setMenuView(View view) { + setMenuView(view, new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT)); + } + + /** + * Set the menu view to an explicit view. + * + * @param view The menu view. + * @param params Layout parameters for the view. + */ + public void setMenuView(View view, LayoutParams params) { + mMenuView = view; + mMenuContainer.removeAllViews(); + mMenuContainer.addView(view, params); + } + + /** + * Returns the menu view. + * + * @return The menu view. + */ + public View getMenuView() { + return mMenuView; + } + + /** + * Set the content from a layout resource. + * + * @param layoutResId Resource ID to be inflated. + */ + public void setContentView(int layoutResId) { + switch (mDragMode) { + case MenuDrawer.MENU_DRAG_CONTENT: + mContentContainer.removeAllViews(); + LayoutInflater.from(getContext()).inflate(layoutResId, mContentContainer, true); + break; + + case MenuDrawer.MENU_DRAG_WINDOW: + mActivity.setContentView(layoutResId); + break; + } + } + + /** + * Set the content to an explicit view. + * + * @param view The desired content to display. + */ + public void setContentView(View view) { + setContentView(view, new ViewGroup.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT)); + } + + /** + * Set the content to an explicit view. + * + * @param view The desired content to display. + * @param params Layout parameters for the view. + */ + public void setContentView(View view, LayoutParams params) { + switch (mDragMode) { + case MenuDrawer.MENU_DRAG_CONTENT: + mContentContainer.removeAllViews(); + mContentContainer.addView(view, params); + break; + + case MenuDrawer.MENU_DRAG_WINDOW: + mActivity.setContentView(view, params); + break; + } + } + + protected void setDrawerState(int state) { + if (state != mDrawerState) { + final int oldState = mDrawerState; + mDrawerState = state; + if (mOnDrawerStateChangeListener != null) mOnDrawerStateChangeListener.onDrawerStateChange(oldState, state); + if (DEBUG) logDrawerState(state); + } + } + + protected void logDrawerState(int state) { + switch (state) { + case STATE_CLOSED: + Log.d(TAG, "[DrawerState] STATE_CLOSED"); + break; + + case STATE_CLOSING: + Log.d(TAG, "[DrawerState] STATE_CLOSING"); + break; + + case STATE_DRAGGING: + Log.d(TAG, "[DrawerState] STATE_DRAGGING"); + break; + + case STATE_OPENING: + Log.d(TAG, "[DrawerState] STATE_OPENING"); + break; + + case STATE_OPEN: + Log.d(TAG, "[DrawerState] STATE_OPEN"); + break; + + default: + Log.d(TAG, "[DrawerState] Unknown: " + state); + } + } + + /** + * Returns the touch mode. + */ + public abstract int getTouchMode(); + + /** + * Sets the drawer touch mode. Possible values are {@link #TOUCH_MODE_NONE}, {@link #TOUCH_MODE_BEZEL} or + * {@link #TOUCH_MODE_FULLSCREEN}. + * + * @param mode The touch mode. + */ + public abstract void setTouchMode(int mode); + + /** + * Sets the size of the touch bezel. + * + * @param size The touch bezel size in px. + */ + public abstract void setTouchBezelSize(int size); + + /** + * Returns the size of the touch bezel in px. + */ + public abstract int getTouchBezelSize(); + + @Override + public void postOnAnimation(Runnable action) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { + super.postOnAnimation(action); + } else { + postDelayed(action, ANIMATION_DELAY); + } + } + + @Override + protected boolean fitSystemWindows(Rect insets) { + if (mDragMode == MENU_DRAG_WINDOW) { + mMenuContainer.setPadding(0, insets.top, 0, 0); + } + return super.fitSystemWindows(insets); + } + + /** + * Saves the state of the drawer. + * + * @return Returns a Parcelable containing the drawer state. + */ + public final Parcelable saveState() { + if (mState == null) mState = new Bundle(); + saveState(mState); + return mState; + } + + void saveState(Bundle state) { + // State saving isn't required for subclasses. + } + + /** + * Restores the state of the drawer. + * + * @param in A parcelable containing the drawer state. + */ + public void restoreState(Parcelable in) { + mState = (Bundle) in; + } + + @Override + protected Parcelable onSaveInstanceState() { + Parcelable superState = super.onSaveInstanceState(); + SavedState state = new SavedState(superState); + + if (mState == null) mState = new Bundle(); + saveState(mState); + + state.mState = mState; + return state; + } + + @Override + protected void onRestoreInstanceState(Parcelable state) { + SavedState savedState = (SavedState) state; + super.onRestoreInstanceState(savedState.getSuperState()); + + restoreState(savedState.mState); + } + + static class SavedState extends BaseSavedState { + + Bundle mState; + + public SavedState(Parcelable superState) { + super(superState); + } + + public SavedState(Parcel in) { + super(in); + mState = in.readBundle(); + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + super.writeToParcel(dest, flags); + dest.writeBundle(mState); + } + + @SuppressWarnings("UnusedDeclaration") + public static final Creator CREATOR = new Creator() { + @Override + public SavedState createFromParcel(Parcel in) { + return new SavedState(in); + } + + @Override + public SavedState[] newArray(int size) { + return new SavedState[size]; + } + }; + } +} diff --git a/android-menudrawer-master/library/src/net/simonvt/menudrawer/NoClickThroughFrameLayout.java b/android-menudrawer-master/library/src/net/simonvt/menudrawer/NoClickThroughFrameLayout.java new file mode 100644 index 00000000..9462282c --- /dev/null +++ b/android-menudrawer-master/library/src/net/simonvt/menudrawer/NoClickThroughFrameLayout.java @@ -0,0 +1,28 @@ +package net.simonvt.menudrawer; + +import android.content.Context; +import android.util.AttributeSet; +import android.view.MotionEvent; + +/** + * FrameLayout which doesn't let touch events propagate to views positioned behind it in the view hierarchy. + */ +public class NoClickThroughFrameLayout extends BuildLayerFrameLayout { + + public NoClickThroughFrameLayout(Context context) { + super(context); + } + + public NoClickThroughFrameLayout(Context context, AttributeSet attrs) { + super(context, attrs); + } + + public NoClickThroughFrameLayout(Context context, AttributeSet attrs, int defStyle) { + super(context, attrs, defStyle); + } + + @Override + public boolean onTouchEvent(MotionEvent event) { + return true; + } +} diff --git a/android-menudrawer-master/library/src/net/simonvt/menudrawer/PeekInterpolator.java b/android-menudrawer-master/library/src/net/simonvt/menudrawer/PeekInterpolator.java new file mode 100644 index 00000000..d0c7600f --- /dev/null +++ b/android-menudrawer-master/library/src/net/simonvt/menudrawer/PeekInterpolator.java @@ -0,0 +1,28 @@ +package net.simonvt.menudrawer; + +import android.view.animation.Interpolator; + +public class PeekInterpolator implements Interpolator { + + private static final String TAG = "PeekInterpolator"; + + private static final SinusoidalInterpolator SINUSOIDAL_INTERPOLATOR = new SinusoidalInterpolator(); + + @Override + public float getInterpolation(float input) { + float result; + + if (input < 1.f / 3.f) { + result = SINUSOIDAL_INTERPOLATOR.getInterpolation(input * 3); + + } else if (input > 2.f / 3.f) { + final float val = ((input + 1.f / 3.f) - 1.f) * 3.f; + result = 1.f - SINUSOIDAL_INTERPOLATOR.getInterpolation(val); + + } else { + result = 1.f; + } + + return result; + } +} diff --git a/android-menudrawer-master/library/src/net/simonvt/menudrawer/Position.java b/android-menudrawer-master/library/src/net/simonvt/menudrawer/Position.java new file mode 100644 index 00000000..e1a3dd3a --- /dev/null +++ b/android-menudrawer-master/library/src/net/simonvt/menudrawer/Position.java @@ -0,0 +1,18 @@ +package net.simonvt.menudrawer; + +/** + * Enums used for positioning the drawer. + */ +public enum Position { + // Positions the drawer to the left of the content. + LEFT, + + // Positions the drawer above the content. + TOP, + + // Positions the drawer to the right of the content. + RIGHT, + + // Positions the drawer below the content. + BOTTOM, +} diff --git a/android-menudrawer-master/library/src/net/simonvt/menudrawer/RightDrawer.java b/android-menudrawer-master/library/src/net/simonvt/menudrawer/RightDrawer.java new file mode 100644 index 00000000..5d75904a --- /dev/null +++ b/android-menudrawer-master/library/src/net/simonvt/menudrawer/RightDrawer.java @@ -0,0 +1,234 @@ +package net.simonvt.menudrawer; + +import android.app.Activity; +import android.content.Context; +import android.graphics.Canvas; +import android.graphics.drawable.GradientDrawable; +import android.util.AttributeSet; +import android.view.MotionEvent; + +public class RightDrawer extends HorizontalDrawer { + + private int mIndicatorTop; + + RightDrawer(Activity activity, int dragMode) { + super(activity, dragMode); + } + + public RightDrawer(Context context) { + super(context); + } + + public RightDrawer(Context context, AttributeSet attrs) { + super(context, attrs); + } + + public RightDrawer(Context context, AttributeSet attrs, int defStyle) { + super(context, attrs, defStyle); + } + + @Override + public void openMenu(boolean animate) { + animateOffsetTo(-mMenuSize, 0, animate); + } + + @Override + public void closeMenu(boolean animate) { + animateOffsetTo(0, 0, animate); + } + + @Override + public void setDropShadowColor(int color) { + final int endColor = color & 0x00FFFFFF; + mDropShadowDrawable = new GradientDrawable(GradientDrawable.Orientation.LEFT_RIGHT, new int[] { + color, + endColor, + }); + invalidate(); + } + + @Override + protected void onLayout(boolean changed, int l, int t, int r, int b) { + final int width = r - l; + final int height = b - t; + final int offsetPixels = (int) mOffsetPixels; + + mMenuContainer.layout(width - mMenuSize, 0, width, height); + offsetMenu(offsetPixels); + + if (USE_TRANSLATIONS) { + mContentContainer.layout(0, 0, width, height); + } else { + mContentContainer.layout(offsetPixels, 0, width + offsetPixels, height); + } + } + + /** + * Offsets the menu relative to its original position based on the position of the content. + * + * @param offsetPixels The number of pixels the content if offset. + */ + private void offsetMenu(int offsetPixels) { + if (mOffsetMenu && mMenuSize != 0) { + final int menuWidth = mMenuSize; + final float openRatio = (menuWidth + (float) offsetPixels) / menuWidth; + + if (USE_TRANSLATIONS) { + if (offsetPixels != 0) { + final int offset = (int) (0.25f * (openRatio * menuWidth)); + mMenuContainer.setTranslationX(offset); + } else { + mMenuContainer.setTranslationX(-menuWidth); + } + + } else { + final int width = getWidth(); + final int oldMenuRight = mMenuContainer.getRight(); + final int newRight = width + (int) (0.25f * (openRatio * menuWidth)); + final int offset = newRight - oldMenuRight; + mMenuContainer.offsetLeftAndRight(offset); + mMenuContainer.setVisibility(offsetPixels == 0 ? INVISIBLE : VISIBLE); + } + } + } + + @Override + protected void drawDropShadow(Canvas canvas, int offsetPixels) { + final int height = getHeight(); + final int width = getWidth(); + final int left = width + offsetPixels; + final int right = left + mDropShadowSize; + + mDropShadowDrawable.setBounds(left, 0, right, height); + mDropShadowDrawable.draw(canvas); + } + + @Override + protected void drawMenuOverlay(Canvas canvas, int offsetPixels) { + final int height = getHeight(); + final int width = getWidth(); + final int left = width + offsetPixels; + final int right = width; + final float openRatio = ((float) Math.abs(offsetPixels)) / mMenuSize; + + mMenuOverlay.setBounds(left, 0, right, height); + mMenuOverlay.setAlpha((int) (MAX_MENU_OVERLAY_ALPHA * (1.f - openRatio))); + mMenuOverlay.draw(canvas); + } + + @Override + protected void drawIndicator(Canvas canvas, int offsetPixels) { + if (mActiveView != null && isViewDescendant(mActiveView)) { + Integer position = (Integer) mActiveView.getTag(R.id.mdActiveViewPosition); + final int pos = position == null ? 0 : position; + + if (pos == mActivePosition) { + final int width = getWidth(); + final int menuWidth = mMenuSize; + final int indicatorWidth = mActiveIndicator.getWidth(); + + final int contentRight = width + offsetPixels; + final float openRatio = ((float) Math.abs(offsetPixels)) / menuWidth; + + mActiveView.getDrawingRect(mActiveRect); + offsetDescendantRectToMyCoords(mActiveView, mActiveRect); + + final float interpolatedRatio = 1.f - INDICATOR_INTERPOLATOR.getInterpolation((1.f - openRatio)); + final int interpolatedWidth = (int) (indicatorWidth * interpolatedRatio); + + final int indicatorRight = contentRight + interpolatedWidth; + final int indicatorLeft = indicatorRight - indicatorWidth; + + if (mIndicatorAnimating) { + final int indicatorFinalTop = mActiveRect.top + ((mActiveRect.height() + - mActiveIndicator.getHeight()) / 2); + final int indicatorStartTop = mIndicatorStartPos; + final int diff = indicatorFinalTop - indicatorStartTop; + final int startOffset = (int) (diff * mIndicatorOffset); + mIndicatorTop = indicatorStartTop + startOffset; + } else { + mIndicatorTop = mActiveRect.top + ((mActiveRect.height() - mActiveIndicator.getHeight()) / 2); + } + + canvas.save(); + canvas.clipRect(contentRight, 0, indicatorRight, getHeight()); + canvas.drawBitmap(mActiveIndicator, indicatorLeft, mIndicatorTop, null); + canvas.restore(); + } + } + } + + @Override + protected int getIndicatorStartPos() { + return mIndicatorTop; + } + + @Override + protected void initPeekScroller() { + final int dx = -mMenuSize / 3; + mPeekScroller.startScroll(0, 0, dx, 0, PEEK_DURATION); + } + + @Override + protected void onOffsetPixelsChanged(int offsetPixels) { + if (USE_TRANSLATIONS) { + mContentContainer.setTranslationX(offsetPixels); + offsetMenu(offsetPixels); + invalidate(); + } else { + mContentContainer.offsetLeftAndRight(offsetPixels - mContentContainer.getLeft()); + offsetMenu(offsetPixels); + invalidate(); + } + } + + ////////////////////////////////////////////////////////////////////// + // Touch handling + ////////////////////////////////////////////////////////////////////// + + @Override + protected boolean isContentTouch(MotionEvent ev) { + return ev.getX() < getWidth() + mOffsetPixels; + } + + @Override + protected boolean onDownAllowDrag(MotionEvent ev) { + final int width = getWidth(); + final int initialMotionX = (int) mInitialMotionX; + + return (!mMenuVisible && initialMotionX >= width - mTouchSize) + || (mMenuVisible && initialMotionX <= width + mOffsetPixels); + } + + @Override + protected boolean onMoveAllowDrag(MotionEvent ev, float diff) { + final int width = getWidth(); + final int initialMotionX = (int) mInitialMotionX; + + return (!mMenuVisible && initialMotionX >= width - mTouchSize && (diff < 0)) + || (mMenuVisible && initialMotionX <= width + mOffsetPixels); + } + + @Override + protected void onMoveEvent(float dx) { + final float newOffset = Math.max(Math.min(mOffsetPixels + dx, 0), -mMenuSize); + setOffsetPixels(newOffset); + } + + @Override + protected void onUpEvent(MotionEvent ev) { + final int offsetPixels = (int) mOffsetPixels; + final int width = getWidth(); + + if (mIsDragging) { + mVelocityTracker.computeCurrentVelocity(1000, mMaxVelocity); + final int initialVelocity = (int) mVelocityTracker.getXVelocity(); + mLastMotionX = ev.getX(); + animateOffsetTo(mVelocityTracker.getXVelocity() > 0 ? 0 : -mMenuSize, initialVelocity, true); + + // Close the menu when content is clicked while the menu is visible. + } else if (mMenuVisible && ev.getX() < width + offsetPixels) { + closeMenu(); + } + } +} diff --git a/android-menudrawer-master/library/src/net/simonvt/menudrawer/RightStaticDrawer.java b/android-menudrawer-master/library/src/net/simonvt/menudrawer/RightStaticDrawer.java new file mode 100644 index 00000000..2027b43a --- /dev/null +++ b/android-menudrawer-master/library/src/net/simonvt/menudrawer/RightStaticDrawer.java @@ -0,0 +1,87 @@ +package net.simonvt.menudrawer; + +import android.app.Activity; +import android.content.Context; +import android.graphics.Canvas; +import android.graphics.drawable.GradientDrawable; +import android.util.AttributeSet; + +public class RightStaticDrawer extends StaticDrawer { + + private int mIndicatorTop; + + RightStaticDrawer(Activity activity, int dragMode) { + super(activity, dragMode); + } + + public RightStaticDrawer(Context context) { + super(context); + } + + public RightStaticDrawer(Context context, AttributeSet attrs) { + super(context, attrs); + } + + public RightStaticDrawer(Context context, AttributeSet attrs, int defStyle) { + super(context, attrs, defStyle); + } + + @Override + protected void initDrawer(Context context, AttributeSet attrs, int defStyle) { + super.initDrawer(context, attrs, defStyle); + mPosition = Position.RIGHT; + } + + @Override + public void setDropShadowColor(int color) { + final int endColor = color & 0x00FFFFFF; + mDropShadowDrawable = new GradientDrawable(GradientDrawable.Orientation.LEFT_RIGHT, new int[] { + color, + endColor, + }); + invalidate(); + } + + @Override + protected void drawIndicator(Canvas canvas) { + if (mActiveView != null && isViewDescendant(mActiveView)) { + Integer position = (Integer) mActiveView.getTag(R.id.mdActiveViewPosition); + final int pos = position == null ? 0 : position; + + if (pos == mActivePosition) { + final int width = getWidth(); + final int menuWidth = mMenuSize; + final int indicatorWidth = mActiveIndicator.getWidth(); + + final int contentRight = width - menuWidth; + + mActiveView.getDrawingRect(mActiveRect); + offsetDescendantRectToMyCoords(mActiveView, mActiveRect); + + final int indicatorRight = contentRight + indicatorWidth; + final int indicatorLeft = contentRight; + + if (mIndicatorAnimating) { + final int indicatorFinalTop = mActiveRect.top + ((mActiveRect.height() + - mActiveIndicator.getHeight()) / 2); + final int indicatorStartTop = mIndicatorStartPos; + final int diff = indicatorFinalTop - indicatorStartTop; + final int startOffset = (int) (diff * mIndicatorOffset); + mIndicatorTop = indicatorStartTop + startOffset; + } else { + mIndicatorTop = mActiveRect.top + ((mActiveRect.height() - mActiveIndicator.getHeight()) / 2); + } + + canvas.save(); + canvas.clipRect(contentRight, 0, indicatorRight, getHeight()); + canvas.drawBitmap(mActiveIndicator, indicatorLeft, mIndicatorTop, null); + canvas.restore(); + } + } + } + + @Override + protected int getIndicatorStartPos() { + return mIndicatorTop; + } +} diff --git a/android-menudrawer-master/library/src/net/simonvt/menudrawer/Scroller.java b/android-menudrawer-master/library/src/net/simonvt/menudrawer/Scroller.java new file mode 100644 index 00000000..58f0fc54 --- /dev/null +++ b/android-menudrawer-master/library/src/net/simonvt/menudrawer/Scroller.java @@ -0,0 +1,505 @@ +/* + * Copyright (C) 2006 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package net.simonvt.menudrawer; + +import android.content.Context; +import android.hardware.SensorManager; +import android.os.Build; +import android.util.FloatMath; +import android.view.ViewConfiguration; +import android.view.animation.AnimationUtils; +import android.view.animation.Interpolator; + + +/** + * This class encapsulates scrolling. The duration of the scroll + * can be passed in the constructor and specifies the maximum time that + * the scrolling animation should take. Past this time, the scrolling is + * automatically moved to its final stage and computeScrollOffset() + * will always return false to indicate that scrolling is over. + */ +public class Scroller { + private int mMode; + + private int mStartX; + private int mStartY; + private int mFinalX; + private int mFinalY; + + private int mMinX; + private int mMaxX; + private int mMinY; + private int mMaxY; + + private int mCurrX; + private int mCurrY; + private long mStartTime; + private int mDuration; + private float mDurationReciprocal; + private float mDeltaX; + private float mDeltaY; + private boolean mFinished; + private Interpolator mInterpolator; + private boolean mFlywheel; + + private float mVelocity; + + private static final int DEFAULT_DURATION = 250; + private static final int SCROLL_MODE = 0; + private static final int FLING_MODE = 1; + + private static final float DECELERATION_RATE = (float) (Math.log(0.75) / Math.log(0.9)); + private static final float ALPHA = 800; // pixels / seconds + private static final float START_TENSION = 0.4f; // Tension at start: (0.4 * total T, 1.0 * Distance) + private static final float END_TENSION = 1.0f - START_TENSION; + private static final int NB_SAMPLES = 100; + private static final float[] SPLINE = new float[NB_SAMPLES + 1]; + + private float mDeceleration; + private final float mPpi; + + static { + float xMin = 0.0f; + for (int i = 0; i <= NB_SAMPLES; i++) { + final float t = (float) i / NB_SAMPLES; + float xMax = 1.0f; + float x, tx, coef; + while (true) { + x = xMin + (xMax - xMin) / 2.0f; + coef = 3.0f * x * (1.0f - x); + tx = coef * ((1.0f - x) * START_TENSION + x * END_TENSION) + x * x * x; + if (Math.abs(tx - t) < 1E-5) break; + if (tx > t) xMax = x; + else xMin = x; + } + final float d = coef + x * x * x; + SPLINE[i] = d; + } + SPLINE[NB_SAMPLES] = 1.0f; + + // This controls the viscous fluid effect (how much of it) + sViscousFluidScale = 8.0f; + // must be set to 1.0 (used in viscousFluid()) + sViscousFluidNormalize = 1.0f; + sViscousFluidNormalize = 1.0f / viscousFluid(1.0f); + } + + private static float sViscousFluidScale; + private static float sViscousFluidNormalize; + + /** + * Create a Scroller with the default duration and interpolator. + */ + public Scroller(Context context) { + this(context, null); + } + + /** + * Create a Scroller with the specified interpolator. If the interpolator is + * null, the default (viscous) interpolator will be used. "Flywheel" behavior will + * be in effect for apps targeting Honeycomb or newer. + */ + public Scroller(Context context, Interpolator interpolator) { + this(context, interpolator, + context.getApplicationInfo().targetSdkVersion >= Build.VERSION_CODES.HONEYCOMB); + } + + /** + * Create a Scroller with the specified interpolator. If the interpolator is + * null, the default (viscous) interpolator will be used. Specify whether or + * not to support progressive "flywheel" behavior in flinging. + */ + public Scroller(Context context, Interpolator interpolator, boolean flywheel) { + mFinished = true; + mInterpolator = interpolator; + mPpi = context.getResources().getDisplayMetrics().density * 160.0f; + mDeceleration = computeDeceleration(ViewConfiguration.getScrollFriction()); + mFlywheel = flywheel; + } + + /** + * The amount of friction applied to flings. The default value + * is {@link android.view.ViewConfiguration#getScrollFriction}. + * + * @param friction A scalar dimension-less value representing the coefficient of + * friction. + */ + public final void setFriction(float friction) { + mDeceleration = computeDeceleration(friction); + } + + private float computeDeceleration(float friction) { + return SensorManager.GRAVITY_EARTH // g (m/s^2) + * 39.37f // inch/meter + * mPpi // pixels per inch + * friction; + } + + /** + * + * Returns whether the scroller has finished scrolling. + * + * @return True if the scroller has finished scrolling, false otherwise. + */ + public final boolean isFinished() { + return mFinished; + } + + /** + * Force the finished field to a particular value. + * + * @param finished The new finished value. + */ + public final void forceFinished(boolean finished) { + mFinished = finished; + } + + /** + * Returns how long the scroll event will take, in milliseconds. + * + * @return The duration of the scroll in milliseconds. + */ + public final int getDuration() { + return mDuration; + } + + /** + * Returns the current X offset in the scroll. + * + * @return The new X offset as an absolute distance from the origin. + */ + public final int getCurrX() { + return mCurrX; + } + + /** + * Returns the current Y offset in the scroll. + * + * @return The new Y offset as an absolute distance from the origin. + */ + public final int getCurrY() { + return mCurrY; + } + + /** + * Returns the current velocity. + * + * @return The original velocity less the deceleration. Result may be + * negative. + */ + public float getCurrVelocity() { + return mVelocity - mDeceleration * timePassed() / 2000.0f; + } + + /** + * Returns the start X offset in the scroll. + * + * @return The start X offset as an absolute distance from the origin. + */ + public final int getStartX() { + return mStartX; + } + + /** + * Returns the start Y offset in the scroll. + * + * @return The start Y offset as an absolute distance from the origin. + */ + public final int getStartY() { + return mStartY; + } + + /** + * Returns where the scroll will end. Valid only for "fling" scrolls. + * + * @return The final X offset as an absolute distance from the origin. + */ + public final int getFinalX() { + return mFinalX; + } + + /** + * Returns where the scroll will end. Valid only for "fling" scrolls. + * + * @return The final Y offset as an absolute distance from the origin. + */ + public final int getFinalY() { + return mFinalY; + } + + /** + * Call this when you want to know the new location. If it returns true, + * the animation is not yet finished. loc will be altered to provide the + * new location. + */ + public boolean computeScrollOffset() { + if (mFinished) { + return false; + } + + int timePassed = (int) (AnimationUtils.currentAnimationTimeMillis() - mStartTime); + + if (timePassed < mDuration) { + switch (mMode) { + case SCROLL_MODE: + float x = timePassed * mDurationReciprocal; + + if (mInterpolator == null) + x = viscousFluid(x); + else + x = mInterpolator.getInterpolation(x); + + mCurrX = mStartX + Math.round(x * mDeltaX); + mCurrY = mStartY + Math.round(x * mDeltaY); + break; + case FLING_MODE: + final float t = (float) timePassed / mDuration; + final int index = (int) (NB_SAMPLES * t); + final float tInf = (float) index / NB_SAMPLES; + final float tSup = (float) (index + 1) / NB_SAMPLES; + final float dInf = SPLINE[index]; + final float dSup = SPLINE[index + 1]; + final float distanceCoef = dInf + (t - tInf) / (tSup - tInf) * (dSup - dInf); + + mCurrX = mStartX + Math.round(distanceCoef * (mFinalX - mStartX)); + // Pin to mMinX <= mCurrX <= mMaxX + mCurrX = Math.min(mCurrX, mMaxX); + mCurrX = Math.max(mCurrX, mMinX); + + mCurrY = mStartY + Math.round(distanceCoef * (mFinalY - mStartY)); + // Pin to mMinY <= mCurrY <= mMaxY + mCurrY = Math.min(mCurrY, mMaxY); + mCurrY = Math.max(mCurrY, mMinY); + + if (mCurrX == mFinalX && mCurrY == mFinalY) { + mFinished = true; + } + + break; + } + } else { + mCurrX = mFinalX; + mCurrY = mFinalY; + mFinished = true; + } + return true; + } + + /** + * Start scrolling by providing a starting point and the distance to travel. + * The scroll will use the default value of 250 milliseconds for the + * duration. + * + * @param startX Starting horizontal scroll offset in pixels. Positive + * numbers will scroll the content to the left. + * @param startY Starting vertical scroll offset in pixels. Positive numbers + * will scroll the content up. + * @param dx Horizontal distance to travel. Positive numbers will scroll the + * content to the left. + * @param dy Vertical distance to travel. Positive numbers will scroll the + * content up. + */ + public void startScroll(int startX, int startY, int dx, int dy) { + startScroll(startX, startY, dx, dy, DEFAULT_DURATION); + } + + /** + * Start scrolling by providing a starting point and the distance to travel. + * + * @param startX Starting horizontal scroll offset in pixels. Positive + * numbers will scroll the content to the left. + * @param startY Starting vertical scroll offset in pixels. Positive numbers + * will scroll the content up. + * @param dx Horizontal distance to travel. Positive numbers will scroll the + * content to the left. + * @param dy Vertical distance to travel. Positive numbers will scroll the + * content up. + * @param duration Duration of the scroll in milliseconds. + */ + public void startScroll(int startX, int startY, int dx, int dy, int duration) { + mMode = SCROLL_MODE; + mFinished = false; + mDuration = duration; + mStartTime = AnimationUtils.currentAnimationTimeMillis(); + mStartX = startX; + mStartY = startY; + mFinalX = startX + dx; + mFinalY = startY + dy; + mDeltaX = dx; + mDeltaY = dy; + mDurationReciprocal = 1.0f / (float) mDuration; + } + + /** + * Start scrolling based on a fling gesture. The distance travelled will + * depend on the initial velocity of the fling. + * + * @param startX Starting point of the scroll (X) + * @param startY Starting point of the scroll (Y) + * @param velocityX Initial velocity of the fling (X) measured in pixels per + * second. + * @param velocityY Initial velocity of the fling (Y) measured in pixels per + * second + * @param minX Minimum X value. The scroller will not scroll past this + * point. + * @param maxX Maximum X value. The scroller will not scroll past this + * point. + * @param minY Minimum Y value. The scroller will not scroll past this + * point. + * @param maxY Maximum Y value. The scroller will not scroll past this + * point. + */ + public void fling(int startX, int startY, int velocityX, int velocityY, + int minX, int maxX, int minY, int maxY) { + // Continue a scroll or fling in progress + if (mFlywheel && !mFinished) { + float oldVel = getCurrVelocity(); + + float dx = (float) (mFinalX - mStartX); + float dy = (float) (mFinalY - mStartY); + float hyp = FloatMath.sqrt(dx * dx + dy * dy); + + float ndx = dx / hyp; + float ndy = dy / hyp; + + float oldVelocityX = ndx * oldVel; + float oldVelocityY = ndy * oldVel; + if (Math.signum(velocityX) == Math.signum(oldVelocityX) + && Math.signum(velocityY) == Math.signum(oldVelocityY)) { + velocityX += oldVelocityX; + velocityY += oldVelocityY; + } + } + + mMode = FLING_MODE; + mFinished = false; + + float velocity = FloatMath.sqrt(velocityX * velocityX + velocityY * velocityY); + + mVelocity = velocity; + final double l = Math.log(START_TENSION * velocity / ALPHA); + mDuration = (int) (1000.0 * Math.exp(l / (DECELERATION_RATE - 1.0))); + mStartTime = AnimationUtils.currentAnimationTimeMillis(); + mStartX = startX; + mStartY = startY; + + float coeffX = velocity == 0 ? 1.0f : velocityX / velocity; + float coeffY = velocity == 0 ? 1.0f : velocityY / velocity; + + int totalDistance = + (int) (ALPHA * Math.exp(DECELERATION_RATE / (DECELERATION_RATE - 1.0) * l)); + + mMinX = minX; + mMaxX = maxX; + mMinY = minY; + mMaxY = maxY; + + mFinalX = startX + Math.round(totalDistance * coeffX); + // Pin to mMinX <= mFinalX <= mMaxX + mFinalX = Math.min(mFinalX, mMaxX); + mFinalX = Math.max(mFinalX, mMinX); + + mFinalY = startY + Math.round(totalDistance * coeffY); + // Pin to mMinY <= mFinalY <= mMaxY + mFinalY = Math.min(mFinalY, mMaxY); + mFinalY = Math.max(mFinalY, mMinY); + } + + static float viscousFluid(float x) { + x *= sViscousFluidScale; + if (x < 1.0f) { + x -= (1.0f - (float) Math.exp(-x)); + } else { + float start = 0.36787944117f; // 1/e == exp(-1) + x = 1.0f - (float) Math.exp(1.0f - x); + x = start + x * (1.0f - start); + } + x *= sViscousFluidNormalize; + return x; + } + + /** + * Stops the animation. Contrary to {@link #forceFinished(boolean)}, + * aborting the animating cause the scroller to move to the final x and y + * position + * + * @see #forceFinished(boolean) + */ + public void abortAnimation() { + mCurrX = mFinalX; + mCurrY = mFinalY; + mFinished = true; + } + + /** + * Extend the scroll animation. This allows a running animation to scroll + * further and longer, when used with {@link #setFinalX(int)} or {@link #setFinalY(int)}. + * + * @param extend Additional time to scroll in milliseconds. + * @see #setFinalX(int) + * @see #setFinalY(int) + */ + public void extendDuration(int extend) { + int passed = timePassed(); + mDuration = passed + extend; + mDurationReciprocal = 1.0f / mDuration; + mFinished = false; + } + + /** + * Returns the time elapsed since the beginning of the scrolling. + * + * @return The elapsed time in milliseconds. + */ + public int timePassed() { + return (int) (AnimationUtils.currentAnimationTimeMillis() - mStartTime); + } + + /** + * Sets the final position (X) for this scroller. + * + * @param newX The new X offset as an absolute distance from the origin. + * @see #extendDuration(int) + * @see #setFinalY(int) + */ + public void setFinalX(int newX) { + mFinalX = newX; + mDeltaX = mFinalX - mStartX; + mFinished = false; + } + + /** + * Sets the final position (Y) for this scroller. + * + * @param newY The new Y offset as an absolute distance from the origin. + * @see #extendDuration(int) + * @see #setFinalX(int) + */ + public void setFinalY(int newY) { + mFinalY = newY; + mDeltaY = mFinalY - mStartY; + mFinished = false; + } + + /** + * @hide + */ + public boolean isScrollingInDirection(float xvel, float yvel) { + return !mFinished && Math.signum(xvel) == Math.signum(mFinalX - mStartX) + && Math.signum(yvel) == Math.signum(mFinalY - mStartY); + } +} diff --git a/android-menudrawer-master/library/src/net/simonvt/menudrawer/SinusoidalInterpolator.java b/android-menudrawer-master/library/src/net/simonvt/menudrawer/SinusoidalInterpolator.java new file mode 100644 index 00000000..e79051a0 --- /dev/null +++ b/android-menudrawer-master/library/src/net/simonvt/menudrawer/SinusoidalInterpolator.java @@ -0,0 +1,15 @@ +package net.simonvt.menudrawer; + +import android.view.animation.Interpolator; + +/** + * Interpolator which, when drawn from 0 to 1, looks like half a sine-wave. Used for smoother opening/closing when + * peeking at the drawer. + */ +public class SinusoidalInterpolator implements Interpolator { + + @Override + public float getInterpolation(float input) { + return (float) (0.5f + 0.5f * Math.sin(input * Math.PI - Math.PI / 2.f)); + } +} diff --git a/android-menudrawer-master/library/src/net/simonvt/menudrawer/SmoothInterpolator.java b/android-menudrawer-master/library/src/net/simonvt/menudrawer/SmoothInterpolator.java new file mode 100644 index 00000000..cfdcb69b --- /dev/null +++ b/android-menudrawer-master/library/src/net/simonvt/menudrawer/SmoothInterpolator.java @@ -0,0 +1,12 @@ +package net.simonvt.menudrawer; + +import android.view.animation.Interpolator; + +public class SmoothInterpolator implements Interpolator { + + @Override + public float getInterpolation(float t) { + t -= 1.0f; + return t * t * t * t * t + 1.0f; + } +} diff --git a/android-menudrawer-master/library/src/net/simonvt/menudrawer/StaticDrawer.java b/android-menudrawer-master/library/src/net/simonvt/menudrawer/StaticDrawer.java new file mode 100644 index 00000000..879f2c95 --- /dev/null +++ b/android-menudrawer-master/library/src/net/simonvt/menudrawer/StaticDrawer.java @@ -0,0 +1,208 @@ +package net.simonvt.menudrawer; + +import android.app.Activity; +import android.content.Context; +import android.graphics.Canvas; +import android.util.AttributeSet; + +public abstract class StaticDrawer extends MenuDrawer { + + protected Position mPosition; + + StaticDrawer(Activity activity, int dragMode) { + super(activity, dragMode); + } + + public StaticDrawer(Context context) { + super(context); + } + + public StaticDrawer(Context context, AttributeSet attrs) { + super(context, attrs); + } + + public StaticDrawer(Context context, AttributeSet attrs, int defStyle) { + super(context, attrs, defStyle); + } + + @Override + protected void dispatchDraw(Canvas canvas) { + super.dispatchDraw(canvas); + if (mDropShadowEnabled) drawDropShadow(canvas); + if (mActiveIndicator != null) drawIndicator(canvas); + } + + private void drawDropShadow(Canvas canvas) { + final int width = getWidth(); + final int height = getHeight(); + final int menuSize = mMenuSize; + final int dropShadowSize = mDropShadowSize; + + switch (mPosition) { + case LEFT: + mDropShadowDrawable.setBounds(menuSize - dropShadowSize, 0, menuSize, height); + break; + + case TOP: + mDropShadowDrawable.setBounds(0, menuSize - dropShadowSize, width, menuSize); + break; + + case RIGHT: + mDropShadowDrawable.setBounds(width - menuSize, 0, width - menuSize + dropShadowSize, height); + break; + + case BOTTOM: + mDropShadowDrawable.setBounds(0, height - menuSize, width, height - menuSize + dropShadowSize); + break; + } + + mDropShadowDrawable.draw(canvas); + } + + protected abstract void drawIndicator(Canvas canvas); + + @Override + protected void onLayout(boolean changed, int l, int t, int r, int b) { + final int width = r - l; + final int height = b - t; + + switch (mPosition) { + case LEFT: + mMenuContainer.layout(0, 0, mMenuSize, height); + mContentContainer.layout(mMenuSize, 0, width, height); + break; + + case RIGHT: + mMenuContainer.layout(width - mMenuSize, 0, width, height); + mContentContainer.layout(0, 0, width - mMenuSize, height); + break; + + case TOP: + mMenuContainer.layout(0, 0, width, mMenuSize); + mContentContainer.layout(0, mMenuSize, width, height); + break; + + case BOTTOM: + mMenuContainer.layout(0, height - mMenuSize, width, height); + mContentContainer.layout(0, 0, width, height - mMenuSize); + break; + } + } + + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + final int widthMode = MeasureSpec.getMode(widthMeasureSpec); + final int heightMode = MeasureSpec.getMode(heightMeasureSpec); + + if (widthMode != MeasureSpec.EXACTLY || heightMode != MeasureSpec.EXACTLY) { + throw new IllegalStateException("Must measure with an exact size"); + } + + final int width = MeasureSpec.getSize(widthMeasureSpec); + final int height = MeasureSpec.getSize(heightMeasureSpec); + + if (!mMenuSizeSet) mMenuSize = (int) (height * 0.25f); + + switch (mPosition) { + case LEFT: + case RIGHT: { + final int childHeightMeasureSpec = MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY); + + final int menuWidth = mMenuSize; + final int menuWidthMeasureSpec = MeasureSpec.makeMeasureSpec(menuWidth, MeasureSpec.EXACTLY); + + final int contentWidth = width - menuWidth; + final int contentWidthMeasureSpec = MeasureSpec.makeMeasureSpec(contentWidth, MeasureSpec.EXACTLY); + + mContentContainer.measure(contentWidthMeasureSpec, childHeightMeasureSpec); + mMenuContainer.measure(menuWidthMeasureSpec, childHeightMeasureSpec); + break; + } + + case TOP: + case BOTTOM: { + final int childWidthMeasureSpec = MeasureSpec.makeMeasureSpec(width, MeasureSpec.EXACTLY); + + final int menuHeight = mMenuSize; + final int menuHeightMeasureSpec = MeasureSpec.makeMeasureSpec(menuHeight, MeasureSpec.EXACTLY); + + final int contentHeight = height - menuHeight; + final int contentHeightMeasureSpec = MeasureSpec.makeMeasureSpec(contentHeight, MeasureSpec.EXACTLY); + + mContentContainer.measure(childWidthMeasureSpec, contentHeightMeasureSpec); + mMenuContainer.measure(childWidthMeasureSpec, menuHeightMeasureSpec); + break; + } + } + + setMeasuredDimension(width, height); + } + + @Override + public void toggleMenu(boolean animate) { + } + + @Override + public void openMenu(boolean animate) { + } + + @Override + public void closeMenu(boolean animate) { + } + + @Override + public boolean isMenuVisible() { + return true; + } + + @Override + public void setMenuSize(int size) { + mMenuSize = size; + mMenuSizeSet = true; + requestLayout(); + invalidate(); + } + + @Override + public void setOffsetMenuEnabled(boolean offsetMenu) { + } + + @Override + public boolean getOffsetMenuEnabled() { + return false; + } + + @Override + public void peekDrawer() { + } + + @Override + public void peekDrawer(long delay) { + } + + @Override + public void peekDrawer(long startDelay, long delay) { + } + + @Override + public void setHardwareLayerEnabled(boolean enabled) { + } + + @Override + public int getTouchMode() { + return TOUCH_MODE_NONE; + } + + @Override + public void setTouchMode(int mode) { + } + + @Override + public void setTouchBezelSize(int size) { + } + + @Override + public int getTouchBezelSize() { + return 0; + } +} diff --git a/android-menudrawer-master/library/src/net/simonvt/menudrawer/TopDrawer.java b/android-menudrawer-master/library/src/net/simonvt/menudrawer/TopDrawer.java new file mode 100644 index 00000000..0af2c6ba --- /dev/null +++ b/android-menudrawer-master/library/src/net/simonvt/menudrawer/TopDrawer.java @@ -0,0 +1,216 @@ +package net.simonvt.menudrawer; + +import android.app.Activity; +import android.content.Context; +import android.graphics.Canvas; +import android.graphics.drawable.GradientDrawable; +import android.util.AttributeSet; +import android.view.MotionEvent; + +public class TopDrawer extends VerticalDrawer { + + private int mIndicatorLeft; + + TopDrawer(Activity activity, int dragMode) { + super(activity, dragMode); + } + + public TopDrawer(Context context) { + super(context); + } + + public TopDrawer(Context context, AttributeSet attrs) { + super(context, attrs); + } + + public TopDrawer(Context context, AttributeSet attrs, int defStyle) { + super(context, attrs, defStyle); + } + + @Override + public void openMenu(boolean animate) { + animateOffsetTo(mMenuSize, 0, animate); + } + + @Override + public void closeMenu(boolean animate) { + animateOffsetTo(0, 0, animate); + } + + @Override + public void setDropShadowColor(int color) { + final int endColor = color & 0x00FFFFFF; + mDropShadowDrawable = new GradientDrawable(GradientDrawable.Orientation.BOTTOM_TOP, + new int[] { + color, + endColor, + }); + invalidate(); + } + + @Override + protected void onLayout(boolean changed, int l, int t, int r, int b) { + final int width = r - l; + final int height = b - t; + final int offsetPixels = (int) mOffsetPixels; + + mMenuContainer.layout(0, 0, width, mMenuSize); + offsetMenu(offsetPixels); + + if (USE_TRANSLATIONS) { + mContentContainer.layout(0, 0, width, height); + } else { + mContentContainer.layout(0, offsetPixels, width, height + offsetPixels); + } + } + + /** + * Offsets the menu relative to its original position based on the position of the content. + * + * @param offsetPixels The number of pixels the content if offset. + */ + private void offsetMenu(int offsetPixels) { + if (mOffsetMenu && mMenuSize != 0) { + final int menuSize = mMenuSize; + final float openRatio = (menuSize - (float) offsetPixels) / menuSize; + + if (USE_TRANSLATIONS) { + if (offsetPixels > 0) { + final int offset = (int) (0.25f * (-openRatio * menuSize)); + mMenuContainer.setTranslationY(offset); + } else { + mMenuContainer.setTranslationY(-menuSize); + } + + } else { + final int oldMenuTop = mMenuContainer.getTop(); + final int offset = (int) (0.25f * (-openRatio * menuSize)) - oldMenuTop; + mMenuContainer.offsetTopAndBottom(offset); + mMenuContainer.setVisibility(offsetPixels == 0 ? INVISIBLE : VISIBLE); + } + } + } + + @Override + protected void drawDropShadow(Canvas canvas, int offsetPixels) { + final int width = getWidth(); + + mDropShadowDrawable.setBounds(0, offsetPixels - mDropShadowSize, width, offsetPixels); + mDropShadowDrawable.draw(canvas); + } + + @Override + protected void drawMenuOverlay(Canvas canvas, int offsetPixels) { + final int width = getWidth(); + final float openRatio = ((float) offsetPixels) / mMenuSize; + + mMenuOverlay.setBounds(0, 0, width, offsetPixels); + mMenuOverlay.setAlpha((int) (MAX_MENU_OVERLAY_ALPHA * (1.f - openRatio))); + mMenuOverlay.draw(canvas); + } + + @Override + protected void drawIndicator(Canvas canvas, int offsetPixels) { + if (mActiveView != null && isViewDescendant(mActiveView)) { + Integer position = (Integer) mActiveView.getTag(R.id.mdActiveViewPosition); + final int pos = position == null ? 0 : position; + + if (pos == mActivePosition) { + final int menuHeight = mMenuSize; + final int indicatorHeight = mActiveIndicator.getHeight(); + + final float openRatio = ((float) offsetPixels) / menuHeight; + + mActiveView.getDrawingRect(mActiveRect); + offsetDescendantRectToMyCoords(mActiveView, mActiveRect); + final int indicatorWidth = mActiveIndicator.getWidth(); + + final float interpolatedRatio = 1.f - INDICATOR_INTERPOLATOR.getInterpolation((1.f - openRatio)); + final int interpolatedHeight = (int) (indicatorHeight * interpolatedRatio); + + final int indicatorTop = offsetPixels - interpolatedHeight; + if (mIndicatorAnimating) { + final int finalLeft = mActiveRect.left + ((mActiveRect.width() - indicatorWidth) / 2); + final int startLeft = mIndicatorStartPos; + final int diff = finalLeft - startLeft; + final int startOffset = (int) (diff * mIndicatorOffset); + mIndicatorLeft = startLeft + startOffset; + } else { + mIndicatorLeft = mActiveRect.left + ((mActiveRect.width() - indicatorWidth) / 2); + } + + canvas.save(); + canvas.clipRect(mIndicatorLeft, indicatorTop, mIndicatorLeft + indicatorWidth, offsetPixels); + canvas.drawBitmap(mActiveIndicator, mIndicatorLeft, indicatorTop, null); + canvas.restore(); + } + } + } + + @Override + protected int getIndicatorStartPos() { + return mIndicatorLeft; + } + + @Override + protected void initPeekScroller() { + final int dx = mMenuSize / 3; + mPeekScroller.startScroll(0, 0, dx, 0, PEEK_DURATION); + } + + @Override + protected void onOffsetPixelsChanged(int offsetPixels) { + if (USE_TRANSLATIONS) { + mContentContainer.setTranslationY(offsetPixels); + offsetMenu(offsetPixels); + invalidate(); + } else { + mContentContainer.offsetTopAndBottom(offsetPixels - mContentContainer.getTop()); + offsetMenu(offsetPixels); + invalidate(); + } + } + + ////////////////////////////////////////////////////////////////////// + // Touch handling + ////////////////////////////////////////////////////////////////////// + + @Override + protected boolean isContentTouch(MotionEvent ev) { + return ev.getY() > mOffsetPixels; + } + + @Override + protected boolean onDownAllowDrag(MotionEvent ev) { + return (!mMenuVisible && mInitialMotionY <= mTouchSize) + || (mMenuVisible && mInitialMotionY >= mOffsetPixels); + } + + @Override + protected boolean onMoveAllowDrag(MotionEvent ev, float diff) { + return (!mMenuVisible && mInitialMotionY <= mTouchSize && (diff > 0)) + || (mMenuVisible && mInitialMotionY >= mOffsetPixels); + } + + @Override + protected void onMoveEvent(float dx) { + setOffsetPixels(Math.min(Math.max(mOffsetPixels + dx, 0), mMenuSize)); + } + + @Override + protected void onUpEvent(MotionEvent ev) { + final int offsetPixels = (int) mOffsetPixels; + + if (mIsDragging) { + mVelocityTracker.computeCurrentVelocity(1000, mMaxVelocity); + final int initialVelocity = (int) mVelocityTracker.getXVelocity(); + mLastMotionY = ev.getY(); + animateOffsetTo(mVelocityTracker.getYVelocity() > 0 ? mMenuSize : 0, initialVelocity, + true); + + // Close the menu when content is clicked while the menu is visible. + } else if (mMenuVisible && ev.getY() > offsetPixels) { + closeMenu(); + } + } +} diff --git a/android-menudrawer-master/library/src/net/simonvt/menudrawer/TopStaticDrawer.java b/android-menudrawer-master/library/src/net/simonvt/menudrawer/TopStaticDrawer.java new file mode 100644 index 00000000..ac846148 --- /dev/null +++ b/android-menudrawer-master/library/src/net/simonvt/menudrawer/TopStaticDrawer.java @@ -0,0 +1,82 @@ +package net.simonvt.menudrawer; + +import android.app.Activity; +import android.content.Context; +import android.graphics.Canvas; +import android.graphics.drawable.GradientDrawable; +import android.util.AttributeSet; + +public class TopStaticDrawer extends StaticDrawer { + + private int mIndicatorLeft; + + TopStaticDrawer(Activity activity, int dragMode) { + super(activity, dragMode); + } + + public TopStaticDrawer(Context context) { + super(context); + } + + public TopStaticDrawer(Context context, AttributeSet attrs) { + super(context, attrs); + } + + public TopStaticDrawer(Context context, AttributeSet attrs, int defStyle) { + super(context, attrs, defStyle); + } + + @Override + protected void initDrawer(Context context, AttributeSet attrs, int defStyle) { + super.initDrawer(context, attrs, defStyle); + mPosition = Position.TOP; + } + + @Override + public void setDropShadowColor(int color) { + final int endColor = color & 0x00FFFFFF; + mDropShadowDrawable = new GradientDrawable(GradientDrawable.Orientation.BOTTOM_TOP, new int[] { + color, + endColor, + }); + invalidate(); + } + + @Override + protected void drawIndicator(Canvas canvas) { + if (mActiveView != null && isViewDescendant(mActiveView)) { + Integer position = (Integer) mActiveView.getTag(R.id.mdActiveViewPosition); + final int pos = position == null ? 0 : position; + + if (pos == mActivePosition) { + final int menuHeight = mMenuSize; + final int indicatorHeight = mActiveIndicator.getHeight(); + + mActiveView.getDrawingRect(mActiveRect); + offsetDescendantRectToMyCoords(mActiveView, mActiveRect); + final int indicatorWidth = mActiveIndicator.getWidth(); + + final int indicatorTop = menuHeight - indicatorHeight; + if (mIndicatorAnimating) { + final int finalLeft = mActiveRect.left + ((mActiveRect.width() - indicatorWidth) / 2); + final int startLeft = mIndicatorStartPos; + final int diff = finalLeft - startLeft; + final int startOffset = (int) (diff * mIndicatorOffset); + mIndicatorLeft = startLeft + startOffset; + } else { + mIndicatorLeft = mActiveRect.left + ((mActiveRect.width() - indicatorWidth) / 2); + } + + canvas.save(); + canvas.clipRect(mIndicatorLeft, indicatorTop, mIndicatorLeft + indicatorWidth, menuHeight); + canvas.drawBitmap(mActiveIndicator, mIndicatorLeft, indicatorTop, null); + canvas.restore(); + } + } + } + + @Override + protected int getIndicatorStartPos() { + return mIndicatorLeft; + } +} diff --git a/android-menudrawer-master/library/src/net/simonvt/menudrawer/VerticalDrawer.java b/android-menudrawer-master/library/src/net/simonvt/menudrawer/VerticalDrawer.java new file mode 100644 index 00000000..415d4989 --- /dev/null +++ b/android-menudrawer-master/library/src/net/simonvt/menudrawer/VerticalDrawer.java @@ -0,0 +1,216 @@ +package net.simonvt.menudrawer; + +import android.app.Activity; +import android.content.Context; +import android.util.AttributeSet; +import android.view.MotionEvent; +import android.view.VelocityTracker; + +public abstract class VerticalDrawer extends DraggableDrawer { + + VerticalDrawer(Activity activity, int dragMode) { + super(activity, dragMode); + } + + public VerticalDrawer(Context context) { + super(context); + } + + public VerticalDrawer(Context context, AttributeSet attrs) { + super(context, attrs); + } + + public VerticalDrawer(Context context, AttributeSet attrs, int defStyle) { + super(context, attrs, defStyle); + } + + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + final int widthMode = MeasureSpec.getMode(widthMeasureSpec); + final int heightMode = MeasureSpec.getMode(heightMeasureSpec); + + if (widthMode != MeasureSpec.EXACTLY || heightMode != MeasureSpec.EXACTLY) { + throw new IllegalStateException("Must measure with an exact size"); + } + + final int width = MeasureSpec.getSize(widthMeasureSpec); + final int height = MeasureSpec.getSize(heightMeasureSpec); + + if (!mMenuSizeSet) mMenuSize = (int) (height * 0.25f); + if (mOffsetPixels == -1) openMenu(false); + + final int menuWidthMeasureSpec = getChildMeasureSpec(widthMeasureSpec, 0, width); + final int menuHeightMeasureSpec = getChildMeasureSpec(widthMeasureSpec, 0, mMenuSize); + mMenuContainer.measure(menuWidthMeasureSpec, menuHeightMeasureSpec); + + final int contentWidthMeasureSpec = getChildMeasureSpec(widthMeasureSpec, 0, width); + final int contentHeightMeasureSpec = getChildMeasureSpec(widthMeasureSpec, 0, height); + mContentContainer.measure(contentWidthMeasureSpec, contentHeightMeasureSpec); + + setMeasuredDimension(width, height); + + updateTouchAreaSize(); + } + + @Override + public boolean onInterceptTouchEvent(MotionEvent ev) { + final int action = ev.getAction() & MotionEvent.ACTION_MASK; + + if (action == MotionEvent.ACTION_DOWN && mMenuVisible && isCloseEnough()) { + setOffsetPixels(0); + stopAnimation(); + endPeek(); + setDrawerState(STATE_CLOSED); + } + + // Always intercept events over the content while menu is visible. + if (mMenuVisible && isContentTouch(ev)) { + return true; + } + + if (mTouchMode == TOUCH_MODE_NONE) { + return false; + } + + if (action != MotionEvent.ACTION_DOWN) { + if (mIsDragging) { + return true; + } + } + + switch (action) { + case MotionEvent.ACTION_DOWN: { + mLastMotionX = mInitialMotionX = ev.getX(); + mLastMotionY = mInitialMotionY = ev.getY(); + final boolean allowDrag = onDownAllowDrag(ev); + + if (allowDrag) { + setDrawerState(mMenuVisible ? STATE_OPEN : STATE_CLOSED); + stopAnimation(); + endPeek(); + mIsDragging = false; + } + break; + } + + case MotionEvent.ACTION_MOVE: { + final float x = ev.getX(); + final float dx = x - mLastMotionX; + final float xDiff = Math.abs(dx); + final float y = ev.getY(); + final float dy = y - mLastMotionY; + final float yDiff = Math.abs(dy); + + if (yDiff > mTouchSlop && yDiff > xDiff) { + if (mOnInterceptMoveEventListener != null && mTouchMode == TOUCH_MODE_FULLSCREEN + && canChildScrollVertically(mContentContainer, false, (int) dx, (int) x, (int) y)) { + endDrag(); // Release the velocity tracker + return false; + } + + final boolean allowDrag = onMoveAllowDrag(ev, dy); + + if (allowDrag) { + setDrawerState(STATE_DRAGGING); + mIsDragging = true; + mLastMotionX = x; + mLastMotionY = y; + } + } + break; + } + + /** + * If you click really fast, an up or cancel event is delivered here. Just snap content to + * whatever is closest. + */ + case MotionEvent.ACTION_CANCEL: + case MotionEvent.ACTION_UP: { + if (Math.abs(mOffsetPixels) > mMenuSize / 2) { + openMenu(); + } else { + closeMenu(); + } + break; + } + } + + if (mVelocityTracker == null) { + mVelocityTracker = VelocityTracker.obtain(); + } + mVelocityTracker.addMovement(ev); + + return mIsDragging; + } + + @Override + public boolean onTouchEvent(MotionEvent ev) { + if (!mMenuVisible && !mIsDragging && (mTouchMode == TOUCH_MODE_NONE)) { + return false; + } + final int action = ev.getAction() & MotionEvent.ACTION_MASK; + + if (mVelocityTracker == null) { + mVelocityTracker = VelocityTracker.obtain(); + } + mVelocityTracker.addMovement(ev); + + switch (action) { + case MotionEvent.ACTION_DOWN: { + mLastMotionX = mInitialMotionX = ev.getX(); + mLastMotionY = mInitialMotionY = ev.getY(); + final boolean allowDrag = onDownAllowDrag(ev); + + if (allowDrag) { + stopAnimation(); + endPeek(); + startLayerTranslation(); + } + break; + } + + case MotionEvent.ACTION_MOVE: { + if (!mIsDragging) { + final float x = ev.getX(); + final float dx = x - mLastMotionX; + final float xDiff = Math.abs(dx); + final float y = ev.getY(); + final float dy = y - mLastMotionY; + final float yDiff = Math.abs(dy); + + if (yDiff > mTouchSlop && yDiff > xDiff) { + final boolean allowDrag = onMoveAllowDrag(ev, dy); + + if (allowDrag) { + setDrawerState(STATE_DRAGGING); + mIsDragging = true; + mLastMotionY = y - mInitialMotionY > 0 + ? mInitialMotionY + mTouchSlop + : mInitialMotionY - mTouchSlop; + } + } + } + + if (mIsDragging) { + startLayerTranslation(); + + final float y = ev.getY(); + final float dy = y - mLastMotionY; + + mLastMotionY = y; + onMoveEvent(dy); + } + break; + } + + case MotionEvent.ACTION_CANCEL: + case MotionEvent.ACTION_UP: { + onUpEvent(ev); + break; + } + } + + return true; + } + +} diff --git a/android-menudrawer-master/pom.xml b/android-menudrawer-master/pom.xml new file mode 100644 index 00000000..eda6dd91 --- /dev/null +++ b/android-menudrawer-master/pom.xml @@ -0,0 +1,126 @@ + + + + 4.0.0 + + + org.sonatype.oss + oss-parent + 7 + + + net.simonvt + android-menudrawer-parent + pom + 2.0.3-SNAPSHOT + + Android MenuDrawer (Parent) + A menu drawer implementation which allows dragging of both the content, and the entire window. + https://github.com/SimonVT/android-menudrawer + 2012 + + + library + samples + + + + http://github.com/SimonVT/android-menudrawer/ + scm:git:git://github.com/SimonVT/android-menudrawer.git + scm:git:git@github.com:SimonVT/android-menudrawer.git + HEAD + + + + + Apache License Version 2.0 + http://www.apache.org/licenses/LICENSE-2.0.txt + repo + + + + + GitHub Issues + https://github.com/SimonVT/android-menudrawer/issues + + + + UTF-8 + UTF-8 + + 1.6 + 4.1.1.4 + 16 + + r7 + + + + + + com.google.android + android + ${android.version} + + + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.0 + + ${java.version} + ${java.version} + + + + + com.jayway.maven.plugins.android.generation2 + android-maven-plugin + 3.5.1 + + + ${android.platform} + + + true + + + + + + + org.apache.maven.plugins + maven-release-plugin + 2.4 + + true + + + + + org.apache.maven.plugins + maven-checkstyle-plugin + 2.9.1 + + true + + ../checkstyle.xml + true + + + + verify + + checkstyle + + + + + + + diff --git a/android-menudrawer-master/samples/AndroidManifest.xml b/android-menudrawer-master/samples/AndroidManifest.xml new file mode 100644 index 00000000..7323fa61 --- /dev/null +++ b/android-menudrawer-master/samples/AndroidManifest.xml @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/android-menudrawer-master/samples/build.xml b/android-menudrawer-master/samples/build.xml new file mode 100644 index 00000000..9eb8fb98 --- /dev/null +++ b/android-menudrawer-master/samples/build.xml @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/android-menudrawer-master/samples/libs/android-support-v4-r10.jar b/android-menudrawer-master/samples/libs/android-support-v4-r10.jar new file mode 100644 index 0000000000000000000000000000000000000000..feaf44f8018aba0e3e4f5f8e7115101dcb4d00ef GIT binary patch literal 349252 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 vQtTtaF%{4o|h}R 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�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�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 nKwb%0FlSsh;2Zo_FJZpq}z>+KE8btpO6-W8x literal 0 HcmV?d00001 diff --git a/android-menudrawer-master/samples/pom.xml b/android-menudrawer-master/samples/pom.xml new file mode 100644 index 00000000..5baaac76 --- /dev/null +++ b/android-menudrawer-master/samples/pom.xml @@ -0,0 +1,47 @@ + + + + 4.0.0 + + + net.simonvt + android-menudrawer-parent + 2.0.3-SNAPSHOT + ../pom.xml + + + android-menudrawer-sample + Android MenuDrawer Sample + apk + + + + com.google.android + android + provided + + + net.simonvt + android-menudrawer + ${project.version} + apklib + + + com.google.android + support-v4 + ${android-support.version} + + + + + src + + + + com.jayway.maven.plugins.android.generation2 + android-maven-plugin + true + + + + diff --git a/android-menudrawer-master/samples/project.properties b/android-menudrawer-master/samples/project.properties new file mode 100644 index 00000000..0a62d816 --- /dev/null +++ b/android-menudrawer-master/samples/project.properties @@ -0,0 +1,15 @@ +# This file is automatically generated by Android Tools. +# Do not modify this file -- YOUR CHANGES WILL BE ERASED! +# +# This file must be checked in Version Control Systems. +# +# To customize properties used by the Ant build system edit +# "ant.properties", and override values to adapt the script to your +# project structure. +# +# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home): +#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt + +# Project target. +target=android-16 +android.library.reference.1=../library diff --git a/android-menudrawer-master/samples/res/drawable-hdpi-v14/menu_arrow.png b/android-menudrawer-master/samples/res/drawable-hdpi-v14/menu_arrow.png new file mode 100644 index 0000000000000000000000000000000000000000..add3b361868afdf4ea5d15f8d3abe0d28d05e7d6 GIT binary patch literal 1568 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 MSl>bq2X&7AABcbM^#A|> literal 0 HcmV?d00001 diff --git a/android-menudrawer-master/samples/res/drawable-hdpi/ic_action_select_all_dark.png b/android-menudrawer-master/samples/res/drawable-hdpi/ic_action_select_all_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..c87c3f8370f1de51f35c46e1798638e415865406 GIT binary patch literal 2861 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 literal 0 HcmV?d00001 diff --git a/android-menudrawer-master/samples/res/drawable-hdpi/md__category_background.9.png b/android-menudrawer-master/samples/res/drawable-hdpi/md__category_background.9.png new file mode 100644 index 0000000000000000000000000000000000000000..43a20adcb19dd73d32f7555dfd96e5294800bc82 GIT binary patch literal 173 zcmeAS@N?(olHy`uVBq!ia0vp^+(2x^!3HF|ZYnwhDVAa<&kznEsNqQI0P;BtJR*yM z>N-J~(fs7;wLn3CPZ!4!kIuJO4Y>{&@Hhvq{NlFv|INDNQ&?t6z4B$!f5v;Ln>B;0 zU-ImdKI;Vst0HI7c0ssI2 literal 0 HcmV?d00001 diff --git a/android-menudrawer-master/samples/res/drawable-hdpi/md__list_focused_holo.9.png b/android-menudrawer-master/samples/res/drawable-hdpi/md__list_focused_holo.9.png new file mode 100644 index 0000000000000000000000000000000000000000..555270842a739eb45d404ab473ad38a4c730240c GIT binary patch literal 191 zcmeAS@N?(olHy`uVBq!ia0vp^+#t-s1|(OmDOUqhEX7WqAsj$Z!;#Vf2?p zbb>IW`N`93fr5#iE{-7*Q>RY2$k|}PUG3I8+hq?M&UySt({#?YOY9F7 zV)|4jusAQAw~U49z^wIm)#n)N-o9e&+IDtd30r~4TeZ_)uKQd*6*KFj^h@OhGw-CF i@bOgmX?1Mk5ox7hDXx8`mUDoXF?hQAxvX2?p zbb>IW`N`93fr2)kE{-7*QBRJJkl{&7FVVepxUS$Rt1LT2VAvn7lLLt0oo!v4%( tpjG6n=4tr&fORvYRP%q%M>EqU82;Q9of*be(FHVz!PC{xWt~$(699PnDoy|Z literal 0 HcmV?d00001 diff --git a/android-menudrawer-master/samples/res/drawable-hdpi/md__list_pressed_holo_dark.9.png b/android-menudrawer-master/samples/res/drawable-hdpi/md__list_pressed_holo_dark.9.png new file mode 100644 index 0000000000000000000000000000000000000000..5654cd69429fd0a3502a05b5f827bffab89cc7e0 GIT binary patch literal 159 zcmeAS@N?(olHy`uVBq!ia0vp^+#t-s1|(OmDOUqhEX7WqAsj$Z!;#Vf2?p zbb>IW`N`93fr5^nE{-7*QD_LZ%D`aoRl?HIGCc%n7=x#)pUXO@geCyJM=ZAh literal 0 HcmV?d00001 diff --git a/android-menudrawer-master/samples/res/drawable-hdpi/md__list_selector_disabled_holo_dark.9.png b/android-menudrawer-master/samples/res/drawable-hdpi/md__list_selector_disabled_holo_dark.9.png new file mode 100644 index 0000000000000000000000000000000000000000..f6fd30dcdc9c39c836e509486854f9da03486892 GIT binary patch literal 189 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 KMNUMnLSTZ-2)DNY literal 0 HcmV?d00001 diff --git a/android-menudrawer-master/samples/res/drawable-hdpi/menu_arrow_right.png b/android-menudrawer-master/samples/res/drawable-hdpi/menu_arrow_right.png new file mode 100644 index 0000000000000000000000000000000000000000..2fb6a937e65bbb2e4d380f0fbf81fd953f6ec870 GIT binary patch literal 1524 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 literal 0 HcmV?d00001 diff --git a/android-menudrawer-master/samples/res/drawable-mdpi-v14/menu_arrow.png b/android-menudrawer-master/samples/res/drawable-mdpi-v14/menu_arrow.png new file mode 100644 index 0000000000000000000000000000000000000000..26d775951649d52d79bb1457d292f46060cdb187 GIT binary patch literal 891 zcmV->1BCpEP)2I z$CjlFmV5-lnn3vY0kUIDNC+GLfrLP4&>#yXAz%|AZPQ3$WbDiw7g8g1Xve!g?~`+% z$vJn3nc?*ikw~Z0vREw2P$*>Y?Ce>zTTIh@EQIJL zqSr%1Lt$Ol-vU5g01*jQRqvao8C4V|#mqgKOeQ%vIM`mTxf4J{6pcpx0K&FycLC^) zL?SPzrlw+2%D?VhC03;|bI5U=1QGT6e7;w+v$L^KC?s#(&n=8=X#k!9=pmxi#KgqY zWHKpl*SmEfbX{)&@R*sq0dx-x47}*?@AtcPdjoJ=8i1ZuDwP}_9uB&Nfqx{rNehR= zT{AN?nxfqOu|zfOCT(tR?vbjhbY~iX_+M#m9Z-9F`+XvcF>?kDq}2ctiG*SpMk^6@ z0!XLR=|nwgHGs>@OF=~U0I1BYjf{+_^`zAR0)c?T%s&AXh$uflKVPsc%QHac^LcJ- zYjY}<3KLQD$;rus^Ye4HudmOO0|@}7QppYk0;ZJG0?@p_zuyvxM6}M%&W3jp{AZ_G z!C>$QfUf{HnK?T>J^gKOZ_jQB003s@gM))#L{t<)d|~E|N~N+pIy(BjP$<-0ntx}3 znK_rsnO9d=XO8210WyJyW~Wdn7=FJ$XIWMjz-Bg^-CI~#D0>22 zALsb^_yWKo5p4n3T3%k>Ut3!O7dklRvEPftHjPEH=$ zw(T?oTtjN4Zf|ezE-fv6tkyJq8>{;w91gb>~g*XqV9l}c(; zQ_~Y6L{QVT-1_?Z2Tya$%uGbT;_-OVFboSob3UKHI668S@cg`AcT)3z@EbH<#002ovPDHLkV1ngIe8d0% literal 0 HcmV?d00001 diff --git a/android-menudrawer-master/samples/res/drawable-mdpi-v14/menu_arrow_bottom.png b/android-menudrawer-master/samples/res/drawable-mdpi-v14/menu_arrow_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..af8e7b909de1ea441ae012126f5560e43022ab06 GIT binary patch literal 904 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 Ef(G@71^@s6 literal 0 HcmV?d00001 diff --git a/android-menudrawer-master/samples/res/drawable-mdpi/ic_action_refresh_dark.png b/android-menudrawer-master/samples/res/drawable-mdpi/ic_action_refresh_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..bd611e8e24d2e211a94d1658a49c823c4201716f GIT binary patch literal 3033 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 IFo%f$0VKS%G5`Po literal 0 HcmV?d00001 diff --git a/android-menudrawer-master/samples/res/drawable-mdpi/ic_action_select_all_dark.png b/android-menudrawer-master/samples/res/drawable-mdpi/ic_action_select_all_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..252ecbb0ed5859936c521a24c6ac434da150f6de GIT binary patch literal 2846 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 literal 0 HcmV?d00001 diff --git a/android-menudrawer-master/samples/res/drawable-mdpi/ic_launcher.png b/android-menudrawer-master/samples/res/drawable-mdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..359047dfa4ed206e41e2354f9c6b307e713efe32 GIT binary patch literal 5237 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 literal 0 HcmV?d00001 diff --git a/android-menudrawer-master/samples/res/drawable-mdpi/ic_menu_moreoverflow_normal_holo_light.png b/android-menudrawer-master/samples/res/drawable-mdpi/ic_menu_moreoverflow_normal_holo_light.png new file mode 100644 index 0000000000000000000000000000000000000000..01d681697f799729aa60bcc03878b8718ef5f705 GIT binary patch literal 131 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzFHaZ8kch)?uW#gKP~c&9OkaNH zNWhsXa}P0HP*CC8e>x;QVw%w1wevX{81fiqT9$oZHH(4a215zM2{s3I28IOo7eJ#J d>KPlRN5&o6d@ywr|9haR44$rjF6*2UngC}HDAND{ literal 0 HcmV?d00001 diff --git a/android-menudrawer-master/samples/res/drawable-mdpi/md__category_background.9.png b/android-menudrawer-master/samples/res/drawable-mdpi/md__category_background.9.png new file mode 100644 index 0000000000000000000000000000000000000000..af0bc168d5874115709681fbedafb07826a02351 GIT binary patch literal 165 zcmeAS@N?(olHy`uVBq!ia0vp^96+qZ!3HFgEN0vWQY^(zo*^7SP{WbZ0pxQQctjR6 zFmQK*Fr)d&(`$i(?w&4=Ar`%FCmV7xDDW@~e{}!%Klk~9W+&H!TiIp3`YtSG+Hzpd z#y621Pt&Gs{iIU!vCNrEbIFEaRnCmSjNkVX9JU?iXTQVf_Cz%GW$8;tppguou6{1- HoD!M4nJ zaCd?*qxs3xYk`8ko-U3d5>tD79C;fY1elknGfSSZkgss!Fq+WV_wb)ql1{DGd2)`S!@o4yre42YU?3urKd Mr>mdKI;Vst081n_F8}}l literal 0 HcmV?d00001 diff --git a/android-menudrawer-master/samples/res/drawable-mdpi/md__list_longpressed_holo.9.png b/android-menudrawer-master/samples/res/drawable-mdpi/md__list_longpressed_holo.9.png new file mode 100644 index 0000000000000000000000000000000000000000..3bf8e03623c94b68d31963ffe7e59c72c3dcc059 GIT binary patch literal 151 zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqEX7WqAsj$Z!;#Vf4nJ zaCd?*qxs3xYk`86o-U3d5>t~CW>mH@a{g&g;s7!l1y4Byva-KaJLVIiI)OpBYodjS ofJx&-C1HsL_x|*Yp0_#7zz}{&aC*>dO_0?Lp00i_>zopr00f~Zw*UYD literal 0 HcmV?d00001 diff --git a/android-menudrawer-master/samples/res/drawable-mdpi/md__list_pressed_holo_dark.9.png b/android-menudrawer-master/samples/res/drawable-mdpi/md__list_pressed_holo_dark.9.png new file mode 100644 index 0000000000000000000000000000000000000000..6e77525d2dbbc1673145d60d775602c85264330d GIT binary patch literal 158 zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqEX7WqAsj$Z!;#Vf4nJ zaCd?*qxs3xYk`6eo-U3d5>t~6?){p=$oZ!|i46oEul1LdSlBa@C*nY4{!0_J9HA2p woHspUxHx7V@R-QS6OjM!cw6swyHo~-e~lvMp^1B@1I=RaboFyt=akR{0Ay(_r~m)} literal 0 HcmV?d00001 diff --git a/android-menudrawer-master/samples/res/drawable-mdpi/md__list_selector_disabled_holo_dark.9.png b/android-menudrawer-master/samples/res/drawable-mdpi/md__list_selector_disabled_holo_dark.9.png new file mode 100644 index 0000000000000000000000000000000000000000..92da2f0dd3711a2ceb843768cafd6b91a2807b43 GIT binary patch literal 172 zcmeAS@N?(olHy`uVBq!ia0vp^{6MVD!3HFkzrK_Oq*#ibJVQ8upoSx*1IXtr@Q5sC zVBqcqVMg#;uvX%d>fBtxy+SfFGJhTv9Z9>9n%%Tr7{oI+Q@DMao9hQt@O?p#8;eZd15IY| MboFyt=akR{068-?^#A|> literal 0 HcmV?d00001 diff --git a/android-menudrawer-master/samples/res/drawable-mdpi/menu_arrow.png b/android-menudrawer-master/samples/res/drawable-mdpi/menu_arrow.png new file mode 100644 index 0000000000000000000000000000000000000000..ecacda71130fb1e1b0b2ab9afbeb05c7c14532b8 GIT binary patch literal 869 zcmV-r1DgDaP)$N{`01*y{8%w29 zLGZvPKCcc83^;Ni0U(#lSzfQVB&9R~G^A3g zMorUNVzF4=aTomODw;l@FAv}wfFv_-O-xLD-`?J~>H+|OnR$12_l$^+gb-htdF|}% zY-eO-2$hudV2cPw(S&vwS$9$)adAFrk2zz)5y$rHk&PaJf5^^ znp*&p$z<~L^z?MW5#apT`}_OH0QQJz1Hi`o{QTEMB2jV#xUJOxvlA~WsUr2$*x1;f zX_|Ijz&Yfa)YaA1op?OHTDOJDRsbl$V6d5pqC$usB2rdXR*Xm_^3KuYdaIP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGh*8l(w*8xH( zn|J^K02y>eSaefwW^{L9a%BK_cXuvnZfkR6VQ^(GZ*pgw?mQX*00P%ZL_t(YOTAUg zPFhhEy${}x-n8;iM4AX`nnGeI!H~}U1}6?pNH7ll0ge8HF>#_Zm^fk9Q5{H2N?Kzo zg&ImDB^s4RD0q2zxpr+@8mmyKT5qy*xaXd;*V=2Zb6^;TVbkffLz1NU#XUZRN4SK~ z_|3jhB*MozD9Rf!#BC&_@TRxw!BbR)2 zZ%5P7LTspMwb~OLt6lW*6_UJ!iMJ*vCsWktP9$iazSBBdPy1*;<)M6?2y|8Ak|KTi z+pRb|JLB|vy^Jea!d&Z5xL@%0x*yGZsmUXL-`xNJ N002ovPDHLkV1kRNn2-Pf literal 0 HcmV?d00001 diff --git a/android-menudrawer-master/samples/res/drawable-mdpi/menu_arrow_right.png b/android-menudrawer-master/samples/res/drawable-mdpi/menu_arrow_right.png new file mode 100644 index 0000000000000000000000000000000000000000..3222d034e9d310f481d1dcded81587abfaa5ec5b GIT binary patch literal 855 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 literal 0 HcmV?d00001 diff --git a/android-menudrawer-master/samples/res/drawable-xhdpi-v14/menu_arrow_right.png b/android-menudrawer-master/samples/res/drawable-xhdpi-v14/menu_arrow_right.png new file mode 100644 index 0000000000000000000000000000000000000000..85591b81d5911d09543213e38f17ecfc58b0b726 GIT binary patch literal 1669 zcmV;027394P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGvuK)lWuK`{f zksJU302y>eSaefwW^{L9a%BK_cXuvnZfkR6VQ^(GZ*pgw?mQX*00reqL_t(&L(N)C zNMlzR&O;NE%#4Z2Bqlyk5GyEM2rk-%n?hHLJ9X1-p|mR>AS#HUBKV*SH*VXFx)8)& zX*X`V(nV3QA}BsGCdL@YNu1my+V4BuE7pn4&AX8*?g^A`yelX3MzU?#%Y~_C0RzOGSd#K(aoB;O%qz2c4`}=zzNr0H0E~2|+lQ3RfTnL57F@9VwzIRd z0pM@ZYG?%#p;e#_cRHPZ1xr|DiSiQy7@>J`a`LO{>S_}3k_5m735d~$e|KVvI%J75 zt1q$mSQi%;zkuJX0PMraYiS9%pq4X3Q4}YL*nK{q?wRqTm|9v|?BnC(1a`v$njY#v zCP4Sd66JrYxx2gDf%SoI&_qdB)PsaHQRbXZgM))_+S}XR9JM-nPR}~H!Y@OVISD}V zhS}L!m)GkRdH}G{19c%olsO4-!SQ%J#`*bq5B%-|un&)b&5D1jxeNlmF*|ih``HB*tHsq8V3I3V9 zSm-dl7ln>A3y9%7TPbl{15hS0B9lTE(_mmmMV2VCF58VdIw(75p-cN%J=#eT!X z@bK^z%pAkBD}aa5M*top8B|w_-EJ2Ju5=6Fqj~PB(L$Eot-O!qn!i%6eP~jhhT|oWYP(4`w(2Z3pO@3l51;g1dgD+1Mn&O z6Iy|;0ErKM<$YE|_dhA2RVE#lf7}UTYcUN>{=yY2^ujq6UkRiIF3CI#%Q3Pa)u3!SH=&p-h z>0X+C+Vh;VU}0h5y%t`JS?P2U*xcNVudc3&Y(|Z61+R2P6WHJ1PfSfsF|b@=Sipj+(LM!9@ zHHakCv??Rx%;^7dXa&EAmX?-&jKyM6_?fwUkfX+Px**H~gE^fH(Ph(sa&&a`9p*ce zNLDUkfS==<$8{l0wQG<{yp+=w>htIC8*y~|Lq|u)F95WuRjd`g5ughC1PI(!RaG&U zFUk4wXFt5=CV}Dd^3s6g+XvKa8TgtbO<@;9@%#NLHJdHz@%?B04-EeRQ40%zHK^1p P00000NkvXXu0mjf^D*{* literal 0 HcmV?d00001 diff --git a/android-menudrawer-master/samples/res/drawable-xhdpi-v14/menu_arrow_top.png b/android-menudrawer-master/samples/res/drawable-xhdpi-v14/menu_arrow_top.png new file mode 100644 index 0000000000000000000000000000000000000000..b81c74749dd04192b11d99990800287fa089c693 GIT binary patch literal 1654 zcmV-+28sEJP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGvuK)lWuK`{f zksJU302y>eSaefwW^{L9a%BK_cXuvnZfkR6VQ^(GZ*pgw?mQX*00q`bL_t(&L*1G? zOe0qmhQV)}r{BQZ2v$VE0u59N4?zlABqSb9nk`aC0we?l6$lBCC{a3;0zrX9k%lG} zlvE(4KmxH|JAPn{V;jGn{~yh)47+Rw)??6)bobu5a|hq^%{l+vduA&Og+fI+k4hZk z@2OBrZD|UeOr9s0S6L@kS+3uE06^8&)}~4%66#DQLm(Aetu}8mnR4gn=L8{@vH>Xz z2oVCGJ^`q2Z*R4Fyx~{G+10XpO2%ST5?@$~>F$9;(rG@eO zTrOvVZB;C|t`kEcjdq+xtyU)hCFSvWGUbAyD2O5m>ZYb9EzXVke7;(xQkh|(1?Tms zjiNx@0Zat#Fvi?qObq9DUayxh=pBlBh9V$}^`NV(OC1OVbTG^W9jJvtRv7ApRSjs{ z&|ggu=!>BW;og7H=STY*VG~7v!r^eF&(6-IP*FrTN)Dnp6k1wZ5D9_~RHf5tK7Bi` zH=?*;U=s{>Fgyr?A%VUC`n>4#p!m=o)ai5)0E|;VE-x>$N`*>EK@^7q^gsin3^0J9 zP){$w^(Gk7jJBIV=p85m2pn;G0RdqA2ehxy_R>2rJ_4XI)JfnN(Q1Bg45~b z8^HiktUCcXzk&`aC^7&CbouUBk$* z2!o*^d4>m`;ltkvDWx0V1VWA;h{h8FVGx3?x3|~2y1H6#v)S&gEJLACVSau-a&mHV zjd39q!tgLm2t`TVcs2;RdO#5H3KzyZ(Y8)bPTFT@XR8o8bcD|ixPHa@`g(kCZ;v5D z&G5q;2t!fbcoqn`dcbfH1=0yUFfS}D*vH1k^j{?Kp!4A1AhoixLfyE*C2E9M@(d+( z<4GW%s|Q#ISn!l>&;zv`2+|nnMh@N+!a788-H;8U)OsKnNV#-F76_&EKrW1O=*Ito zD2E=%1)`*GJPM-RdLS2uQo8X)5HF<%a$zW;8=rxAX+4k&qtv=_55#NI1Gzv-r5m3> zh!9i{^9S57h`9sq6YlL7p1VGfYoy$9U(*e)NSWh!Y@Z^f0R<2e1mqJn;c!@wl^c^N z^|)ro@|ODpH`-h!x=T#lO+(`Qr%+<%d25MoSf@MB8ZNd&0yV-=r zVo4z{D&#i^gPR^HsVYE#;oJu>mF7TO$RCJ>TW4XvFf}#hn3!Y|dzXA*{(*qcHgLb?a2A905zP>&oomS)tgh0ckP+;4^{le1H z(wq11-`C)}-1(Jl9OpDJFrY_%RDX1Il!mdKr1brSj?br`!vmxzWRuBcuCuc<@ALTz z0tlqmg=`XTtid2F20O$Il8{$KscUFxsN34wdfVUMFJ+XiH#j(G0*u>O zEG8v!nAIYH3?6s}wx*E=%;NJwE)t0d#47LZ?)afag8@3kj~);VC|Yp>nW3Q}-OkR= zyN-?y(^Dt)QsX&S&Y5$k@tg;3qHVO1w$f(W&P)79U0q$xnxSDpZG=ZqD>M{R?Ebo- z2R|E)MhVPI+4kh$H5d$<(a}+NZEdap`1ts5*mMg|hyq3og~{S1A;shIybu~@vsncQ zYFuE&H%S3soATS++tb6t!=t$A^$CJZES!5!PtOk{BO{fEhlhVb7s9ZSp9$iSfh5Bu z8ja=zw{W}N6*#FtCmH0Xr>AQ-H#gTB8ykO=`FpQ^nAK{1J25fw4&Ph<#Ja-|KnZ+e zNTEL)3xWeS_c(>ED{0n}0{Q@ZS*r12{qeyAjV-w*UYD07*qoM6N<$f+VHk Ad;kCd literal 0 HcmV?d00001 diff --git a/android-menudrawer-master/samples/res/drawable-xhdpi/ic_action_refresh_dark.png b/android-menudrawer-master/samples/res/drawable-xhdpi/ic_action_refresh_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..a7fdc0dfcb1dc50bd0ebd2527d174398b8470797 GIT binary patch literal 3219 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 literal 0 HcmV?d00001 diff --git a/android-menudrawer-master/samples/res/drawable-xhdpi/ic_action_select_all_dark.png b/android-menudrawer-master/samples/res/drawable-xhdpi/ic_action_select_all_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..f193a8bb3189d555e19da136c81a892e879c67fd GIT binary patch literal 2856 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 literal 0 HcmV?d00001 diff --git a/android-menudrawer-master/samples/res/drawable-xhdpi/ic_menu_moreoverflow_normal_holo_light.png b/android-menudrawer-master/samples/res/drawable-xhdpi/ic_menu_moreoverflow_normal_holo_light.png new file mode 100644 index 0000000000000000000000000000000000000000..930ca8d95e8bee5a1240fba645d9dab919abd734 GIT binary patch literal 184 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=^`0({Ar-gYUf;;epuoZ6aJO@& z%&D0-IKvGL&8p&qV;O7KuliPO1yl(K>(rHwor_8Hg9|Y9Gj8!^hz0Vk4~QZ}ABcvv nF)(akj$uTI?LshtEWgbR4Rf6*RPme*0Ev6L`njxgN@xNAEX^ml literal 0 HcmV?d00001 diff --git a/android-menudrawer-master/samples/res/drawable-xhdpi/md__category_background.9.png b/android-menudrawer-master/samples/res/drawable-xhdpi/md__category_background.9.png new file mode 100644 index 0000000000000000000000000000000000000000..942d72e65b095ad900722a8e5e7385228ae0c783 GIT binary patch literal 179 zcmeAS@N?(olHy`uVBq!ia0vp^d_e5P!3HGLFFij7q*#ibJVQ8upoSx*1IXtr@Q5sC zVBqcqVMg-D=*+w0EX1GeE8VNeS)2#7n8DN4&t;ucLK6V`fk$Nk literal 0 HcmV?d00001 diff --git a/android-menudrawer-master/samples/res/drawable-xhdpi/md__list_longpressed_holo.9.png b/android-menudrawer-master/samples/res/drawable-xhdpi/md__list_longpressed_holo.9.png new file mode 100644 index 0000000000000000000000000000000000000000..eda10e6123e1e1383c4617228ec0c96680d60dc7 GIT binary patch literal 158 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xamSQK*5Dp-y;YjHK@;M7UB8wRq zxI00Z(fs7;wLn1!PZ!4!jfu$#Gb-B{xqtMx1s*(O%+nLV7IxRdaaX6Iu&3070|zpW ye6d-ZyJWwc+pgOl@x443T>9p%`1p8cx&%YrImy|zOvgZGF?hQAxvX literal 0 HcmV?d00001 diff --git a/android-menudrawer-master/samples/res/drawable-xhdpi/md__list_selector_disabled_holo_dark.9.png b/android-menudrawer-master/samples/res/drawable-xhdpi/md__list_selector_disabled_holo_dark.9.png new file mode 100644 index 0000000000000000000000000000000000000000..88726b69160589c8545759440e8d4e69dc984c67 GIT binary patch literal 190 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 literal 0 HcmV?d00001 diff --git a/android-menudrawer-master/samples/res/drawable-xhdpi/menu_arrow_top.png b/android-menudrawer-master/samples/res/drawable-xhdpi/menu_arrow_top.png new file mode 100644 index 0000000000000000000000000000000000000000..2c2f7490089673f30609b955d561e52e18676584 GIT binary patch literal 1581 zcmV+|2GaS7P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGvuK)lWuK`{f zksJU302y>eSaefwW^{L9a%BK_cXuvnZfkR6VQ^(GZ*pgw?mQX*00oUnL_t(&L*1FX zQ`=Y=#la65KUf@XZeBZO!)YKM4-BuOr4bF<*O zpoD^mdY;8t?2K8>7_YefmJz;l` zdq3e^67@8~<}=P0LZOg&d3mXZiXpzCJBY?m7#J8pB*;GC7DbVxAH?+@lqdv7AUMSE zAP9y8&fVc$9Oq&v37k#|f{+EkJpJSL_O@zNsOSo!F%;kjHi+tg0EU8(vjEp45Ymr& zAAxXopvWMwX9wD60rUy`5`2R&bPpBXKr})Khr|3u=zuA9;(P$+ z7e+k_0R+&8eJ^JRM%%Z&y&WWl)z#G$W(_?eh4K*)2;&3pjp5!Tj?<_=0&FRnOp1EL zXc@%!`~aQr#wg06z?nc0D4Yqwo}M26-rindY-~*a`MkKes4gunr4xxnMuEZ5P-jLA zGb4fL+#BT^ErHPD2a0$?APhq2o|u>j?C$RRg2CVyZI1?T7I9nTVII(cw#P+nVGqi;Om5>|*G@uMZg@AmbEtAPO@aD!OiVxRr@lfe2`}~d?sD+xSjT$-N z9C);q8Ss_YGCn>or_&l{LI{m1S`7u(LtHQH?CkWetgLjRt=@y$^7GiIsi`SPe}BK@ z`1n}F$n#Ty`u&7@IrQmG^j4Gq=s3SXB&Ahj-MlR&H!jRI&K!c7bTIj@M~ z?d|RLg819X$w@V%)N;p-dH{S*n4X??ot&KH9v>goBo4D$1W*C63bcwC*eX6BNZD+* zCetbwi~P`HLjwU69e~h*qOOxGGcz;7(b3WH=;)}+sLt#CT=tcHX5T5E&!;A8qeg0_ zW@_gp{;_&I9_|?$9oRcDBOI6^HX7;X=H|%y`uY^ULOq{A&|86y&vQDRw%OU)KA+E* zJUu=A2byx237-Mu35Chx5+UXD`5H4sHhy>^0OlA0!;8Hy5D54Y3V#j{5C5)X-(Kud zS65em&&|#Kl}@KK(8yno9CM)PP>~;!7#ekaVw3o(O`()U7O8f2cDDIiAdo(_P!qK= zD^9J-=S4XqE{6`og9d}_v-|q`dIq#U@wfFgZq!DN)Jo0Nt}u{6$T0A8@(0A1Un77f fO=W6rfYAOgh2pv%M!*F`00000NkvXXu0mjfKk&(x literal 0 HcmV?d00001 diff --git a/android-menudrawer-master/samples/res/drawable/md__list_selector_background_transition_holo_dark.xml b/android-menudrawer-master/samples/res/drawable/md__list_selector_background_transition_holo_dark.xml new file mode 100644 index 00000000..1d43396d --- /dev/null +++ b/android-menudrawer-master/samples/res/drawable/md__list_selector_background_transition_holo_dark.xml @@ -0,0 +1,20 @@ + + + + + + + diff --git a/android-menudrawer-master/samples/res/drawable/md__list_selector_holo_dark.xml b/android-menudrawer-master/samples/res/drawable/md__list_selector_holo_dark.xml new file mode 100644 index 00000000..bd71aa8b --- /dev/null +++ b/android-menudrawer-master/samples/res/drawable/md__list_selector_holo_dark.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + diff --git a/android-menudrawer-master/samples/res/layout/activity_bottommenu.xml b/android-menudrawer-master/samples/res/layout/activity_bottommenu.xml new file mode 100644 index 00000000..ee576195 --- /dev/null +++ b/android-menudrawer-master/samples/res/layout/activity_bottommenu.xml @@ -0,0 +1,21 @@ + + + + + + + + diff --git a/android-menudrawer-master/samples/res/layout/activity_contentsample.xml b/android-menudrawer-master/samples/res/layout/activity_contentsample.xml new file mode 100644 index 00000000..54140e71 --- /dev/null +++ b/android-menudrawer-master/samples/res/layout/activity_contentsample.xml @@ -0,0 +1,24 @@ + + + + + + + + + + diff --git a/android-menudrawer-master/samples/res/layout/activity_layoutsample.xml b/android-menudrawer-master/samples/res/layout/activity_layoutsample.xml new file mode 100644 index 00000000..83684116 --- /dev/null +++ b/android-menudrawer-master/samples/res/layout/activity_layoutsample.xml @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/android-menudrawer-master/samples/res/layout/activity_rightmenu.xml b/android-menudrawer-master/samples/res/layout/activity_rightmenu.xml new file mode 100644 index 00000000..ad1a6b76 --- /dev/null +++ b/android-menudrawer-master/samples/res/layout/activity_rightmenu.xml @@ -0,0 +1,19 @@ + + + + + + + + diff --git a/android-menudrawer-master/samples/res/layout/activity_staticsample.xml b/android-menudrawer-master/samples/res/layout/activity_staticsample.xml new file mode 100644 index 00000000..e6cb5622 --- /dev/null +++ b/android-menudrawer-master/samples/res/layout/activity_staticsample.xml @@ -0,0 +1,19 @@ + + + + + + + + diff --git a/android-menudrawer-master/samples/res/layout/activity_topmenu.xml b/android-menudrawer-master/samples/res/layout/activity_topmenu.xml new file mode 100644 index 00000000..d288cfa5 --- /dev/null +++ b/android-menudrawer-master/samples/res/layout/activity_topmenu.xml @@ -0,0 +1,21 @@ + + + + + + + + \ No newline at end of file diff --git a/android-menudrawer-master/samples/res/layout/activity_viewpagersample.xml b/android-menudrawer-master/samples/res/layout/activity_viewpagersample.xml new file mode 100644 index 00000000..6efa747e --- /dev/null +++ b/android-menudrawer-master/samples/res/layout/activity_viewpagersample.xml @@ -0,0 +1,5 @@ + + \ No newline at end of file diff --git a/android-menudrawer-master/samples/res/layout/activity_windowsample.xml b/android-menudrawer-master/samples/res/layout/activity_windowsample.xml new file mode 100644 index 00000000..a23003f2 --- /dev/null +++ b/android-menudrawer-master/samples/res/layout/activity_windowsample.xml @@ -0,0 +1,19 @@ + + + + + + + + diff --git a/android-menudrawer-master/samples/res/layout/list_row_sample.xml b/android-menudrawer-master/samples/res/layout/list_row_sample.xml new file mode 100644 index 00000000..edd6d1f6 --- /dev/null +++ b/android-menudrawer-master/samples/res/layout/list_row_sample.xml @@ -0,0 +1,26 @@ + + + + + + + diff --git a/android-menudrawer-master/samples/res/layout/main.xml b/android-menudrawer-master/samples/res/layout/main.xml new file mode 100644 index 00000000..6dd71bd2 --- /dev/null +++ b/android-menudrawer-master/samples/res/layout/main.xml @@ -0,0 +1,33 @@ + + + +