From d0e4cc93a9516bcd84df3a97a49ca9ce95a2f0bf Mon Sep 17 00:00:00 2001 From: dniz Date: Wed, 2 May 2018 15:44:50 -0400 Subject: [PATCH] Set up MDC Catalog build and docs PiperOrigin-RevId: 195135469 --- README.md | 2 + catalog/build.gradle | 69 +++++ .../io/material/catalog/AndroidManifest.xml | 48 ++++ catalog/java/io/material/catalog/README.md | 2 + .../application/CatalogApplication.java | 97 +++++++ .../CatalogApplicationComponent.java | 44 ++++ .../application/attrs/res/values/attrs.xml | 26 ++ .../LegacyMultidexCatalogApplication.java | 33 +++ .../application/scope/ActivityScope.java | 25 ++ .../application/scope/ApplicationScope.java | 28 +++ .../application/scope/FragmentScope.java | 25 ++ .../application/theme/res/values/colors.xml | 28 +++ .../application/theme/res/values/strings.xml | 19 ++ .../application/theme/res/values/styles.xml | 43 ++++ .../application/theme/res/values/themes.xml | 33 +++ .../ic_placeholder_circle_24.png | Bin 0 -> 1370 bytes .../assets/res/drawable/ic_add_24px.xml | 24 ++ .../assets/res/drawable/ic_animation_24px.xml | 24 ++ .../res/drawable/ic_bottom_nav_24px.xml | 28 +++ .../res/drawable/ic_bottom_sheets_24px.xml | 27 ++ .../res/drawable/ic_bottomappbar_24px.xml | 52 ++++ .../assets/res/drawable/ic_buttons_24px.xml | 30 +++ .../assets/res/drawable/ic_card_24px.xml | 30 +++ .../assets/res/drawable/ic_chips_24px.xml | 30 +++ .../res/drawable/ic_close_vd_theme_24px.xml | 25 ++ .../assets/res/drawable/ic_colors_24px.xml | 27 ++ .../res/drawable/ic_colors_vd_theme_24px.xml | 28 +++ .../res/drawable/ic_components_24px.xml | 29 +++ .../res/drawable/ic_data_table_24px.xml | 30 +++ ...demo_play_circle_outline_vd_theme_24px.xml | 32 +++ .../res/drawable/ic_developer_guide_24px.xml | 24 ++ .../assets/res/drawable/ic_dialogs_24px.xml | 30 +++ .../res/drawable/ic_expension_panels_24px.xml | 30 +++ .../assets/res/drawable/ic_fab_24px.xml | 30 +++ .../drawable/ic_favorite_vd_theme_24px.xml | 25 ++ .../drawable/ic_feature_highlight_24px.xml | 30 +++ .../assets/res/drawable/ic_github_24px.xml | 24 ++ .../res/drawable/ic_info_outline_24px.xml | 24 ++ .../assets/res/drawable/ic_lists_24px.xml | 27 ++ .../res/drawable/ic_logo_components_48px.xml | 33 +++ .../assets/res/drawable/ic_menu_24px.xml | 30 +++ .../drawable/ic_progress_activity_24px.xml | 27 ++ .../drawable/ic_responsive_layout_24px.xml | 27 ++ .../assets/res/drawable/ic_ripples_24px.xml | 27 ++ .../drawable/ic_scrollable_header_24px.xml | 27 ++ .../res/drawable/ic_search_vd_theme_24px.xml | 25 ++ .../drawable/ic_selection_controls_24px.xml | 30 +++ .../assets/res/drawable/ic_shadow_24px.xml | 27 ++ .../res/drawable/ic_side_navigation_24px.xml | 27 ++ .../assets/res/drawable/ic_sliders_24px.xml | 27 ++ .../assets/res/drawable/ic_steppers_24px.xml | 30 +++ .../assets/res/drawable/ic_subheader_24px.xml | 30 +++ .../assets/res/drawable/ic_switches_24px.xml | 27 ++ .../assets/res/drawable/ic_tabs_24px.xml | 27 ++ .../res/drawable/ic_text_field_24px.xml | 24 ++ .../assets/res/drawable/ic_toast_24px.xml | 27 ++ .../assets/res/drawable/ic_tooltip_24px.xml | 24 ++ .../assets/res/drawable/ic_topappbar_24px.xml | 24 ++ .../bottomappbar/BottomAppBarFragment.java | 74 ++++++ .../BottomAppBarMainDemoFragment.java | 146 +++++++++++ .../res/drawable/ic_3d_rotation_24.xml | 26 ++ .../res/drawable/ic_accelerator_24.xml | 26 ++ .../res/drawable/ic_dashboard_24.xml | 26 ++ .../bottomappbar/res/drawable/ic_menu_24.xml | 26 ++ .../res/drawable/ic_search_24.xml | 26 ++ .../res/layout/cat_bottomappbar_content.xml | 78 ++++++ .../res/layout/cat_bottomappbar_fragment.xml | 58 +++++ .../bottomappbar/res/menu/demo_primary.xml | 36 +++ .../bottomappbar/res/values/colors.xml | 21 ++ .../bottomappbar/res/values/strings.xml | 45 ++++ ...ttomNavigationColorStylesDemoFragment.java | 28 +++ .../BottomNavigationDemoFragment.java | 174 +++++++++++++ .../bottomnav/BottomNavigationFragment.java | 95 +++++++ ...NavigationLabelVisibilityDemoFragment.java | 112 +++++++++ .../BottomNavigationMainDemoFragment.java | 20 ++ .../res/drawable/ic_star_vd_theme_24.xml | 26 ++ .../bottomnav/res/layout/cat_bottom_nav.xml | 52 ++++ .../layout/cat_bottom_nav_color_styles.xml | 66 +++++ .../res/layout/cat_bottom_nav_fragment.xml | 78 ++++++ ...t_bottom_nav_label_visibility_controls.xml | 93 +++++++ .../bottomnav/res/menu/bottom_nav_menu.xml | 46 ++++ .../catalog/bottomnav/res/values/dimens.xml | 20 ++ .../catalog/bottomnav/res/values/strings.xml | 44 ++++ .../catalog/button/ButtonsFragment.java | 74 ++++++ .../button/ButtonsMainDemoFragment.java | 69 +++++ .../res/layout/cat_buttons_fragment.xml | 162 ++++++++++++ .../catalog/button/res/values/strings.xml | 40 +++ .../material/catalog/card/CardFragment.java | 74 ++++++ .../catalog/card/CardMainDemoFragment.java | 45 ++++ .../card/res/layout/cat_card_fragment.xml | 95 +++++++ .../catalog/card/res/values/dimens.xml | 20 ++ .../catalog/card/res/values/strings.xml | 42 ++++ .../material/catalog/chip/ChipFragment.java | 89 +++++++ .../catalog/chip/ChipGroupDemoFragment.java | 84 +++++++ .../catalog/chip/ChipMainDemoFragment.java | 62 +++++ .../chip/res/color/close_icon_tint_list.xml | 26 ++ .../chip/res/layout/cat_chip_content.xml | 84 +++++++ .../chip/res/layout/cat_chip_fragment.xml | 36 +++ .../res/layout/cat_chip_group_fragment.xml | 76 ++++++ .../res/layout/cat_chip_group_item_choice.xml | 22 ++ .../res/layout/cat_chip_group_item_filter.xml | 22 ++ .../layout/cat_chip_text_field_fragment.xml | 31 +++ .../catalog/chip/res/values/strings.xml | 58 +++++ .../catalog/chip/res/xml/standalone_chip.xml | 21 ++ .../draggable/DraggableCoordinatorLayout.java | 100 ++++++++ .../io/material/catalog/fab/FabFragment.java | 74 ++++++ .../catalog/fab/FabMainDemoFragment.java | 80 ++++++ .../fab/res/layout/cat_fab_fragment.xml | 75 ++++++ .../catalog/fab/res/layout/mtrl_fabs.xml | 80 ++++++ .../catalog/fab/res/values/strings.xml | 40 +++ .../io/material/catalog/feature/Demo.java | 53 ++++ .../catalog/feature/DemoActivity.java | 128 ++++++++++ .../catalog/feature/DemoFragment.java | 147 +++++++++++ .../catalog/feature/DemoLandingFragment.java | 174 +++++++++++++ .../material/catalog/feature/DemoUtils.java | 45 ++++ .../material/catalog/feature/FeatureDemo.java | 70 ++++++ .../catalog/feature/FeatureDemoUtils.java | 48 ++++ .../catalog/feature/OnBackPressedHandler.java | 22 ++ .../feature/res/layout/cat_demo_activity.xml | 34 +++ .../feature/res/layout/cat_demo_fragment.xml | 34 +++ .../res/layout/cat_demo_landing_fragment.xml | 97 +++++++ .../layout/cat_demo_landing_link_entry.xml | 24 ++ .../layout/cat_demo_landing_links_section.xml | 43 ++++ .../res/layout/cat_demo_landing_row.xml | 60 +++++ .../catalog/feature/res/values/dimens.xml | 25 ++ .../catalog/feature/res/values/strings.xml | 23 ++ .../material/catalog/font/FontFragment.java | 74 ++++++ .../catalog/font/FontMainDemoFragment.java | 191 ++++++++++++++ .../res/layout/cat_font_styles_fragment.xml | 34 +++ .../font/res/layout/cat_font_styles_item.xml | 54 ++++ .../catalog/font/res/values/arrays.xml | 51 ++++ .../catalog/font/res/values/strings.xml | 30 +++ .../material/catalog/main/MainActivity.java | 91 +++++++ .../main/res/layout/cat_main_activity.xml | 22 ++ .../res/mipmap-anydpi-v26/ic_launcher.xml | 21 ++ .../mipmap-anydpi-v26/ic_launcher_round.xml | 21 ++ .../catalog/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 653 bytes .../mipmap-hdpi/ic_launcher_background.png | Bin 0 -> 98 bytes .../mipmap-hdpi/ic_launcher_foreground.png | Bin 0 -> 850 bytes .../res/mipmap-hdpi/ic_launcher_round.png | Bin 0 -> 1842 bytes .../catalog/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 543 bytes .../mipmap-mdpi/ic_launcher_background.png | Bin 0 -> 92 bytes .../mipmap-mdpi/ic_launcher_foreground.png | Bin 0 -> 464 bytes .../res/mipmap-mdpi/ic_launcher_round.png | Bin 0 -> 1211 bytes .../catalog/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 1088 bytes .../mipmap-xhdpi/ic_launcher_background.png | Bin 0 -> 100 bytes .../mipmap-xhdpi/ic_launcher_foreground.png | Bin 0 -> 1109 bytes .../res/mipmap-xhdpi/ic_launcher_round.png | Bin 0 -> 2642 bytes .../catalog/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 1553 bytes .../mipmap-xxhdpi/ic_launcher_background.png | Bin 0 -> 108 bytes .../mipmap-xxhdpi/ic_launcher_foreground.png | Bin 0 -> 1800 bytes .../res/mipmap-xxhdpi/ic_launcher_round.png | Bin 0 -> 4663 bytes .../res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 2140 bytes .../mipmap-xxxhdpi/ic_launcher_background.png | Bin 0 -> 118 bytes .../mipmap-xxxhdpi/ic_launcher_foreground.png | Bin 0 -> 2406 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.png | Bin 0 -> 6546 bytes .../material/catalog/res/values/strings.xml | 20 ++ .../GridDividerDecoration.java | 108 ++++++++ .../catalog/tableofcontents/TocAdapter.java | 50 ++++ .../catalog/tableofcontents/TocFragment.java | 139 +++++++++++ .../catalog/tableofcontents/TocModule.java | 73 ++++++ .../tableofcontents/TocResourceProvider.java | 30 +++ .../tableofcontents/TocViewHolder.java | 72 ++++++ .../res/layout/cat_toc_fragment.xml | 65 +++++ .../res/layout/cat_toc_header.xml | 36 +++ .../res/layout/cat_toc_item.xml | 71 ++++++ .../tableofcontents/res/values/colors.xml | 22 ++ .../tableofcontents/res/values/dimens.xml | 24 ++ .../tableofcontents/res/values/strings.xml | 22 ++ .../catalog/tabs/TabItemContentFragment.java | 55 ++++ .../tabs/TabsControllableDemoFragment.java | 236 ++++++++++++++++++ .../material/catalog/tabs/TabsFragment.java | 96 +++++++ .../catalog/tabs/TabsMainDemoFragment.java | 43 ++++ .../catalog/tabs/TabsPagerAdapter.java | 63 +++++ .../tabs/TabsScrollableDemoFragment.java | 43 ++++ .../res/drawable/cat_tabs_box_indicator.xml | 32 +++ .../res/drawable/cat_tabs_line_indicator.xml | 27 ++ .../res/drawable/cat_tabs_oval_indicator.xml | 32 +++ .../res/drawable/cat_tabs_pill_indicator.xml | 37 +++ .../cat_tabs_rounded_line_indicator.xml | 34 +++ .../layout/cat_tabs_controllable_content.xml | 49 ++++ .../layout/cat_tabs_controllable_fragment.xml | 127 ++++++++++ .../tabs/res/layout/cat_tabs_main_content.xml | 98 ++++++++ .../layout/cat_tabs_scrollable_content.xml | 53 ++++ .../res/layout/tab_item_content_fragment.xml | 31 +++ .../catalog/tabs/res/values/arrays.xml | 54 ++++ .../catalog/tabs/res/values/dimens.xml | 21 ++ .../catalog/tabs/res/values/strings.xml | 63 +++++ .../TextFieldControllableDemoFragment.java | 143 +++++++++++ .../catalog/textfield/TextFieldFragment.java | 88 +++++++ .../textfield/TextFieldMainDemoFragment.java | 42 ++++ .../res/layout/cat_textfield_content.xml | 77 ++++++ .../cat_textfield_controllable_fragment.xml | 219 ++++++++++++++++ .../res/layout/cat_textfield_fragment.xml | 20 ++ .../catalog/textfield/res/values/dimens.xml | 21 ++ .../catalog/textfield/res/values/strings.xml | 54 ++++ .../themeswitcher/ThemeOverlayUtils.java | 49 ++++ .../ThemeSwitcherDialogFragment.java | 168 +++++++++++++ .../themeswitcher/ThemeSwitcherHelper.java | 77 ++++++ .../ThemeSwitcherResourceProvider.java | 45 ++++ .../res/layout/mtrl_theme_switcher_dialog.xml | 53 ++++ .../res/menu/mtrl_theme_switcher_menu.xml | 24 ++ .../themeswitcher/res/values/arrays.xml | 61 +++++ .../themeswitcher/res/values/strings.xml | 34 +++ .../res/values/themes_overlays_primary.xml | 85 +++++++ .../res/values/themes_overlays_secondary.xml | 85 +++++++ .../TopAppBarCollapsingDemoFragment.java | 50 ++++ .../catalog/topappbar/TopAppBarFragment.java | 96 +++++++ .../topappbar/TopAppBarMainDemoFragment.java | 63 +++++ .../TopAppBarScrollingDemoFragment.java | 63 +++++ .../cat_topappbar_collapsing_fragment.xml | 56 +++++ .../layout/cat_topappbar_filler_text_view.xml | 30 +++ .../res/layout/cat_topappbar_fragment.xml | 42 ++++ .../cat_topappbar_scrolling_fragment.xml | 43 ++++ .../topappbar/res/menu/cat_topappbar_menu.xml | 35 +++ .../catalog/topappbar/res/values/dimens.xml | 20 ++ .../catalog/topappbar/res/values/strings.xml | 39 +++ .../TransformationFragment.java | 76 ++++++ .../TransformationMainDemoFragment.java | 75 ++++++ .../layout/cat_transformation_fragment.xml | 88 +++++++ .../transformation/res/values/strings.xml | 26 ++ docs/building-from-source.md | 1 + docs/catalog-app.md | 33 +++ docs/contributing.md | 1 + docs/getting-started.md | 1 + settings.gradle | 2 + 226 files changed, 10552 insertions(+) create mode 100644 catalog/build.gradle create mode 100644 catalog/java/io/material/catalog/AndroidManifest.xml create mode 100644 catalog/java/io/material/catalog/README.md create mode 100644 catalog/java/io/material/catalog/application/CatalogApplication.java create mode 100644 catalog/java/io/material/catalog/application/CatalogApplicationComponent.java create mode 100644 catalog/java/io/material/catalog/application/attrs/res/values/attrs.xml create mode 100644 catalog/java/io/material/catalog/application/legacymultidex/LegacyMultidexCatalogApplication.java create mode 100644 catalog/java/io/material/catalog/application/scope/ActivityScope.java create mode 100644 catalog/java/io/material/catalog/application/scope/ApplicationScope.java create mode 100644 catalog/java/io/material/catalog/application/scope/FragmentScope.java create mode 100644 catalog/java/io/material/catalog/application/theme/res/values/colors.xml create mode 100644 catalog/java/io/material/catalog/application/theme/res/values/strings.xml create mode 100644 catalog/java/io/material/catalog/application/theme/res/values/styles.xml create mode 100644 catalog/java/io/material/catalog/application/theme/res/values/themes.xml create mode 100644 catalog/java/io/material/catalog/assets/res/drawable-xxxhdpi/ic_placeholder_circle_24.png create mode 100644 catalog/java/io/material/catalog/assets/res/drawable/ic_add_24px.xml create mode 100644 catalog/java/io/material/catalog/assets/res/drawable/ic_animation_24px.xml create mode 100644 catalog/java/io/material/catalog/assets/res/drawable/ic_bottom_nav_24px.xml create mode 100644 catalog/java/io/material/catalog/assets/res/drawable/ic_bottom_sheets_24px.xml create mode 100644 catalog/java/io/material/catalog/assets/res/drawable/ic_bottomappbar_24px.xml create mode 100644 catalog/java/io/material/catalog/assets/res/drawable/ic_buttons_24px.xml create mode 100644 catalog/java/io/material/catalog/assets/res/drawable/ic_card_24px.xml create mode 100644 catalog/java/io/material/catalog/assets/res/drawable/ic_chips_24px.xml create mode 100644 catalog/java/io/material/catalog/assets/res/drawable/ic_close_vd_theme_24px.xml create mode 100644 catalog/java/io/material/catalog/assets/res/drawable/ic_colors_24px.xml create mode 100644 catalog/java/io/material/catalog/assets/res/drawable/ic_colors_vd_theme_24px.xml create mode 100644 catalog/java/io/material/catalog/assets/res/drawable/ic_components_24px.xml create mode 100644 catalog/java/io/material/catalog/assets/res/drawable/ic_data_table_24px.xml create mode 100644 catalog/java/io/material/catalog/assets/res/drawable/ic_demo_play_circle_outline_vd_theme_24px.xml create mode 100644 catalog/java/io/material/catalog/assets/res/drawable/ic_developer_guide_24px.xml create mode 100644 catalog/java/io/material/catalog/assets/res/drawable/ic_dialogs_24px.xml create mode 100644 catalog/java/io/material/catalog/assets/res/drawable/ic_expension_panels_24px.xml create mode 100644 catalog/java/io/material/catalog/assets/res/drawable/ic_fab_24px.xml create mode 100644 catalog/java/io/material/catalog/assets/res/drawable/ic_favorite_vd_theme_24px.xml create mode 100644 catalog/java/io/material/catalog/assets/res/drawable/ic_feature_highlight_24px.xml create mode 100644 catalog/java/io/material/catalog/assets/res/drawable/ic_github_24px.xml create mode 100644 catalog/java/io/material/catalog/assets/res/drawable/ic_info_outline_24px.xml create mode 100644 catalog/java/io/material/catalog/assets/res/drawable/ic_lists_24px.xml create mode 100644 catalog/java/io/material/catalog/assets/res/drawable/ic_logo_components_48px.xml create mode 100644 catalog/java/io/material/catalog/assets/res/drawable/ic_menu_24px.xml create mode 100644 catalog/java/io/material/catalog/assets/res/drawable/ic_progress_activity_24px.xml create mode 100644 catalog/java/io/material/catalog/assets/res/drawable/ic_responsive_layout_24px.xml create mode 100644 catalog/java/io/material/catalog/assets/res/drawable/ic_ripples_24px.xml create mode 100644 catalog/java/io/material/catalog/assets/res/drawable/ic_scrollable_header_24px.xml create mode 100644 catalog/java/io/material/catalog/assets/res/drawable/ic_search_vd_theme_24px.xml create mode 100644 catalog/java/io/material/catalog/assets/res/drawable/ic_selection_controls_24px.xml create mode 100644 catalog/java/io/material/catalog/assets/res/drawable/ic_shadow_24px.xml create mode 100644 catalog/java/io/material/catalog/assets/res/drawable/ic_side_navigation_24px.xml create mode 100644 catalog/java/io/material/catalog/assets/res/drawable/ic_sliders_24px.xml create mode 100644 catalog/java/io/material/catalog/assets/res/drawable/ic_steppers_24px.xml create mode 100644 catalog/java/io/material/catalog/assets/res/drawable/ic_subheader_24px.xml create mode 100644 catalog/java/io/material/catalog/assets/res/drawable/ic_switches_24px.xml create mode 100644 catalog/java/io/material/catalog/assets/res/drawable/ic_tabs_24px.xml create mode 100644 catalog/java/io/material/catalog/assets/res/drawable/ic_text_field_24px.xml create mode 100644 catalog/java/io/material/catalog/assets/res/drawable/ic_toast_24px.xml create mode 100644 catalog/java/io/material/catalog/assets/res/drawable/ic_tooltip_24px.xml create mode 100644 catalog/java/io/material/catalog/assets/res/drawable/ic_topappbar_24px.xml create mode 100644 catalog/java/io/material/catalog/bottomappbar/BottomAppBarFragment.java create mode 100644 catalog/java/io/material/catalog/bottomappbar/BottomAppBarMainDemoFragment.java create mode 100644 catalog/java/io/material/catalog/bottomappbar/res/drawable/ic_3d_rotation_24.xml create mode 100644 catalog/java/io/material/catalog/bottomappbar/res/drawable/ic_accelerator_24.xml create mode 100644 catalog/java/io/material/catalog/bottomappbar/res/drawable/ic_dashboard_24.xml create mode 100644 catalog/java/io/material/catalog/bottomappbar/res/drawable/ic_menu_24.xml create mode 100644 catalog/java/io/material/catalog/bottomappbar/res/drawable/ic_search_24.xml create mode 100644 catalog/java/io/material/catalog/bottomappbar/res/layout/cat_bottomappbar_content.xml create mode 100644 catalog/java/io/material/catalog/bottomappbar/res/layout/cat_bottomappbar_fragment.xml create mode 100644 catalog/java/io/material/catalog/bottomappbar/res/menu/demo_primary.xml create mode 100644 catalog/java/io/material/catalog/bottomappbar/res/values/colors.xml create mode 100644 catalog/java/io/material/catalog/bottomappbar/res/values/strings.xml create mode 100644 catalog/java/io/material/catalog/bottomnav/BottomNavigationColorStylesDemoFragment.java create mode 100644 catalog/java/io/material/catalog/bottomnav/BottomNavigationDemoFragment.java create mode 100644 catalog/java/io/material/catalog/bottomnav/BottomNavigationFragment.java create mode 100644 catalog/java/io/material/catalog/bottomnav/BottomNavigationLabelVisibilityDemoFragment.java create mode 100644 catalog/java/io/material/catalog/bottomnav/BottomNavigationMainDemoFragment.java create mode 100644 catalog/java/io/material/catalog/bottomnav/res/drawable/ic_star_vd_theme_24.xml create mode 100644 catalog/java/io/material/catalog/bottomnav/res/layout/cat_bottom_nav.xml create mode 100644 catalog/java/io/material/catalog/bottomnav/res/layout/cat_bottom_nav_color_styles.xml create mode 100644 catalog/java/io/material/catalog/bottomnav/res/layout/cat_bottom_nav_fragment.xml create mode 100644 catalog/java/io/material/catalog/bottomnav/res/layout/cat_bottom_nav_label_visibility_controls.xml create mode 100644 catalog/java/io/material/catalog/bottomnav/res/menu/bottom_nav_menu.xml create mode 100644 catalog/java/io/material/catalog/bottomnav/res/values/dimens.xml create mode 100644 catalog/java/io/material/catalog/bottomnav/res/values/strings.xml create mode 100644 catalog/java/io/material/catalog/button/ButtonsFragment.java create mode 100644 catalog/java/io/material/catalog/button/ButtonsMainDemoFragment.java create mode 100644 catalog/java/io/material/catalog/button/res/layout/cat_buttons_fragment.xml create mode 100644 catalog/java/io/material/catalog/button/res/values/strings.xml create mode 100644 catalog/java/io/material/catalog/card/CardFragment.java create mode 100644 catalog/java/io/material/catalog/card/CardMainDemoFragment.java create mode 100644 catalog/java/io/material/catalog/card/res/layout/cat_card_fragment.xml create mode 100644 catalog/java/io/material/catalog/card/res/values/dimens.xml create mode 100644 catalog/java/io/material/catalog/card/res/values/strings.xml create mode 100644 catalog/java/io/material/catalog/chip/ChipFragment.java create mode 100644 catalog/java/io/material/catalog/chip/ChipGroupDemoFragment.java create mode 100644 catalog/java/io/material/catalog/chip/ChipMainDemoFragment.java create mode 100644 catalog/java/io/material/catalog/chip/res/color/close_icon_tint_list.xml create mode 100644 catalog/java/io/material/catalog/chip/res/layout/cat_chip_content.xml create mode 100644 catalog/java/io/material/catalog/chip/res/layout/cat_chip_fragment.xml create mode 100644 catalog/java/io/material/catalog/chip/res/layout/cat_chip_group_fragment.xml create mode 100644 catalog/java/io/material/catalog/chip/res/layout/cat_chip_group_item_choice.xml create mode 100644 catalog/java/io/material/catalog/chip/res/layout/cat_chip_group_item_filter.xml create mode 100644 catalog/java/io/material/catalog/chip/res/layout/cat_chip_text_field_fragment.xml create mode 100644 catalog/java/io/material/catalog/chip/res/values/strings.xml create mode 100644 catalog/java/io/material/catalog/chip/res/xml/standalone_chip.xml create mode 100644 catalog/java/io/material/catalog/draggable/DraggableCoordinatorLayout.java create mode 100644 catalog/java/io/material/catalog/fab/FabFragment.java create mode 100644 catalog/java/io/material/catalog/fab/FabMainDemoFragment.java create mode 100644 catalog/java/io/material/catalog/fab/res/layout/cat_fab_fragment.xml create mode 100644 catalog/java/io/material/catalog/fab/res/layout/mtrl_fabs.xml create mode 100644 catalog/java/io/material/catalog/fab/res/values/strings.xml create mode 100644 catalog/java/io/material/catalog/feature/Demo.java create mode 100644 catalog/java/io/material/catalog/feature/DemoActivity.java create mode 100644 catalog/java/io/material/catalog/feature/DemoFragment.java create mode 100644 catalog/java/io/material/catalog/feature/DemoLandingFragment.java create mode 100644 catalog/java/io/material/catalog/feature/DemoUtils.java create mode 100644 catalog/java/io/material/catalog/feature/FeatureDemo.java create mode 100644 catalog/java/io/material/catalog/feature/FeatureDemoUtils.java create mode 100644 catalog/java/io/material/catalog/feature/OnBackPressedHandler.java create mode 100644 catalog/java/io/material/catalog/feature/res/layout/cat_demo_activity.xml create mode 100644 catalog/java/io/material/catalog/feature/res/layout/cat_demo_fragment.xml create mode 100644 catalog/java/io/material/catalog/feature/res/layout/cat_demo_landing_fragment.xml create mode 100644 catalog/java/io/material/catalog/feature/res/layout/cat_demo_landing_link_entry.xml create mode 100644 catalog/java/io/material/catalog/feature/res/layout/cat_demo_landing_links_section.xml create mode 100644 catalog/java/io/material/catalog/feature/res/layout/cat_demo_landing_row.xml create mode 100644 catalog/java/io/material/catalog/feature/res/values/dimens.xml create mode 100644 catalog/java/io/material/catalog/feature/res/values/strings.xml create mode 100644 catalog/java/io/material/catalog/font/FontFragment.java create mode 100644 catalog/java/io/material/catalog/font/FontMainDemoFragment.java create mode 100644 catalog/java/io/material/catalog/font/res/layout/cat_font_styles_fragment.xml create mode 100644 catalog/java/io/material/catalog/font/res/layout/cat_font_styles_item.xml create mode 100644 catalog/java/io/material/catalog/font/res/values/arrays.xml create mode 100644 catalog/java/io/material/catalog/font/res/values/strings.xml create mode 100644 catalog/java/io/material/catalog/main/MainActivity.java create mode 100644 catalog/java/io/material/catalog/main/res/layout/cat_main_activity.xml create mode 100644 catalog/java/io/material/catalog/res/mipmap-anydpi-v26/ic_launcher.xml create mode 100644 catalog/java/io/material/catalog/res/mipmap-anydpi-v26/ic_launcher_round.xml create mode 100644 catalog/java/io/material/catalog/res/mipmap-hdpi/ic_launcher.png create mode 100644 catalog/java/io/material/catalog/res/mipmap-hdpi/ic_launcher_background.png create mode 100644 catalog/java/io/material/catalog/res/mipmap-hdpi/ic_launcher_foreground.png create mode 100644 catalog/java/io/material/catalog/res/mipmap-hdpi/ic_launcher_round.png create mode 100644 catalog/java/io/material/catalog/res/mipmap-mdpi/ic_launcher.png create mode 100644 catalog/java/io/material/catalog/res/mipmap-mdpi/ic_launcher_background.png create mode 100644 catalog/java/io/material/catalog/res/mipmap-mdpi/ic_launcher_foreground.png create mode 100644 catalog/java/io/material/catalog/res/mipmap-mdpi/ic_launcher_round.png create mode 100644 catalog/java/io/material/catalog/res/mipmap-xhdpi/ic_launcher.png create mode 100644 catalog/java/io/material/catalog/res/mipmap-xhdpi/ic_launcher_background.png create mode 100644 catalog/java/io/material/catalog/res/mipmap-xhdpi/ic_launcher_foreground.png create mode 100644 catalog/java/io/material/catalog/res/mipmap-xhdpi/ic_launcher_round.png create mode 100644 catalog/java/io/material/catalog/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 catalog/java/io/material/catalog/res/mipmap-xxhdpi/ic_launcher_background.png create mode 100644 catalog/java/io/material/catalog/res/mipmap-xxhdpi/ic_launcher_foreground.png create mode 100644 catalog/java/io/material/catalog/res/mipmap-xxhdpi/ic_launcher_round.png create mode 100644 catalog/java/io/material/catalog/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 catalog/java/io/material/catalog/res/mipmap-xxxhdpi/ic_launcher_background.png create mode 100644 catalog/java/io/material/catalog/res/mipmap-xxxhdpi/ic_launcher_foreground.png create mode 100644 catalog/java/io/material/catalog/res/mipmap-xxxhdpi/ic_launcher_round.png create mode 100644 catalog/java/io/material/catalog/res/values/strings.xml create mode 100644 catalog/java/io/material/catalog/tableofcontents/GridDividerDecoration.java create mode 100644 catalog/java/io/material/catalog/tableofcontents/TocAdapter.java create mode 100644 catalog/java/io/material/catalog/tableofcontents/TocFragment.java create mode 100644 catalog/java/io/material/catalog/tableofcontents/TocModule.java create mode 100644 catalog/java/io/material/catalog/tableofcontents/TocResourceProvider.java create mode 100644 catalog/java/io/material/catalog/tableofcontents/TocViewHolder.java create mode 100644 catalog/java/io/material/catalog/tableofcontents/res/layout/cat_toc_fragment.xml create mode 100644 catalog/java/io/material/catalog/tableofcontents/res/layout/cat_toc_header.xml create mode 100644 catalog/java/io/material/catalog/tableofcontents/res/layout/cat_toc_item.xml create mode 100644 catalog/java/io/material/catalog/tableofcontents/res/values/colors.xml create mode 100644 catalog/java/io/material/catalog/tableofcontents/res/values/dimens.xml create mode 100644 catalog/java/io/material/catalog/tableofcontents/res/values/strings.xml create mode 100644 catalog/java/io/material/catalog/tabs/TabItemContentFragment.java create mode 100644 catalog/java/io/material/catalog/tabs/TabsControllableDemoFragment.java create mode 100644 catalog/java/io/material/catalog/tabs/TabsFragment.java create mode 100644 catalog/java/io/material/catalog/tabs/TabsMainDemoFragment.java create mode 100644 catalog/java/io/material/catalog/tabs/TabsPagerAdapter.java create mode 100644 catalog/java/io/material/catalog/tabs/TabsScrollableDemoFragment.java create mode 100644 catalog/java/io/material/catalog/tabs/res/drawable/cat_tabs_box_indicator.xml create mode 100644 catalog/java/io/material/catalog/tabs/res/drawable/cat_tabs_line_indicator.xml create mode 100644 catalog/java/io/material/catalog/tabs/res/drawable/cat_tabs_oval_indicator.xml create mode 100644 catalog/java/io/material/catalog/tabs/res/drawable/cat_tabs_pill_indicator.xml create mode 100644 catalog/java/io/material/catalog/tabs/res/drawable/cat_tabs_rounded_line_indicator.xml create mode 100644 catalog/java/io/material/catalog/tabs/res/layout/cat_tabs_controllable_content.xml create mode 100644 catalog/java/io/material/catalog/tabs/res/layout/cat_tabs_controllable_fragment.xml create mode 100644 catalog/java/io/material/catalog/tabs/res/layout/cat_tabs_main_content.xml create mode 100644 catalog/java/io/material/catalog/tabs/res/layout/cat_tabs_scrollable_content.xml create mode 100644 catalog/java/io/material/catalog/tabs/res/layout/tab_item_content_fragment.xml create mode 100644 catalog/java/io/material/catalog/tabs/res/values/arrays.xml create mode 100644 catalog/java/io/material/catalog/tabs/res/values/dimens.xml create mode 100644 catalog/java/io/material/catalog/tabs/res/values/strings.xml create mode 100644 catalog/java/io/material/catalog/textfield/TextFieldControllableDemoFragment.java create mode 100644 catalog/java/io/material/catalog/textfield/TextFieldFragment.java create mode 100644 catalog/java/io/material/catalog/textfield/TextFieldMainDemoFragment.java create mode 100644 catalog/java/io/material/catalog/textfield/res/layout/cat_textfield_content.xml create mode 100644 catalog/java/io/material/catalog/textfield/res/layout/cat_textfield_controllable_fragment.xml create mode 100644 catalog/java/io/material/catalog/textfield/res/layout/cat_textfield_fragment.xml create mode 100644 catalog/java/io/material/catalog/textfield/res/values/dimens.xml create mode 100644 catalog/java/io/material/catalog/textfield/res/values/strings.xml create mode 100644 catalog/java/io/material/catalog/themeswitcher/ThemeOverlayUtils.java create mode 100644 catalog/java/io/material/catalog/themeswitcher/ThemeSwitcherDialogFragment.java create mode 100644 catalog/java/io/material/catalog/themeswitcher/ThemeSwitcherHelper.java create mode 100644 catalog/java/io/material/catalog/themeswitcher/ThemeSwitcherResourceProvider.java create mode 100644 catalog/java/io/material/catalog/themeswitcher/res/layout/mtrl_theme_switcher_dialog.xml create mode 100644 catalog/java/io/material/catalog/themeswitcher/res/menu/mtrl_theme_switcher_menu.xml create mode 100644 catalog/java/io/material/catalog/themeswitcher/res/values/arrays.xml create mode 100644 catalog/java/io/material/catalog/themeswitcher/res/values/strings.xml create mode 100644 catalog/java/io/material/catalog/themeswitcher/res/values/themes_overlays_primary.xml create mode 100644 catalog/java/io/material/catalog/themeswitcher/res/values/themes_overlays_secondary.xml create mode 100644 catalog/java/io/material/catalog/topappbar/TopAppBarCollapsingDemoFragment.java create mode 100644 catalog/java/io/material/catalog/topappbar/TopAppBarFragment.java create mode 100644 catalog/java/io/material/catalog/topappbar/TopAppBarMainDemoFragment.java create mode 100644 catalog/java/io/material/catalog/topappbar/TopAppBarScrollingDemoFragment.java create mode 100644 catalog/java/io/material/catalog/topappbar/res/layout/cat_topappbar_collapsing_fragment.xml create mode 100644 catalog/java/io/material/catalog/topappbar/res/layout/cat_topappbar_filler_text_view.xml create mode 100644 catalog/java/io/material/catalog/topappbar/res/layout/cat_topappbar_fragment.xml create mode 100644 catalog/java/io/material/catalog/topappbar/res/layout/cat_topappbar_scrolling_fragment.xml create mode 100644 catalog/java/io/material/catalog/topappbar/res/menu/cat_topappbar_menu.xml create mode 100644 catalog/java/io/material/catalog/topappbar/res/values/dimens.xml create mode 100644 catalog/java/io/material/catalog/topappbar/res/values/strings.xml create mode 100644 catalog/java/io/material/catalog/transformation/TransformationFragment.java create mode 100644 catalog/java/io/material/catalog/transformation/TransformationMainDemoFragment.java create mode 100644 catalog/java/io/material/catalog/transformation/res/layout/cat_transformation_fragment.xml create mode 100644 catalog/java/io/material/catalog/transformation/res/values/strings.xml create mode 100644 docs/catalog-app.md diff --git a/README.md b/README.md index f61e56662..204072e90 100644 --- a/README.md +++ b/README.md @@ -20,6 +20,8 @@ take a look at our [Getting Started](docs/getting-started.md) guide. - [All Components](https://github.com/material-components/material-components-android/tree/master/lib/) - [Getting Started](docs/getting-started.md) - [Contributing](docs/contributing.md) +- [Building From Source](building-from-source.md) +- [Catalog App](catalog-app.md) - [Class documentation](https://developer.android.com/reference/com/google/android/material/classes) (external site) diff --git a/catalog/build.gradle b/catalog/build.gradle new file mode 100644 index 000000000..19bfe7828 --- /dev/null +++ b/catalog/build.gradle @@ -0,0 +1,69 @@ +apply plugin: 'com.android.application' + +dependencies { + api 'com.google.dagger:dagger:2.15' + annotationProcessor 'com.google.dagger:dagger-compiler:2.15' + + api 'com.google.dagger:dagger-android:2.15' + api 'com.google.dagger:dagger-android-support:2.15' + annotationProcessor 'com.google.dagger:dagger-android-processor:2.15' + + api 'com.android.support:multidex:1.0.3' + + api project(':lib') +} + +def srcDirs = [ + 'application', + 'application/attrs', + 'application/legacymultidex', + 'application/scope', + 'application/theme', + 'assets', + 'bottomappbar', + 'bottomnav', + 'button', + 'card', + 'chip', + 'draggable', + 'fab', + 'feature', + 'font', + 'main', + 'tableofcontents', + 'tabs', + 'textfield', + 'themeswitcher', + 'topappbar', + 'transformation' +] + +android { + defaultConfig { + manifestPlaceholders = [ + application_name : 'CatalogApplication', + application_theme : 'Catalog', + catalog_application_component: 'io.material.catalog.application.DaggerCatalogApplicationComponent' + ] + } + + sourceSets { + main { + manifest.srcFile 'java/io/material/catalog/AndroidManifest.xml' + java.srcDir 'java' + java.includes = srcDirs.collect { 'io/material/catalog/' + it + '/**/*.java' } + java.excludes = [ + '**/build/**', + ] + res.srcDirs = ['java/io/material/catalog/res'] + srcDirs.forEach { + res.srcDirs += 'java/io/material/catalog/' + it + '/res' + } + } + } + + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } +} diff --git a/catalog/java/io/material/catalog/AndroidManifest.xml b/catalog/java/io/material/catalog/AndroidManifest.xml new file mode 100644 index 000000000..b1bcf4ea5 --- /dev/null +++ b/catalog/java/io/material/catalog/AndroidManifest.xml @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + diff --git a/catalog/java/io/material/catalog/README.md b/catalog/java/io/material/catalog/README.md new file mode 100644 index 000000000..a5ae5bb27 --- /dev/null +++ b/catalog/java/io/material/catalog/README.md @@ -0,0 +1,2 @@ +# Catalog + diff --git a/catalog/java/io/material/catalog/application/CatalogApplication.java b/catalog/java/io/material/catalog/application/CatalogApplication.java new file mode 100644 index 000000000..dc50ab876 --- /dev/null +++ b/catalog/java/io/material/catalog/application/CatalogApplication.java @@ -0,0 +1,97 @@ +/* + * Copyright 2017 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 io.material.catalog.application; + +import android.app.Activity; +import android.app.Application; +import android.content.pm.ApplicationInfo; +import android.content.pm.PackageManager; +import android.util.Log; +import dagger.android.AndroidInjector; +import dagger.android.DispatchingAndroidInjector; +import dagger.android.HasActivityInjector; +import java.lang.reflect.InvocationTargetException; +import javax.inject.Inject; + +/** Catalog application class that provides support for using dispatching Dagger injectors. */ +public class CatalogApplication extends Application implements HasActivityInjector { + + /** Logging tag */ + public static final String TAG = "CatalogApplication"; + /** Key that contains the class name to replace the default application component. */ + public static final String COMPONENT_OVERRIDE_KEY = + "io.material.catalog.application.componentOverride"; + + @Inject DispatchingAndroidInjector activityInjector; + + @Override + public void onCreate() { + super.onCreate(); + if (!overrideApplicationComponent(this)) { + DaggerCatalogApplicationComponent.builder().application(this).build().inject(this); + } + } + + /** + * Replaces the application component by the one specified in AndroidManifest.xml metadata with + * key {@link #COMPONENT_OVERRIDE_KEY}. Returns {@code true} if the component was properly + * initialized and replaced, otherwise returns {@code false}. + * + *

This assumes that the replacement component can be initialized exactly the same way as the + * default component. + * + *

Suppressing unchecked warnings because there is no way we have a statically typed class + * argument for instances of Class in this method. + */ + @SuppressWarnings("unchecked") + private boolean overrideApplicationComponent(CatalogApplication catalogApplication) { + try { + ApplicationInfo applicationInfo = + getPackageManager().getApplicationInfo(getPackageName(), PackageManager.GET_META_DATA); + String className = applicationInfo.metaData.getString(COMPONENT_OVERRIDE_KEY); + if (className == null) { + // Fail early + Log.i(TAG, "Component override metadata not found, using default component."); + return false; + } + Log.i(TAG, className); + Object builderObject = Class.forName(className).getMethod("builder").invoke(null); + Class builderClass = builderObject.getClass(); + builderClass + .getMethod("application", Application.class) + .invoke(builderObject, catalogApplication); + Object component = builderClass.getMethod("build").invoke(builderObject); + component + .getClass() + .getMethod("inject", CatalogApplication.class) + .invoke(component, catalogApplication); + return true; + } catch (PackageManager.NameNotFoundException + | ClassNotFoundException + | NoSuchMethodException + | InvocationTargetException + | IllegalAccessException e) { + Log.e(TAG, "Component override failed with exception:", e); + } + return false; + } + + @Override + public AndroidInjector activityInjector() { + return activityInjector; + } +} diff --git a/catalog/java/io/material/catalog/application/CatalogApplicationComponent.java b/catalog/java/io/material/catalog/application/CatalogApplicationComponent.java new file mode 100644 index 000000000..fd253b750 --- /dev/null +++ b/catalog/java/io/material/catalog/application/CatalogApplicationComponent.java @@ -0,0 +1,44 @@ +/* + * Copyright 2017 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 io.material.catalog.application; + +import android.app.Application; +import dagger.BindsInstance; +import dagger.android.support.AndroidSupportInjectionModule; +import io.material.catalog.application.scope.ApplicationScope; +import io.material.catalog.main.MainActivity; + +/** The Application's root component. */ +@ApplicationScope +@dagger.Component( + modules = { + AndroidSupportInjectionModule.class, + MainActivity.Module.class, + } +) +public interface CatalogApplicationComponent { + void inject(CatalogApplication app); + + /** The root component's builder. */ + @dagger.Component.Builder + interface Builder { + @BindsInstance + CatalogApplicationComponent.Builder application(Application application); + + CatalogApplicationComponent build(); + } +} diff --git a/catalog/java/io/material/catalog/application/attrs/res/values/attrs.xml b/catalog/java/io/material/catalog/application/attrs/res/values/attrs.xml new file mode 100644 index 000000000..768109a67 --- /dev/null +++ b/catalog/java/io/material/catalog/application/attrs/res/values/attrs.xml @@ -0,0 +1,26 @@ + + + + + + + diff --git a/catalog/java/io/material/catalog/application/legacymultidex/LegacyMultidexCatalogApplication.java b/catalog/java/io/material/catalog/application/legacymultidex/LegacyMultidexCatalogApplication.java new file mode 100644 index 000000000..a84d644c3 --- /dev/null +++ b/catalog/java/io/material/catalog/application/legacymultidex/LegacyMultidexCatalogApplication.java @@ -0,0 +1,33 @@ +/* + * Copyright 2017 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 io.material.catalog.application.legacymultidex; + +import android.content.Context; +import android.support.multidex.MultiDex; +import io.material.catalog.application.CatalogApplication; + +/** + * A version of {@link CatalogApplication} for development builds on older phones that uses the + * multidex support library for allowing multiple dex files. + */ +public class LegacyMultidexCatalogApplication extends CatalogApplication { + @Override + protected void attachBaseContext(Context base) { + super.attachBaseContext(base); + MultiDex.install(this); + } +} diff --git a/catalog/java/io/material/catalog/application/scope/ActivityScope.java b/catalog/java/io/material/catalog/application/scope/ActivityScope.java new file mode 100644 index 000000000..3fae3234f --- /dev/null +++ b/catalog/java/io/material/catalog/application/scope/ActivityScope.java @@ -0,0 +1,25 @@ +/* + * Copyright 2017 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 io.material.catalog.application.scope; + +import java.lang.annotation.Documented; +import javax.inject.Scope; + +/** Dagger scope for dependencies that should only have a single instance created per activity. */ +@Scope +@Documented +public @interface ActivityScope {} diff --git a/catalog/java/io/material/catalog/application/scope/ApplicationScope.java b/catalog/java/io/material/catalog/application/scope/ApplicationScope.java new file mode 100644 index 000000000..25bdaf1c6 --- /dev/null +++ b/catalog/java/io/material/catalog/application/scope/ApplicationScope.java @@ -0,0 +1,28 @@ +/* + * Copyright 2017 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 io.material.catalog.application.scope; + +import java.lang.annotation.Documented; +import javax.inject.Scope; + +/** + * Dagger scope for dependencies that should only have a single instance created for the entire + * application. + */ +@Scope +@Documented +public @interface ApplicationScope {} diff --git a/catalog/java/io/material/catalog/application/scope/FragmentScope.java b/catalog/java/io/material/catalog/application/scope/FragmentScope.java new file mode 100644 index 000000000..a98a60c5a --- /dev/null +++ b/catalog/java/io/material/catalog/application/scope/FragmentScope.java @@ -0,0 +1,25 @@ +/* + * Copyright 2017 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 io.material.catalog.application.scope; + +import java.lang.annotation.Documented; +import javax.inject.Scope; + +/** Dagger scope for dependencies that should only have a single instance created per fragment. */ +@Scope +@Documented +public @interface FragmentScope {} diff --git a/catalog/java/io/material/catalog/application/theme/res/values/colors.xml b/catalog/java/io/material/catalog/application/theme/res/values/colors.xml new file mode 100644 index 000000000..1bd51d7d9 --- /dev/null +++ b/catalog/java/io/material/catalog/application/theme/res/values/colors.xml @@ -0,0 +1,28 @@ + + + + #FFFFFF + #FFFFFF + + #212121 + #535353 + #000000 + + #30E57E + #33F286 + #25B363 + diff --git a/catalog/java/io/material/catalog/application/theme/res/values/strings.xml b/catalog/java/io/material/catalog/application/theme/res/values/strings.xml new file mode 100644 index 000000000..0a6a85a10 --- /dev/null +++ b/catalog/java/io/material/catalog/application/theme/res/values/strings.xml @@ -0,0 +1,19 @@ + + + + Close demo + diff --git a/catalog/java/io/material/catalog/application/theme/res/values/styles.xml b/catalog/java/io/material/catalog/application/theme/res/values/styles.xml new file mode 100644 index 000000000..591443805 --- /dev/null +++ b/catalog/java/io/material/catalog/application/theme/res/values/styles.xml @@ -0,0 +1,43 @@ + + + + + + + + + + + + diff --git a/catalog/java/io/material/catalog/assets/res/drawable-xxxhdpi/ic_placeholder_circle_24.png b/catalog/java/io/material/catalog/assets/res/drawable-xxxhdpi/ic_placeholder_circle_24.png new file mode 100644 index 0000000000000000000000000000000000000000..0974634942987fdb2ee3fe9d06d445ad2009c36f GIT binary patch literal 1370 zcmV-g1*Q6lP)`LY5aD`jaMP}FXb&SJ?)0P5=&RADF#1Mn4* z+qBrRcZ;0`5zMa6-g{^Eu=Ku1@vPg81HlE`dYYyMVaWMz2faG?cXpl*@A?0}-yhq? zVHhq#U!S$v%X`}BbLfYQ!_b20dW1EPd_aohgGa3OsHN!AQ*-Wdhm>^ZUd^S~?7H{q z@&c(2FLZUkq43H>0;xfwyxJ$Rn<0kODBjI#3%?yRpn=qjhQW4RLwvR54bqUST2>nV zG=L9jn132nb?zsOAkAa6n^X{=Q>Ku1Fy*vte1{pNJsO=NXv4pzK%}=X&=p3 zQ=o$!Vu_qi@vECb?7@uFVh?8uu?y3WAJx-<5yU=>KK$Caf!K+gk7^!>z0~r3#d(8R z?E0osWdN}ogMZr<8i?I!UbZ~Cj~LPc@r%Y&d5~^U-t+ZOARUoB*#o+e?x6d}n|U0! z5d=|m6A+_e5;7U^%0RdV-h1zMo9@UA zNL=v!RxF%suU~#l8UNfsmI*>)&-Tp(dX=zldV~b$_|%9USddp&@;Btqy8C}Y0iWQK zkf93$e`Mprz>9=+)4C-;z^CYBJCzsb2HeDka*pXgVL}$4;0|3U@#BSoPcFpA%$YK| zWXg>A`kVR#`93*j)?*+aPvsvyk$?6FRG%g#@??lk$&jN+jSdqMx&#J%D#X^M_0bb= zf75n*98e=iXb>4uqE7|iXd$F;JqG)m-tLx-{5dUh1gZG6=}}0rP_RCgcelLVz(#(9 zXsP@>a}tIWQ!I3BE22PM1qllpgak_n>0b8mn7q+KmMLOa5y^XPh1gi&I&Sz2vK| z|DzT1vrHbeY8nlM^bmE><;hQt0kf3bv<;%tY!}q0viwvTNX$F?${jwYKwzY)HlUh9 zGcsl&E6!Mw}i|0;>mz%CtjjBR$P5~~)mVjC5PD<)8fDH9_d@+lOV z>bBA3oofRjr4)+P88I|6(A7on6s3ePT6G4bQbp2GmJ*6$PM8uADDY_^Ze!j+RZhp` zlm-T_4QwedG&OvMfebUp2KF~qS4yF;>i?>>V8fNt^W>vGXL}40W5lh2kLp-O7!f_P z{~IK(sj7o5A*O}@2>Isf$U4~4M~lKd7r&C#Mh+!bbK3x*JDNa7rMU+f_pZzndTndd@oD*Mtrb6+|>gu6euK3>% z-6!1Ku@wLi5JbU9`xGJ4i$EcYkduhKGgWLde*tRn7xnplsgng~#3Y}&4s{)tBFHc>by|Qpc#fplRh0C*-r!I>JirTNxSu44X cs>kyH0PL3`<15%AUjP6A07*qoM6N<$f}_fnI{*Lx literal 0 HcmV?d00001 diff --git a/catalog/java/io/material/catalog/assets/res/drawable/ic_add_24px.xml b/catalog/java/io/material/catalog/assets/res/drawable/ic_add_24px.xml new file mode 100644 index 000000000..3a21aec8c --- /dev/null +++ b/catalog/java/io/material/catalog/assets/res/drawable/ic_add_24px.xml @@ -0,0 +1,24 @@ + + + + diff --git a/catalog/java/io/material/catalog/assets/res/drawable/ic_animation_24px.xml b/catalog/java/io/material/catalog/assets/res/drawable/ic_animation_24px.xml new file mode 100644 index 000000000..c426ba1c2 --- /dev/null +++ b/catalog/java/io/material/catalog/assets/res/drawable/ic_animation_24px.xml @@ -0,0 +1,24 @@ + + + + diff --git a/catalog/java/io/material/catalog/assets/res/drawable/ic_bottom_nav_24px.xml b/catalog/java/io/material/catalog/assets/res/drawable/ic_bottom_nav_24px.xml new file mode 100644 index 000000000..6ff099132 --- /dev/null +++ b/catalog/java/io/material/catalog/assets/res/drawable/ic_bottom_nav_24px.xml @@ -0,0 +1,28 @@ + + + + + + diff --git a/catalog/java/io/material/catalog/assets/res/drawable/ic_bottom_sheets_24px.xml b/catalog/java/io/material/catalog/assets/res/drawable/ic_bottom_sheets_24px.xml new file mode 100644 index 000000000..c9ebe1564 --- /dev/null +++ b/catalog/java/io/material/catalog/assets/res/drawable/ic_bottom_sheets_24px.xml @@ -0,0 +1,27 @@ + + + + + diff --git a/catalog/java/io/material/catalog/assets/res/drawable/ic_bottomappbar_24px.xml b/catalog/java/io/material/catalog/assets/res/drawable/ic_bottomappbar_24px.xml new file mode 100644 index 000000000..efde207da --- /dev/null +++ b/catalog/java/io/material/catalog/assets/res/drawable/ic_bottomappbar_24px.xml @@ -0,0 +1,52 @@ + + + + + + + + + + + diff --git a/catalog/java/io/material/catalog/assets/res/drawable/ic_buttons_24px.xml b/catalog/java/io/material/catalog/assets/res/drawable/ic_buttons_24px.xml new file mode 100644 index 000000000..c938a4e68 --- /dev/null +++ b/catalog/java/io/material/catalog/assets/res/drawable/ic_buttons_24px.xml @@ -0,0 +1,30 @@ + + + + + + diff --git a/catalog/java/io/material/catalog/assets/res/drawable/ic_card_24px.xml b/catalog/java/io/material/catalog/assets/res/drawable/ic_card_24px.xml new file mode 100644 index 000000000..6e5d31795 --- /dev/null +++ b/catalog/java/io/material/catalog/assets/res/drawable/ic_card_24px.xml @@ -0,0 +1,30 @@ + + + + + + diff --git a/catalog/java/io/material/catalog/assets/res/drawable/ic_chips_24px.xml b/catalog/java/io/material/catalog/assets/res/drawable/ic_chips_24px.xml new file mode 100644 index 000000000..b6a0979bb --- /dev/null +++ b/catalog/java/io/material/catalog/assets/res/drawable/ic_chips_24px.xml @@ -0,0 +1,30 @@ + + + + + + diff --git a/catalog/java/io/material/catalog/assets/res/drawable/ic_close_vd_theme_24px.xml b/catalog/java/io/material/catalog/assets/res/drawable/ic_close_vd_theme_24px.xml new file mode 100644 index 000000000..b184e46cd --- /dev/null +++ b/catalog/java/io/material/catalog/assets/res/drawable/ic_close_vd_theme_24px.xml @@ -0,0 +1,25 @@ + + + + diff --git a/catalog/java/io/material/catalog/assets/res/drawable/ic_colors_24px.xml b/catalog/java/io/material/catalog/assets/res/drawable/ic_colors_24px.xml new file mode 100644 index 000000000..8b2ab1cdd --- /dev/null +++ b/catalog/java/io/material/catalog/assets/res/drawable/ic_colors_24px.xml @@ -0,0 +1,27 @@ + + + + + diff --git a/catalog/java/io/material/catalog/assets/res/drawable/ic_colors_vd_theme_24px.xml b/catalog/java/io/material/catalog/assets/res/drawable/ic_colors_vd_theme_24px.xml new file mode 100644 index 000000000..03e066d45 --- /dev/null +++ b/catalog/java/io/material/catalog/assets/res/drawable/ic_colors_vd_theme_24px.xml @@ -0,0 +1,28 @@ + + + + + diff --git a/catalog/java/io/material/catalog/assets/res/drawable/ic_components_24px.xml b/catalog/java/io/material/catalog/assets/res/drawable/ic_components_24px.xml new file mode 100644 index 000000000..6970d287c --- /dev/null +++ b/catalog/java/io/material/catalog/assets/res/drawable/ic_components_24px.xml @@ -0,0 +1,29 @@ + + + + + diff --git a/catalog/java/io/material/catalog/assets/res/drawable/ic_data_table_24px.xml b/catalog/java/io/material/catalog/assets/res/drawable/ic_data_table_24px.xml new file mode 100644 index 000000000..263f4ec2e --- /dev/null +++ b/catalog/java/io/material/catalog/assets/res/drawable/ic_data_table_24px.xml @@ -0,0 +1,30 @@ + + + + + + diff --git a/catalog/java/io/material/catalog/assets/res/drawable/ic_demo_play_circle_outline_vd_theme_24px.xml b/catalog/java/io/material/catalog/assets/res/drawable/ic_demo_play_circle_outline_vd_theme_24px.xml new file mode 100644 index 000000000..ce320e6f2 --- /dev/null +++ b/catalog/java/io/material/catalog/assets/res/drawable/ic_demo_play_circle_outline_vd_theme_24px.xml @@ -0,0 +1,32 @@ + + + + + diff --git a/catalog/java/io/material/catalog/assets/res/drawable/ic_developer_guide_24px.xml b/catalog/java/io/material/catalog/assets/res/drawable/ic_developer_guide_24px.xml new file mode 100644 index 000000000..0ccc6d899 --- /dev/null +++ b/catalog/java/io/material/catalog/assets/res/drawable/ic_developer_guide_24px.xml @@ -0,0 +1,24 @@ + + + + diff --git a/catalog/java/io/material/catalog/assets/res/drawable/ic_dialogs_24px.xml b/catalog/java/io/material/catalog/assets/res/drawable/ic_dialogs_24px.xml new file mode 100644 index 000000000..48ba85484 --- /dev/null +++ b/catalog/java/io/material/catalog/assets/res/drawable/ic_dialogs_24px.xml @@ -0,0 +1,30 @@ + + + + + + diff --git a/catalog/java/io/material/catalog/assets/res/drawable/ic_expension_panels_24px.xml b/catalog/java/io/material/catalog/assets/res/drawable/ic_expension_panels_24px.xml new file mode 100644 index 000000000..a39f6e83e --- /dev/null +++ b/catalog/java/io/material/catalog/assets/res/drawable/ic_expension_panels_24px.xml @@ -0,0 +1,30 @@ + + + + + + diff --git a/catalog/java/io/material/catalog/assets/res/drawable/ic_fab_24px.xml b/catalog/java/io/material/catalog/assets/res/drawable/ic_fab_24px.xml new file mode 100644 index 000000000..cfc050ebf --- /dev/null +++ b/catalog/java/io/material/catalog/assets/res/drawable/ic_fab_24px.xml @@ -0,0 +1,30 @@ + + + + + + diff --git a/catalog/java/io/material/catalog/assets/res/drawable/ic_favorite_vd_theme_24px.xml b/catalog/java/io/material/catalog/assets/res/drawable/ic_favorite_vd_theme_24px.xml new file mode 100644 index 000000000..b892bf2a5 --- /dev/null +++ b/catalog/java/io/material/catalog/assets/res/drawable/ic_favorite_vd_theme_24px.xml @@ -0,0 +1,25 @@ + + + + diff --git a/catalog/java/io/material/catalog/assets/res/drawable/ic_feature_highlight_24px.xml b/catalog/java/io/material/catalog/assets/res/drawable/ic_feature_highlight_24px.xml new file mode 100644 index 000000000..1461e0be3 --- /dev/null +++ b/catalog/java/io/material/catalog/assets/res/drawable/ic_feature_highlight_24px.xml @@ -0,0 +1,30 @@ + + + + + + diff --git a/catalog/java/io/material/catalog/assets/res/drawable/ic_github_24px.xml b/catalog/java/io/material/catalog/assets/res/drawable/ic_github_24px.xml new file mode 100644 index 000000000..393e57a6d --- /dev/null +++ b/catalog/java/io/material/catalog/assets/res/drawable/ic_github_24px.xml @@ -0,0 +1,24 @@ + + + + diff --git a/catalog/java/io/material/catalog/assets/res/drawable/ic_info_outline_24px.xml b/catalog/java/io/material/catalog/assets/res/drawable/ic_info_outline_24px.xml new file mode 100644 index 000000000..77eb4ab9a --- /dev/null +++ b/catalog/java/io/material/catalog/assets/res/drawable/ic_info_outline_24px.xml @@ -0,0 +1,24 @@ + + + + diff --git a/catalog/java/io/material/catalog/assets/res/drawable/ic_lists_24px.xml b/catalog/java/io/material/catalog/assets/res/drawable/ic_lists_24px.xml new file mode 100644 index 000000000..9399db86d --- /dev/null +++ b/catalog/java/io/material/catalog/assets/res/drawable/ic_lists_24px.xml @@ -0,0 +1,27 @@ + + + + + diff --git a/catalog/java/io/material/catalog/assets/res/drawable/ic_logo_components_48px.xml b/catalog/java/io/material/catalog/assets/res/drawable/ic_logo_components_48px.xml new file mode 100644 index 000000000..54b956725 --- /dev/null +++ b/catalog/java/io/material/catalog/assets/res/drawable/ic_logo_components_48px.xml @@ -0,0 +1,33 @@ + + + + + + + diff --git a/catalog/java/io/material/catalog/assets/res/drawable/ic_menu_24px.xml b/catalog/java/io/material/catalog/assets/res/drawable/ic_menu_24px.xml new file mode 100644 index 000000000..4b5cb2f94 --- /dev/null +++ b/catalog/java/io/material/catalog/assets/res/drawable/ic_menu_24px.xml @@ -0,0 +1,30 @@ + + + + + + diff --git a/catalog/java/io/material/catalog/assets/res/drawable/ic_progress_activity_24px.xml b/catalog/java/io/material/catalog/assets/res/drawable/ic_progress_activity_24px.xml new file mode 100644 index 000000000..63bdc8ddd --- /dev/null +++ b/catalog/java/io/material/catalog/assets/res/drawable/ic_progress_activity_24px.xml @@ -0,0 +1,27 @@ + + + + + diff --git a/catalog/java/io/material/catalog/assets/res/drawable/ic_responsive_layout_24px.xml b/catalog/java/io/material/catalog/assets/res/drawable/ic_responsive_layout_24px.xml new file mode 100644 index 000000000..b90d0bedf --- /dev/null +++ b/catalog/java/io/material/catalog/assets/res/drawable/ic_responsive_layout_24px.xml @@ -0,0 +1,27 @@ + + + + + diff --git a/catalog/java/io/material/catalog/assets/res/drawable/ic_ripples_24px.xml b/catalog/java/io/material/catalog/assets/res/drawable/ic_ripples_24px.xml new file mode 100644 index 000000000..052775cf7 --- /dev/null +++ b/catalog/java/io/material/catalog/assets/res/drawable/ic_ripples_24px.xml @@ -0,0 +1,27 @@ + + + + + diff --git a/catalog/java/io/material/catalog/assets/res/drawable/ic_scrollable_header_24px.xml b/catalog/java/io/material/catalog/assets/res/drawable/ic_scrollable_header_24px.xml new file mode 100644 index 000000000..3599fa904 --- /dev/null +++ b/catalog/java/io/material/catalog/assets/res/drawable/ic_scrollable_header_24px.xml @@ -0,0 +1,27 @@ + + + + + diff --git a/catalog/java/io/material/catalog/assets/res/drawable/ic_search_vd_theme_24px.xml b/catalog/java/io/material/catalog/assets/res/drawable/ic_search_vd_theme_24px.xml new file mode 100644 index 000000000..97d3d2d71 --- /dev/null +++ b/catalog/java/io/material/catalog/assets/res/drawable/ic_search_vd_theme_24px.xml @@ -0,0 +1,25 @@ + + + + diff --git a/catalog/java/io/material/catalog/assets/res/drawable/ic_selection_controls_24px.xml b/catalog/java/io/material/catalog/assets/res/drawable/ic_selection_controls_24px.xml new file mode 100644 index 000000000..90e1837de --- /dev/null +++ b/catalog/java/io/material/catalog/assets/res/drawable/ic_selection_controls_24px.xml @@ -0,0 +1,30 @@ + + + + + + diff --git a/catalog/java/io/material/catalog/assets/res/drawable/ic_shadow_24px.xml b/catalog/java/io/material/catalog/assets/res/drawable/ic_shadow_24px.xml new file mode 100644 index 000000000..d66eccc62 --- /dev/null +++ b/catalog/java/io/material/catalog/assets/res/drawable/ic_shadow_24px.xml @@ -0,0 +1,27 @@ + + + + + diff --git a/catalog/java/io/material/catalog/assets/res/drawable/ic_side_navigation_24px.xml b/catalog/java/io/material/catalog/assets/res/drawable/ic_side_navigation_24px.xml new file mode 100644 index 000000000..e5d6123f9 --- /dev/null +++ b/catalog/java/io/material/catalog/assets/res/drawable/ic_side_navigation_24px.xml @@ -0,0 +1,27 @@ + + + + + diff --git a/catalog/java/io/material/catalog/assets/res/drawable/ic_sliders_24px.xml b/catalog/java/io/material/catalog/assets/res/drawable/ic_sliders_24px.xml new file mode 100644 index 000000000..1afbfc303 --- /dev/null +++ b/catalog/java/io/material/catalog/assets/res/drawable/ic_sliders_24px.xml @@ -0,0 +1,27 @@ + + + + + diff --git a/catalog/java/io/material/catalog/assets/res/drawable/ic_steppers_24px.xml b/catalog/java/io/material/catalog/assets/res/drawable/ic_steppers_24px.xml new file mode 100644 index 000000000..f090b9d4a --- /dev/null +++ b/catalog/java/io/material/catalog/assets/res/drawable/ic_steppers_24px.xml @@ -0,0 +1,30 @@ + + + + + + diff --git a/catalog/java/io/material/catalog/assets/res/drawable/ic_subheader_24px.xml b/catalog/java/io/material/catalog/assets/res/drawable/ic_subheader_24px.xml new file mode 100644 index 000000000..e0aca2709 --- /dev/null +++ b/catalog/java/io/material/catalog/assets/res/drawable/ic_subheader_24px.xml @@ -0,0 +1,30 @@ + + + + + + diff --git a/catalog/java/io/material/catalog/assets/res/drawable/ic_switches_24px.xml b/catalog/java/io/material/catalog/assets/res/drawable/ic_switches_24px.xml new file mode 100644 index 000000000..99a3b7ab4 --- /dev/null +++ b/catalog/java/io/material/catalog/assets/res/drawable/ic_switches_24px.xml @@ -0,0 +1,27 @@ + + + + + diff --git a/catalog/java/io/material/catalog/assets/res/drawable/ic_tabs_24px.xml b/catalog/java/io/material/catalog/assets/res/drawable/ic_tabs_24px.xml new file mode 100644 index 000000000..f8535c45b --- /dev/null +++ b/catalog/java/io/material/catalog/assets/res/drawable/ic_tabs_24px.xml @@ -0,0 +1,27 @@ + + + + + diff --git a/catalog/java/io/material/catalog/assets/res/drawable/ic_text_field_24px.xml b/catalog/java/io/material/catalog/assets/res/drawable/ic_text_field_24px.xml new file mode 100644 index 000000000..e4e706f47 --- /dev/null +++ b/catalog/java/io/material/catalog/assets/res/drawable/ic_text_field_24px.xml @@ -0,0 +1,24 @@ + + + + diff --git a/catalog/java/io/material/catalog/assets/res/drawable/ic_toast_24px.xml b/catalog/java/io/material/catalog/assets/res/drawable/ic_toast_24px.xml new file mode 100644 index 000000000..d194f4615 --- /dev/null +++ b/catalog/java/io/material/catalog/assets/res/drawable/ic_toast_24px.xml @@ -0,0 +1,27 @@ + + + + + diff --git a/catalog/java/io/material/catalog/assets/res/drawable/ic_tooltip_24px.xml b/catalog/java/io/material/catalog/assets/res/drawable/ic_tooltip_24px.xml new file mode 100644 index 000000000..7a6f097f4 --- /dev/null +++ b/catalog/java/io/material/catalog/assets/res/drawable/ic_tooltip_24px.xml @@ -0,0 +1,24 @@ + + + + diff --git a/catalog/java/io/material/catalog/assets/res/drawable/ic_topappbar_24px.xml b/catalog/java/io/material/catalog/assets/res/drawable/ic_topappbar_24px.xml new file mode 100644 index 000000000..34e6f461c --- /dev/null +++ b/catalog/java/io/material/catalog/assets/res/drawable/ic_topappbar_24px.xml @@ -0,0 +1,24 @@ + + + + diff --git a/catalog/java/io/material/catalog/bottomappbar/BottomAppBarFragment.java b/catalog/java/io/material/catalog/bottomappbar/BottomAppBarFragment.java new file mode 100644 index 000000000..ca05fb8bc --- /dev/null +++ b/catalog/java/io/material/catalog/bottomappbar/BottomAppBarFragment.java @@ -0,0 +1,74 @@ +/* + * Copyright 2017 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 io.material.catalog.bottomappbar; + +import io.material.catalog.R; + +import android.support.v4.app.Fragment; +import dagger.Provides; +import dagger.android.ContributesAndroidInjector; +import dagger.multibindings.IntoSet; +import io.material.catalog.application.scope.ActivityScope; +import io.material.catalog.application.scope.FragmentScope; +import io.material.catalog.feature.Demo; +import io.material.catalog.feature.DemoLandingFragment; +import io.material.catalog.feature.FeatureDemo; + +/** A landing fragment that links to Bottom App Bar demos for the Catalog app. */ +public class BottomAppBarFragment extends DemoLandingFragment { + + @Override + public int getTitleResId() { + return R.string.cat_bottomappbar_title; + } + + @Override + public int getDescriptionResId() { + return R.string.cat_bottomappbar_description; + } + + @Override + public Demo getMainDemo() { + return new Demo() { + @Override + public Fragment createFragment() { + return new BottomAppBarMainDemoFragment(); + } + }; + } + + /** The Dagger module for {@link BottomAppBarFragment} dependencies. */ + @dagger.Module + public abstract static class Module { + + @FragmentScope + @ContributesAndroidInjector + abstract BottomAppBarFragment contributeInjector(); + + @IntoSet + @Provides + @ActivityScope + static FeatureDemo provideFeatureDemo() { + return new FeatureDemo(R.string.cat_bottomappbar_title, R.drawable.ic_bottomappbar_24px) { + @Override + public Fragment createFragment() { + return new BottomAppBarFragment(); + } + }; + } + } +} diff --git a/catalog/java/io/material/catalog/bottomappbar/BottomAppBarMainDemoFragment.java b/catalog/java/io/material/catalog/bottomappbar/BottomAppBarMainDemoFragment.java new file mode 100644 index 000000000..edd221878 --- /dev/null +++ b/catalog/java/io/material/catalog/bottomappbar/BottomAppBarMainDemoFragment.java @@ -0,0 +1,146 @@ +/* + * Copyright 2017 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 io.material.catalog.bottomappbar; + +import io.material.catalog.R; + +import android.os.Bundle; +import android.support.annotation.LayoutRes; +import android.support.annotation.Nullable; +import com.google.android.material.bottomappbar.BottomAppBar; +import com.google.android.material.bottomsheet.BottomSheetBehavior; +import com.google.android.material.navigation.NavigationView; +import com.google.android.material.snackbar.Snackbar; +import android.support.design.widget.CoordinatorLayout; +import android.support.v7.app.AppCompatActivity; +import android.support.v7.widget.Toolbar; +import android.view.LayoutInflater; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.MenuItem; +import android.view.View; +import android.view.ViewGroup; +import android.widget.Button; +import android.widget.ImageButton; +import android.widget.ToggleButton; +import io.material.catalog.feature.DemoFragment; +import io.material.catalog.feature.OnBackPressedHandler; +import io.material.catalog.themeswitcher.ThemeSwitcherHelper; + +/** A fragment that displays the main Bottom App Bar demos for the Catalog app. */ +public class BottomAppBarMainDemoFragment extends DemoFragment implements OnBackPressedHandler { + + protected BottomAppBar bar; + protected CoordinatorLayout coordinatorLayout; + + @Nullable private ThemeSwitcherHelper themeSwitcherHelper; + private BottomSheetBehavior bottomDrawerBehavior; + + @Override + public void onCreate(@Nullable Bundle bundle) { + super.onCreate(bundle); + setHasOptionsMenu(true); + + // The theme switcher helper is used in an adhoc way with the toolbar since the BottomAppBar is + // set as the action bar. + themeSwitcherHelper = new ThemeSwitcherHelper(getFragmentManager()); + } + + @Override + public void onCreateOptionsMenu(Menu menu, MenuInflater menuInflater) { + menuInflater.inflate(R.menu.demo_primary, menu); + } + + @Override + public boolean onOptionsItemSelected(MenuItem menuItem) { + Snackbar.make(getView(), menuItem.getTitle(), Snackbar.LENGTH_SHORT).show(); + return true; + } + + @LayoutRes + public int getBottomAppBarContent() { + return R.layout.cat_bottomappbar_fragment; + } + + @Override + public View onCreateDemoView( + LayoutInflater layoutInflater, @Nullable ViewGroup viewGroup, @Nullable Bundle bundle) { + View view = layoutInflater.inflate(getBottomAppBarContent(), viewGroup, false); + + Toolbar toolbar = view.findViewById(R.id.toolbar); + toolbar.setTitle(getDefaultDemoTitle()); + themeSwitcherHelper.onCreateOptionsMenu(toolbar.getMenu(), getActivity().getMenuInflater()); + toolbar.setOnMenuItemClickListener(themeSwitcherHelper::onOptionsItemSelected); + toolbar.setNavigationOnClickListener( + v -> { + getActivity().onBackPressed(); + }); + + coordinatorLayout = view.findViewById(R.id.coordinator_layout); + bar = view.findViewById(R.id.bar); + ((AppCompatActivity) getActivity()).setSupportActionBar(bar); + + setUpBottomDrawer(view); + + ImageButton fab = view.findViewById(R.id.fab); + fab.setOnClickListener( + v -> Snackbar.make(getView(), fab.getContentDescription(), Snackbar.LENGTH_SHORT).show()); + NavigationView navigationView = view.findViewById(R.id.navigation_view); + navigationView.setNavigationItemSelectedListener( + item -> { + Snackbar.make(getView(), item.getTitle(), Snackbar.LENGTH_SHORT).show(); + return false; + }); + + Button centerButton = view.findViewById(R.id.center); + Button endButton = view.findViewById(R.id.end); + ToggleButton attachToggle = view.findViewById(R.id.attach_toggle); + attachToggle.setChecked(bar.isFabAttached()); + centerButton.setOnClickListener( + v -> bar.setFabAlignmentMode(BottomAppBar.FAB_ALIGNMENT_MODE_CENTER)); + endButton.setOnClickListener(v -> bar.setFabAlignmentMode(BottomAppBar.FAB_ALIGNMENT_MODE_END)); + attachToggle.setOnCheckedChangeListener( + (buttonView, isChecked) -> bar.setFabAttached(isChecked)); + + return view; + } + + @Override + public boolean onBackPressed() { + if (bottomDrawerBehavior.getState() != BottomSheetBehavior.STATE_HIDDEN) { + bottomDrawerBehavior.setState(BottomSheetBehavior.STATE_HIDDEN); + return true; + } + return false; + } + + @Override + public boolean shouldShowDefaultDemoActionBar() { + return false; + } + + protected void setUpBottomDrawer(View view) { + View bottomDrawer = coordinatorLayout.findViewById(R.id.bottom_drawer); + bottomDrawerBehavior = BottomSheetBehavior.from(bottomDrawer); + bottomDrawerBehavior.setState(BottomSheetBehavior.STATE_HIDDEN); + + bar.setNavigationOnClickListener( + v -> bottomDrawerBehavior.setState(BottomSheetBehavior.STATE_HALF_EXPANDED)); + bar.setNavigationIcon(R.drawable.ic_menu_24); + bar.replaceMenu(R.menu.demo_primary); + } +} diff --git a/catalog/java/io/material/catalog/bottomappbar/res/drawable/ic_3d_rotation_24.xml b/catalog/java/io/material/catalog/bottomappbar/res/drawable/ic_3d_rotation_24.xml new file mode 100644 index 000000000..90822b37d --- /dev/null +++ b/catalog/java/io/material/catalog/bottomappbar/res/drawable/ic_3d_rotation_24.xml @@ -0,0 +1,26 @@ + + + + + diff --git a/catalog/java/io/material/catalog/bottomappbar/res/drawable/ic_accelerator_24.xml b/catalog/java/io/material/catalog/bottomappbar/res/drawable/ic_accelerator_24.xml new file mode 100644 index 000000000..6702fafe2 --- /dev/null +++ b/catalog/java/io/material/catalog/bottomappbar/res/drawable/ic_accelerator_24.xml @@ -0,0 +1,26 @@ + + + + + diff --git a/catalog/java/io/material/catalog/bottomappbar/res/drawable/ic_dashboard_24.xml b/catalog/java/io/material/catalog/bottomappbar/res/drawable/ic_dashboard_24.xml new file mode 100644 index 000000000..2c9f661b4 --- /dev/null +++ b/catalog/java/io/material/catalog/bottomappbar/res/drawable/ic_dashboard_24.xml @@ -0,0 +1,26 @@ + + + + + diff --git a/catalog/java/io/material/catalog/bottomappbar/res/drawable/ic_menu_24.xml b/catalog/java/io/material/catalog/bottomappbar/res/drawable/ic_menu_24.xml new file mode 100644 index 000000000..3ab5062f5 --- /dev/null +++ b/catalog/java/io/material/catalog/bottomappbar/res/drawable/ic_menu_24.xml @@ -0,0 +1,26 @@ + + + + + diff --git a/catalog/java/io/material/catalog/bottomappbar/res/drawable/ic_search_24.xml b/catalog/java/io/material/catalog/bottomappbar/res/drawable/ic_search_24.xml new file mode 100644 index 000000000..0ba7f6505 --- /dev/null +++ b/catalog/java/io/material/catalog/bottomappbar/res/drawable/ic_search_24.xml @@ -0,0 +1,26 @@ + + + + + diff --git a/catalog/java/io/material/catalog/bottomappbar/res/layout/cat_bottomappbar_content.xml b/catalog/java/io/material/catalog/bottomappbar/res/layout/cat_bottomappbar_content.xml new file mode 100644 index 000000000..57512656f --- /dev/null +++ b/catalog/java/io/material/catalog/bottomappbar/res/layout/cat_bottomappbar_content.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + +