实例介绍
【实例简介】
materialistic 是一个基于 Material Design 的 Hacker News Android 阅读器的源码下载。该阅读器使用官方 Hacker News API,并采用了 Dagger 进行依赖注入。
要求:
- JDK 11
- 最新的 Android SDK 工具
- 最新的 Android 平台工具
- AndroidX
依赖项:
- 官方 Hacker News API,用户服务(如登录/创建账户/投票/评论)依赖于对 Hacker News 网站的重定向请求
- Algolia Hacker News Search API
- Mercury Web Parser API
- Android Jetpack: appcompat-v7 / recyclerview-v7 / design / cardview-v7 / preference-v7 / customtabs
- Square Retrofit / OkHttp / AssertJ / Dagger / LeakCanary
- RxJava & RxAndroid
- PDF.js
构建命令:
./gradlew assembleDebug
包含 LeaKCanary 的构建命令:
./gradlew assembleDebug -Pleak
如果您想连接到 Mercury,请在此处获取您的 Mercury Web Parser API 密钥。
文章列表:
- 在 Android 应用中支持多个主题(第 1 部分)
- 在 Android 应用中支持多个主题(第 2 部分)
- 使用 preference-v7 构建自定义首选项
- 为 Android 开发一个广告拦截器
- 底部菜单的使用示例
【实例截图】
【核心代码】
文件清单
└── materialistic-b631d5111b7487d2328f463bd95e8507c74c3566
├── app
│ ├── build.gradle
│ ├── proguard-rules.pro
│ ├── proguard-rx.pro
│ ├── proguard-square.pro
│ ├── proguard-support.pro
│ └── src
│ ├── debug
│ │ └── assets
│ │ └── pdf
│ │ └── vendor
│ │ └── pdf.js
│ │ └── 1.9.658
│ │ ├── pdf.js
│ │ ├── pdf_viewer.css
│ │ ├── pdf_viewer.js
│ │ └── pdf.worker.js
│ ├── main
│ │ ├── AndroidManifest.xml
│ │ ├── assets
│ │ │ ├── DroidSans.ttf
│ │ │ ├── DroidSerif.ttf
│ │ │ ├── LibreBaskerville-Regular.ttf
│ │ │ ├── pdf
│ │ │ │ ├── index.html
│ │ │ │ ├── script.js
│ │ │ │ └── vendor
│ │ │ │ └── pdf.js
│ │ │ │ └── 1.9.658
│ │ │ │ └── images
│ │ │ │ ├── loading-icon.gif
│ │ │ │ ├── shadow.png
│ │ │ │ └── texture.png
│ │ │ ├── pgl.yoyo.org.txt
│ │ │ └── RobotoSlab-Regular.ttf
│ │ ├── java
│ │ │ └── io
│ │ │ └── github
│ │ │ └── hidroh
│ │ │ └── materialistic
│ │ │ ├── AboutActivity.kt
│ │ │ ├── AccountAuthenticatorActivity.java
│ │ │ ├── accounts
│ │ │ │ ├── AccountAuthenticator.java
│ │ │ │ ├── AuthenticatorService.java
│ │ │ │ ├── EmptyAccountAuthenticator.java
│ │ │ │ ├── UserServicesClient.java
│ │ │ │ └── UserServices.java
│ │ │ ├── ActionViewResolver.java
│ │ │ ├── ActivityModule.java
│ │ │ ├── AdBlocker.java
│ │ │ ├── AlertDialogBuilder.java
│ │ │ ├── AndroidUtils.java
│ │ │ ├── annotation
│ │ │ │ ├── PublicApi.java
│ │ │ │ └── Synthetic.java
│ │ │ ├── Application.java
│ │ │ ├── AppUtils.java
│ │ │ ├── appwidget
│ │ │ │ ├── WidgetConfigActivity.java
│ │ │ │ ├── WidgetHelper.java
│ │ │ │ ├── WidgetProvider.java
│ │ │ │ ├── WidgetRefreshJobService.java
│ │ │ │ └── WidgetService.java
│ │ │ ├── AskActivity.java
│ │ │ ├── BaseFragment.java
│ │ │ ├── BaseListActivity.java
│ │ │ ├── BaseListFragment.java
│ │ │ ├── BaseStoriesActivity.java
│ │ │ ├── BestActivity.java
│ │ │ ├── ComposeActivity.java
│ │ │ ├── CustomTabsDelegate.java
│ │ │ ├── data
│ │ │ │ ├── AlgoliaClient.java
│ │ │ │ ├── AlgoliaPopularClient.java
│ │ │ │ ├── android
│ │ │ │ │ └── Cache.kt
│ │ │ │ ├── Favorite.java
│ │ │ │ ├── FavoriteManager.kt
│ │ │ │ ├── FeedbackClient.java
│ │ │ │ ├── FileDownloader.java
│ │ │ │ ├── HackerNewsClient.java
│ │ │ │ ├── HackerNewsItem.java
│ │ │ │ ├── Item.java
│ │ │ │ ├── ItemManager.java
│ │ │ │ ├── ItemSyncAdapter.java
│ │ │ │ ├── ItemSyncJobService.java
│ │ │ │ ├── ItemSyncService.java
│ │ │ │ ├── ItemSyncWifiReceiver.java
│ │ │ │ ├── LocalCache.kt
│ │ │ │ ├── LocalItemManager.java
│ │ │ │ ├── MaterialisticDatabase.java
│ │ │ │ ├── ReadabilityClient.java
│ │ │ │ ├── ResponseListener.java
│ │ │ │ ├── RestServiceFactory.java
│ │ │ │ ├── SearchRecentSuggestionsProvider.java
│ │ │ │ ├── SessionManager.kt
│ │ │ │ ├── SyncContentProvider.java
│ │ │ │ ├── SyncDelegate.java
│ │ │ │ ├── SyncScheduler.java
│ │ │ │ ├── UserItem.java
│ │ │ │ ├── UserManager.java
│ │ │ │ ├── WebCacheService.java
│ │ │ │ └── WebItem.java
│ │ │ ├── DataModule.java
│ │ │ ├── DrawerActivity.java
│ │ │ ├── FabAwareScrollBehavior.java
│ │ │ ├── FavoriteActivity.java
│ │ │ ├── FavoriteFragment.java
│ │ │ ├── FeedbackActivity.java
│ │ │ ├── FontCache.java
│ │ │ ├── InjectableActivity.java
│ │ │ ├── Injectable.java
│ │ │ ├── ItemActivity.java
│ │ │ ├── ItemFragment.java
│ │ │ ├── JobsActivity.java
│ │ │ ├── KeyDelegate.java
│ │ │ ├── ktx
│ │ │ │ └── Extensions.kt
│ │ │ ├── LauncherActivity.java
│ │ │ ├── LazyLoadFragment.java
│ │ │ ├── ListActivity.java
│ │ │ ├── ListFragment.java
│ │ │ ├── LoginActivity.java
│ │ │ ├── MenuTintDelegate.java
│ │ │ ├── MultiPaneListener.java
│ │ │ ├── Navigable.java
│ │ │ ├── NetworkModule.java
│ │ │ ├── NewActivity.java
│ │ │ ├── OfflineWebActivity.java
│ │ │ ├── PopularActivity.java
│ │ │ ├── PopupSettingsFragment.java
│ │ │ ├── preference
│ │ │ │ ├── FontPreference.java
│ │ │ │ ├── FontSizePreference.java
│ │ │ │ ├── PreferenceHelp.java
│ │ │ │ ├── SimpleSpinnerPreference.java
│ │ │ │ ├── SpinnerPreference.java
│ │ │ │ └── ThemePreference.java
│ │ │ ├── PreferencesActivity.java
│ │ │ ├── Preferences.java
│ │ │ ├── ReleaseNotesActivity.kt
│ │ │ ├── ResourcesProvider.java
│ │ │ ├── Scrollable.java
│ │ │ ├── SearchActivity.java
│ │ │ ├── SettingsActivity.java
│ │ │ ├── ShowActivity.java
│ │ │ ├── StoryListViewModel.java
│ │ │ ├── SubmitActivity.java
│ │ │ ├── ThemedActivity.java
│ │ │ ├── ThreadPreviewActivity.java
│ │ │ ├── UiModule.java
│ │ │ ├── UserActivity.java
│ │ │ ├── WebFragment.java
│ │ │ └── widget
│ │ │ ├── AdBlockWebViewClient.java
│ │ │ ├── AppBarSwipeRefreshLayout.java
│ │ │ ├── AsteriskSpan.java
│ │ │ ├── CacheableWebView.java
│ │ │ ├── CommentItemDecoration.java
│ │ │ ├── FavoriteRecyclerViewAdapter.java
│ │ │ ├── FlatCardView.java
│ │ │ ├── IconButton.java
│ │ │ ├── ItemPagerAdapter.java
│ │ │ ├── ItemRecyclerViewAdapter.java
│ │ │ ├── ListRecyclerViewAdapter.java
│ │ │ ├── MultiPageItemRecyclerViewAdapter.java
│ │ │ ├── NavFloatingActionButton.java
│ │ │ ├── PeekabooTouchHelperCallback.java
│ │ │ ├── PopupMenu.java
│ │ │ ├── preference
│ │ │ │ ├── HelpLazyLoadView.java
│ │ │ │ ├── HelpListView.java
│ │ │ │ └── ThemeView.java
│ │ │ ├── RecyclerViewAdapter.java
│ │ │ ├── SinglePageItemRecyclerViewAdapter.java
│ │ │ ├── SnappyLinearLayoutManager.java
│ │ │ ├── StoryRecyclerViewAdapter.java
│ │ │ ├── StoryView.java
│ │ │ ├── SubmissionRecyclerViewAdapter.java
│ │ │ ├── SubmissionViewHolder.java
│ │ │ ├── TextView.java
│ │ │ ├── ThreadPreviewRecyclerViewAdapter.java
│ │ │ ├── TintableTextView.java
│ │ │ ├── ToggleItemViewHolder.java
│ │ │ ├── ViewPager.java
│ │ │ └── WebView.java
│ │ └── res
│ │ ├── anim
│ │ │ ├── slide_in_up.xml
│ │ │ └── slide_out_down.xml
│ │ ├── drawable
│ │ │ ├── bg_appwidget_dark.xml
│ │ │ ├── bg_appwidget_light.xml
│ │ │ ├── bg_appwidget.xml
│ │ │ ├── ic_add_white_24dp.xml
│ │ │ ├── ic_app.xml
│ │ │ ├── ic_arrow_back_white_24dp.xml
│ │ │ ├── ic_arrow_forward_white_24dp.xml
│ │ │ ├── ic_bookmark_border_white_24dp.xml
│ │ │ ├── ic_bookmark_white_24dp.xml
│ │ │ ├── ic_chat_bubble_outline_white_48dp.xml
│ │ │ ├── ic_chrome_reader_mode_black_24dp.xml
│ │ │ ├── ic_clear_white_24dp.xml
│ │ │ ├── ic_cloud_off_white_24dp.xml
│ │ │ ├── ic_cloud_off_white_48dp.xml
│ │ │ ├── ic_comment_white_24dp.xml
│ │ │ ├── ic_delete_white_24dp.xml
│ │ │ ├── ic_done_white_24dp.xml
│ │ │ ├── ic_dummy_transparent_24dp.xml
│ │ │ ├── ic_expand_less_white_24dp.xml
│ │ │ ├── ic_expand_more_white_24dp.xml
│ │ │ ├── ic_feedback_white_24dp.xml
│ │ │ ├── ic_format_quote_white_24dp.xml
│ │ │ ├── ic_format_size_white_24dp.xml
│ │ │ ├── ic_gamepad_white_24dp.xml
│ │ │ ├── ic_help_white_24dp.xml
│ │ │ ├── ic_history_white_24dp.xml
│ │ │ ├── ic_info_white_24dp.xml
│ │ │ ├── ic_list_white_24dp.xml
│ │ │ ├── ic_live_help_white_24dp.xml
│ │ │ ├── ic_local_library_white_24dp.xml
│ │ │ ├── ic_local_library_white_48dp.xml
│ │ │ ├── ic_lock_white_24dp.xml
│ │ │ ├── ic_more_vert_white_24dp.xml
│ │ │ ├── ic_new_releases_white_24dp.xml
│ │ │ ├── ic_open_in_browser_white_24dp.xml
│ │ │ ├── ic_palette_white_24dp.xml
│ │ │ ├── ic_person_white_24dp.xml
│ │ │ ├── ic_poll_white_18dp.xml
│ │ │ ├── ic_power_settings_new_white_24dp.xml
│ │ │ ├── ic_refresh_white_24dp.xml
│ │ │ ├── ic_reply_white_24dp.xml
│ │ │ ├── ic_save_white_48dp.xml
│ │ │ ├── ic_search_white_24dp.xml
│ │ │ ├── ic_send_white_24dp.xml
│ │ │ ├── ic_settings_white_24dp.xml
│ │ │ ├── ic_share_white_24dp.xml
│ │ │ ├── ic_sort_white_24dp.xml
│ │ │ ├── ic_thumb_up_white_24dp.xml
│ │ │ ├── ic_touch_app_white_24dp.xml
│ │ │ ├── ic_touch_app_white_48dp.xml
│ │ │ ├── ic_trending_up_white_24dp.xml
│ │ │ ├── ic_volume_down_black_24dp.xml
│ │ │ ├── ic_volume_up_black_24dp.xml
│ │ │ ├── ic_web_black_24dp.xml
│ │ │ ├── ic_whatshot_orange500_18dp.xml
│ │ │ ├── ic_whatshot_orange500_24dp.xml
│ │ │ ├── ic_work_white_18dp.xml
│ │ │ ├── ic_work_white_24dp.xml
│ │ │ ├── ic_zoom_out_map_white_24dp.xml
│ │ │ └── progress.xml
│ │ ├── drawable-hdpi
│ │ │ ├── appwidget_preview.png
│ │ │ ├── bg_drawer_dark.png
│ │ │ ├── bg_drawer_light.png
│ │ │ ├── ic_notification.png
│ │ │ ├── sc_add.png
│ │ │ ├── sc_bookmark.png
│ │ │ ├── sc_new_releases.png
│ │ │ └── sc_trending.png
│ │ ├── drawable-mdpi
│ │ │ ├── appwidget_preview.png
│ │ │ ├── bg_drawer_dark.png
│ │ │ ├── bg_drawer_light.png
│ │ │ ├── ic_notification.png
│ │ │ ├── sc_add.png
│ │ │ ├── sc_bookmark.png
│ │ │ ├── sc_new_releases.png
│ │ │ └── sc_trending.png
│ │ ├── drawable-xhdpi
│ │ │ ├── appwidget_preview.png
│ │ │ ├── bg_drawer_dark.png
│ │ │ ├── bg_drawer_light.png
│ │ │ ├── ic_notification.png
│ │ │ ├── sc_add.png
│ │ │ ├── sc_bookmark.png
│ │ │ ├── sc_new_releases.png
│ │ │ └── sc_trending.png
│ │ ├── drawable-xxhdpi
│ │ │ ├── appwidget_preview.png
│ │ │ ├── bg_drawer_dark.png
│ │ │ ├── bg_drawer_light.png
│ │ │ ├── ic_notification.png
│ │ │ ├── sc_add.png
│ │ │ ├── sc_bookmark.png
│ │ │ ├── sc_new_releases.png
│ │ │ └── sc_trending.png
│ │ ├── drawable-xxxhdpi
│ │ │ ├── appwidget_preview.png
│ │ │ ├── bg_drawer_dark.png
│ │ │ ├── bg_drawer_light.png
│ │ │ ├── ic_notification.png
│ │ │ ├── sc_add.png
│ │ │ ├── sc_bookmark.png
│ │ │ ├── sc_new_releases.png
│ │ │ └── sc_trending.png
│ │ ├── layout
│ │ │ ├── activity_about.xml
│ │ │ ├── activity_compose.xml
│ │ │ ├── activity_drawer.xml
│ │ │ ├── activity_feedback.xml
│ │ │ ├── activity_item.xml
│ │ │ ├── activity_list.xml
│ │ │ ├── activity_login.xml
│ │ │ ├── activity_offline_web.xml
│ │ │ ├── activity_preferences.xml
│ │ │ ├── activity_release.xml
│ │ │ ├── activity_settings.xml
│ │ │ ├── activity_submit.xml
│ │ │ ├── activity_thread_preview.xml
│ │ │ ├── activity_user.xml
│ │ │ ├── activity_widget_config.xml
│ │ │ ├── appwidget_dark.xml
│ │ │ ├── appwidget_light.xml
│ │ │ ├── appwidget.xml
│ │ │ ├── button_comment.xml
│ │ │ ├── button_download.xml
│ │ │ ├── button_more.xml
│ │ │ ├── button_navigation.xml
│ │ │ ├── button_reply.xml
│ │ │ ├── dialog_konami.xml
│ │ │ ├── drawer.xml
│ │ │ ├── empty_favorite.xml
│ │ │ ├── empty_item.xml
│ │ │ ├── empty_list.xml
│ │ │ ├── empty_search.xml
│ │ │ ├── fragment_favorite.xml
│ │ │ ├── fragment_item.xml
│ │ │ ├── fragment_list.xml
│ │ │ ├── fragment_popup_settings.xml
│ │ │ ├── fragment_web.xml
│ │ │ ├── help_lazy_load.xml
│ │ │ ├── help_list_view.xml
│ │ │ ├── help_navigation.xml
│ │ │ ├── help_volume.xml
│ │ │ ├── include_appwidget.xml
│ │ │ ├── include_help_lazy_load.xml
│ │ │ ├── include_help_list_view.xml
│ │ │ ├── item_comment.xml
│ │ │ ├── item_favorite.xml
│ │ │ ├── item_footer.xml
│ │ │ ├── item_header.xml
│ │ │ ├── item_story.xml
│ │ │ ├── item_submission.xml
│ │ │ ├── item_widget_light.xml
│ │ │ ├── item_widget.xml
│ │ │ ├── local_story_view.xml
│ │ │ ├── preference_category_hint.xml
│ │ │ ├── preference_help.xml
│ │ │ ├── preference_spinner.xml
│ │ │ ├── preference_theme.xml
│ │ │ ├── story_view.xml
│ │ │ ├── theme_view.xml
│ │ │ ├── toolbar_web.xml
│ │ │ ├── toolbar.xml
│ │ │ └── user_header.xml
│ │ ├── layout-w820dp-land
│ │ │ ├── activity_compose.xml
│ │ │ └── activity_list.xml
│ │ ├── menu
│ │ │ ├── menu_article.xml
│ │ │ ├── menu_compose.xml
│ │ │ ├── menu_contextual_comment.xml
│ │ │ ├── menu_contextual_favorite.xml
│ │ │ ├── menu_contextual_story.xml
│ │ │ ├── menu_favorite_action.xml
│ │ │ ├── menu_favorite.xml
│ │ │ ├── menu_item_compact.xml
│ │ │ ├── menu_item_view.xml
│ │ │ ├── menu_item.xml
│ │ │ ├── menu_list.xml
│ │ │ ├── menu_popular.xml
│ │ │ ├── menu_search.xml
│ │ │ ├── menu_settings.xml
│ │ │ ├── menu_share.xml
│ │ │ ├── menu_sort.xml
│ │ │ ├── menu_submit.xml
│ │ │ └── menu_web.xml
│ │ ├── mipmap-anydpi-v26
│ │ │ ├── ic_launcher_round.xml
│ │ │ └── ic_launcher.xml
│ │ ├── mipmap-hdpi
│ │ │ ├── ic_launcher_foreground.png
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ ├── mipmap-mdpi
│ │ │ ├── ic_launcher_foreground.png
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ ├── mipmap-xhdpi
│ │ │ ├── ic_launcher_foreground.png
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ ├── mipmap-xxhdpi
│ │ │ ├── ic_launcher_foreground.png
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ ├── mipmap-xxxhdpi
│ │ │ ├── ic_launcher_foreground.png
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ ├── values
│ │ │ ├── arrays.xml
│ │ │ ├── attrs.xml
│ │ │ ├── bools.xml
│ │ │ ├── colors.xml
│ │ │ ├── dimens.xml
│ │ │ ├── ic_launcher_background.xml
│ │ │ ├── ids.xml
│ │ │ ├── integers.xml
│ │ │ ├── license.xml
│ │ │ ├── non_translatable.xml
│ │ │ ├── preference_keys.xml
│ │ │ ├── strings.xml
│ │ │ ├── styles.xml
│ │ │ └── themes.xml
│ │ ├── values-es
│ │ │ └── strings.xml
│ │ ├── values-night
│ │ │ └── themes.xml
│ │ ├── values-night-v23
│ │ │ └── themes.xml
│ │ ├── values-sw376dp
│ │ │ └── styles.xml
│ │ ├── values-sw600dp
│ │ │ └── styles.xml
│ │ ├── values-v23
│ │ │ └── themes.xml
│ │ ├── values-w820dp
│ │ │ └── dimens.xml
│ │ ├── values-w820dp-land
│ │ │ ├── bools.xml
│ │ │ └── dimens.xml
│ │ ├── values-zh-rCN
│ │ │ └── strings.xml
│ │ └── xml
│ │ ├── appwidget_info.xml
│ │ ├── authenticator.xml
│ │ ├── backup.xml
│ │ ├── file_paths.xml
│ │ ├── network_security_config.xml
│ │ ├── preferences_category.xml
│ │ ├── preferences_comments.xml
│ │ ├── preferences_display.xml
│ │ ├── preferences_font.xml
│ │ ├── preferences_list.xml
│ │ ├── preferences_offline.xml
│ │ ├── preferences_readability.xml
│ │ ├── preferences_widget.xml
│ │ ├── searchable_favorite.xml
│ │ ├── searchable_stories.xml
│ │ ├── shortcuts.xml
│ │ └── syncadapter.xml
│ └── release
│ └── assets
│ └── pdf
│ └── vendor
│ └── pdf.js
│ └── 1.9.658
│ ├── pdf.js
│ ├── pdf_viewer.css
│ ├── pdf_viewer.js
│ └── pdf.worker.js
├── assets
│ ├── materialistic-drawable.sketch
│ ├── materialistic-feature-graphic.png
│ ├── materialistic-hi-res-icon.png
│ ├── playstore-screenshots.sketch
│ ├── screenshot-1.png
│ ├── screenshot-2.png
│ ├── screenshot-3.png
│ ├── screenshot-4.png
│ └── shortcuts.sketch
├── build.gradle
├── CONTRIBUTING.md
├── docs
│ ├── licenses.html
│ └── privacy.html
├── gradle
│ └── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradle.properties
├── gradlew
├── gradlew.bat
├── LICENSE.txt
├── lint.xml
├── PRIVACY-POLICY.txt
├── README.md
├── settings.gradle
└── THIRD-PARTY-NOTICES.txt
68 directories, 425 files
materialistic 是一个基于 Material Design 的 Hacker News Android 阅读器的源码下载。该阅读器使用官方 Hacker News API,并采用了 Dagger 进行依赖注入。
要求:
- JDK 11
- 最新的 Android SDK 工具
- 最新的 Android 平台工具
- AndroidX
依赖项:
- 官方 Hacker News API,用户服务(如登录/创建账户/投票/评论)依赖于对 Hacker News 网站的重定向请求
- Algolia Hacker News Search API
- Mercury Web Parser API
- Android Jetpack: appcompat-v7 / recyclerview-v7 / design / cardview-v7 / preference-v7 / customtabs
- Square Retrofit / OkHttp / AssertJ / Dagger / LeakCanary
- RxJava & RxAndroid
- PDF.js
构建命令:
./gradlew assembleDebug
包含 LeaKCanary 的构建命令:
./gradlew assembleDebug -Pleak
如果您想连接到 Mercury,请在此处获取您的 Mercury Web Parser API 密钥。
文章列表:
- 在 Android 应用中支持多个主题(第 1 部分)
- 在 Android 应用中支持多个主题(第 2 部分)
- 使用 preference-v7 构建自定义首选项
- 为 Android 开发一个广告拦截器
- 底部菜单的使用示例
【实例截图】
【核心代码】
文件清单
└── materialistic-b631d5111b7487d2328f463bd95e8507c74c3566
├── app
│ ├── build.gradle
│ ├── proguard-rules.pro
│ ├── proguard-rx.pro
│ ├── proguard-square.pro
│ ├── proguard-support.pro
│ └── src
│ ├── debug
│ │ └── assets
│ │ └── vendor
│ │ └── pdf.js
│ │ └── 1.9.658
│ │ ├── pdf.js
│ │ ├── pdf_viewer.css
│ │ ├── pdf_viewer.js
│ │ └── pdf.worker.js
│ ├── main
│ │ ├── AndroidManifest.xml
│ │ ├── assets
│ │ │ ├── DroidSans.ttf
│ │ │ ├── DroidSerif.ttf
│ │ │ ├── LibreBaskerville-Regular.ttf
│ │ │ │ ├── index.html
│ │ │ │ ├── script.js
│ │ │ │ └── vendor
│ │ │ │ └── pdf.js
│ │ │ │ └── 1.9.658
│ │ │ │ └── images
│ │ │ │ ├── loading-icon.gif
│ │ │ │ ├── shadow.png
│ │ │ │ └── texture.png
│ │ │ ├── pgl.yoyo.org.txt
│ │ │ └── RobotoSlab-Regular.ttf
│ │ ├── java
│ │ │ └── io
│ │ │ └── github
│ │ │ └── hidroh
│ │ │ └── materialistic
│ │ │ ├── AboutActivity.kt
│ │ │ ├── AccountAuthenticatorActivity.java
│ │ │ ├── accounts
│ │ │ │ ├── AccountAuthenticator.java
│ │ │ │ ├── AuthenticatorService.java
│ │ │ │ ├── EmptyAccountAuthenticator.java
│ │ │ │ ├── UserServicesClient.java
│ │ │ │ └── UserServices.java
│ │ │ ├── ActionViewResolver.java
│ │ │ ├── ActivityModule.java
│ │ │ ├── AdBlocker.java
│ │ │ ├── AlertDialogBuilder.java
│ │ │ ├── AndroidUtils.java
│ │ │ ├── annotation
│ │ │ │ ├── PublicApi.java
│ │ │ │ └── Synthetic.java
│ │ │ ├── Application.java
│ │ │ ├── AppUtils.java
│ │ │ ├── appwidget
│ │ │ │ ├── WidgetConfigActivity.java
│ │ │ │ ├── WidgetHelper.java
│ │ │ │ ├── WidgetProvider.java
│ │ │ │ ├── WidgetRefreshJobService.java
│ │ │ │ └── WidgetService.java
│ │ │ ├── AskActivity.java
│ │ │ ├── BaseFragment.java
│ │ │ ├── BaseListActivity.java
│ │ │ ├── BaseListFragment.java
│ │ │ ├── BaseStoriesActivity.java
│ │ │ ├── BestActivity.java
│ │ │ ├── ComposeActivity.java
│ │ │ ├── CustomTabsDelegate.java
│ │ │ ├── data
│ │ │ │ ├── AlgoliaClient.java
│ │ │ │ ├── AlgoliaPopularClient.java
│ │ │ │ ├── android
│ │ │ │ │ └── Cache.kt
│ │ │ │ ├── Favorite.java
│ │ │ │ ├── FavoriteManager.kt
│ │ │ │ ├── FeedbackClient.java
│ │ │ │ ├── FileDownloader.java
│ │ │ │ ├── HackerNewsClient.java
│ │ │ │ ├── HackerNewsItem.java
│ │ │ │ ├── Item.java
│ │ │ │ ├── ItemManager.java
│ │ │ │ ├── ItemSyncAdapter.java
│ │ │ │ ├── ItemSyncJobService.java
│ │ │ │ ├── ItemSyncService.java
│ │ │ │ ├── ItemSyncWifiReceiver.java
│ │ │ │ ├── LocalCache.kt
│ │ │ │ ├── LocalItemManager.java
│ │ │ │ ├── MaterialisticDatabase.java
│ │ │ │ ├── ReadabilityClient.java
│ │ │ │ ├── ResponseListener.java
│ │ │ │ ├── RestServiceFactory.java
│ │ │ │ ├── SearchRecentSuggestionsProvider.java
│ │ │ │ ├── SessionManager.kt
│ │ │ │ ├── SyncContentProvider.java
│ │ │ │ ├── SyncDelegate.java
│ │ │ │ ├── SyncScheduler.java
│ │ │ │ ├── UserItem.java
│ │ │ │ ├── UserManager.java
│ │ │ │ ├── WebCacheService.java
│ │ │ │ └── WebItem.java
│ │ │ ├── DataModule.java
│ │ │ ├── DrawerActivity.java
│ │ │ ├── FabAwareScrollBehavior.java
│ │ │ ├── FavoriteActivity.java
│ │ │ ├── FavoriteFragment.java
│ │ │ ├── FeedbackActivity.java
│ │ │ ├── FontCache.java
│ │ │ ├── InjectableActivity.java
│ │ │ ├── Injectable.java
│ │ │ ├── ItemActivity.java
│ │ │ ├── ItemFragment.java
│ │ │ ├── JobsActivity.java
│ │ │ ├── KeyDelegate.java
│ │ │ ├── ktx
│ │ │ │ └── Extensions.kt
│ │ │ ├── LauncherActivity.java
│ │ │ ├── LazyLoadFragment.java
│ │ │ ├── ListActivity.java
│ │ │ ├── ListFragment.java
│ │ │ ├── LoginActivity.java
│ │ │ ├── MenuTintDelegate.java
│ │ │ ├── MultiPaneListener.java
│ │ │ ├── Navigable.java
│ │ │ ├── NetworkModule.java
│ │ │ ├── NewActivity.java
│ │ │ ├── OfflineWebActivity.java
│ │ │ ├── PopularActivity.java
│ │ │ ├── PopupSettingsFragment.java
│ │ │ ├── preference
│ │ │ │ ├── FontPreference.java
│ │ │ │ ├── FontSizePreference.java
│ │ │ │ ├── PreferenceHelp.java
│ │ │ │ ├── SimpleSpinnerPreference.java
│ │ │ │ ├── SpinnerPreference.java
│ │ │ │ └── ThemePreference.java
│ │ │ ├── PreferencesActivity.java
│ │ │ ├── Preferences.java
│ │ │ ├── ReleaseNotesActivity.kt
│ │ │ ├── ResourcesProvider.java
│ │ │ ├── Scrollable.java
│ │ │ ├── SearchActivity.java
│ │ │ ├── SettingsActivity.java
│ │ │ ├── ShowActivity.java
│ │ │ ├── StoryListViewModel.java
│ │ │ ├── SubmitActivity.java
│ │ │ ├── ThemedActivity.java
│ │ │ ├── ThreadPreviewActivity.java
│ │ │ ├── UiModule.java
│ │ │ ├── UserActivity.java
│ │ │ ├── WebFragment.java
│ │ │ └── widget
│ │ │ ├── AdBlockWebViewClient.java
│ │ │ ├── AppBarSwipeRefreshLayout.java
│ │ │ ├── AsteriskSpan.java
│ │ │ ├── CacheableWebView.java
│ │ │ ├── CommentItemDecoration.java
│ │ │ ├── FavoriteRecyclerViewAdapter.java
│ │ │ ├── FlatCardView.java
│ │ │ ├── IconButton.java
│ │ │ ├── ItemPagerAdapter.java
│ │ │ ├── ItemRecyclerViewAdapter.java
│ │ │ ├── ListRecyclerViewAdapter.java
│ │ │ ├── MultiPageItemRecyclerViewAdapter.java
│ │ │ ├── NavFloatingActionButton.java
│ │ │ ├── PeekabooTouchHelperCallback.java
│ │ │ ├── PopupMenu.java
│ │ │ ├── preference
│ │ │ │ ├── HelpLazyLoadView.java
│ │ │ │ ├── HelpListView.java
│ │ │ │ └── ThemeView.java
│ │ │ ├── RecyclerViewAdapter.java
│ │ │ ├── SinglePageItemRecyclerViewAdapter.java
│ │ │ ├── SnappyLinearLayoutManager.java
│ │ │ ├── StoryRecyclerViewAdapter.java
│ │ │ ├── StoryView.java
│ │ │ ├── SubmissionRecyclerViewAdapter.java
│ │ │ ├── SubmissionViewHolder.java
│ │ │ ├── TextView.java
│ │ │ ├── ThreadPreviewRecyclerViewAdapter.java
│ │ │ ├── TintableTextView.java
│ │ │ ├── ToggleItemViewHolder.java
│ │ │ ├── ViewPager.java
│ │ │ └── WebView.java
│ │ └── res
│ │ ├── anim
│ │ │ ├── slide_in_up.xml
│ │ │ └── slide_out_down.xml
│ │ ├── drawable
│ │ │ ├── bg_appwidget_dark.xml
│ │ │ ├── bg_appwidget_light.xml
│ │ │ ├── bg_appwidget.xml
│ │ │ ├── ic_add_white_24dp.xml
│ │ │ ├── ic_app.xml
│ │ │ ├── ic_arrow_back_white_24dp.xml
│ │ │ ├── ic_arrow_forward_white_24dp.xml
│ │ │ ├── ic_bookmark_border_white_24dp.xml
│ │ │ ├── ic_bookmark_white_24dp.xml
│ │ │ ├── ic_chat_bubble_outline_white_48dp.xml
│ │ │ ├── ic_chrome_reader_mode_black_24dp.xml
│ │ │ ├── ic_clear_white_24dp.xml
│ │ │ ├── ic_cloud_off_white_24dp.xml
│ │ │ ├── ic_cloud_off_white_48dp.xml
│ │ │ ├── ic_comment_white_24dp.xml
│ │ │ ├── ic_delete_white_24dp.xml
│ │ │ ├── ic_done_white_24dp.xml
│ │ │ ├── ic_dummy_transparent_24dp.xml
│ │ │ ├── ic_expand_less_white_24dp.xml
│ │ │ ├── ic_expand_more_white_24dp.xml
│ │ │ ├── ic_feedback_white_24dp.xml
│ │ │ ├── ic_format_quote_white_24dp.xml
│ │ │ ├── ic_format_size_white_24dp.xml
│ │ │ ├── ic_gamepad_white_24dp.xml
│ │ │ ├── ic_help_white_24dp.xml
│ │ │ ├── ic_history_white_24dp.xml
│ │ │ ├── ic_info_white_24dp.xml
│ │ │ ├── ic_list_white_24dp.xml
│ │ │ ├── ic_live_help_white_24dp.xml
│ │ │ ├── ic_local_library_white_24dp.xml
│ │ │ ├── ic_local_library_white_48dp.xml
│ │ │ ├── ic_lock_white_24dp.xml
│ │ │ ├── ic_more_vert_white_24dp.xml
│ │ │ ├── ic_new_releases_white_24dp.xml
│ │ │ ├── ic_open_in_browser_white_24dp.xml
│ │ │ ├── ic_palette_white_24dp.xml
│ │ │ ├── ic_person_white_24dp.xml
│ │ │ ├── ic_poll_white_18dp.xml
│ │ │ ├── ic_power_settings_new_white_24dp.xml
│ │ │ ├── ic_refresh_white_24dp.xml
│ │ │ ├── ic_reply_white_24dp.xml
│ │ │ ├── ic_save_white_48dp.xml
│ │ │ ├── ic_search_white_24dp.xml
│ │ │ ├── ic_send_white_24dp.xml
│ │ │ ├── ic_settings_white_24dp.xml
│ │ │ ├── ic_share_white_24dp.xml
│ │ │ ├── ic_sort_white_24dp.xml
│ │ │ ├── ic_thumb_up_white_24dp.xml
│ │ │ ├── ic_touch_app_white_24dp.xml
│ │ │ ├── ic_touch_app_white_48dp.xml
│ │ │ ├── ic_trending_up_white_24dp.xml
│ │ │ ├── ic_volume_down_black_24dp.xml
│ │ │ ├── ic_volume_up_black_24dp.xml
│ │ │ ├── ic_web_black_24dp.xml
│ │ │ ├── ic_whatshot_orange500_18dp.xml
│ │ │ ├── ic_whatshot_orange500_24dp.xml
│ │ │ ├── ic_work_white_18dp.xml
│ │ │ ├── ic_work_white_24dp.xml
│ │ │ ├── ic_zoom_out_map_white_24dp.xml
│ │ │ └── progress.xml
│ │ ├── drawable-hdpi
│ │ │ ├── appwidget_preview.png
│ │ │ ├── bg_drawer_dark.png
│ │ │ ├── bg_drawer_light.png
│ │ │ ├── ic_notification.png
│ │ │ ├── sc_add.png
│ │ │ ├── sc_bookmark.png
│ │ │ ├── sc_new_releases.png
│ │ │ └── sc_trending.png
│ │ ├── drawable-mdpi
│ │ │ ├── appwidget_preview.png
│ │ │ ├── bg_drawer_dark.png
│ │ │ ├── bg_drawer_light.png
│ │ │ ├── ic_notification.png
│ │ │ ├── sc_add.png
│ │ │ ├── sc_bookmark.png
│ │ │ ├── sc_new_releases.png
│ │ │ └── sc_trending.png
│ │ ├── drawable-xhdpi
│ │ │ ├── appwidget_preview.png
│ │ │ ├── bg_drawer_dark.png
│ │ │ ├── bg_drawer_light.png
│ │ │ ├── ic_notification.png
│ │ │ ├── sc_add.png
│ │ │ ├── sc_bookmark.png
│ │ │ ├── sc_new_releases.png
│ │ │ └── sc_trending.png
│ │ ├── drawable-xxhdpi
│ │ │ ├── appwidget_preview.png
│ │ │ ├── bg_drawer_dark.png
│ │ │ ├── bg_drawer_light.png
│ │ │ ├── ic_notification.png
│ │ │ ├── sc_add.png
│ │ │ ├── sc_bookmark.png
│ │ │ ├── sc_new_releases.png
│ │ │ └── sc_trending.png
│ │ ├── drawable-xxxhdpi
│ │ │ ├── appwidget_preview.png
│ │ │ ├── bg_drawer_dark.png
│ │ │ ├── bg_drawer_light.png
│ │ │ ├── ic_notification.png
│ │ │ ├── sc_add.png
│ │ │ ├── sc_bookmark.png
│ │ │ ├── sc_new_releases.png
│ │ │ └── sc_trending.png
│ │ ├── layout
│ │ │ ├── activity_about.xml
│ │ │ ├── activity_compose.xml
│ │ │ ├── activity_drawer.xml
│ │ │ ├── activity_feedback.xml
│ │ │ ├── activity_item.xml
│ │ │ ├── activity_list.xml
│ │ │ ├── activity_login.xml
│ │ │ ├── activity_offline_web.xml
│ │ │ ├── activity_preferences.xml
│ │ │ ├── activity_release.xml
│ │ │ ├── activity_settings.xml
│ │ │ ├── activity_submit.xml
│ │ │ ├── activity_thread_preview.xml
│ │ │ ├── activity_user.xml
│ │ │ ├── activity_widget_config.xml
│ │ │ ├── appwidget_dark.xml
│ │ │ ├── appwidget_light.xml
│ │ │ ├── appwidget.xml
│ │ │ ├── button_comment.xml
│ │ │ ├── button_download.xml
│ │ │ ├── button_more.xml
│ │ │ ├── button_navigation.xml
│ │ │ ├── button_reply.xml
│ │ │ ├── dialog_konami.xml
│ │ │ ├── drawer.xml
│ │ │ ├── empty_favorite.xml
│ │ │ ├── empty_item.xml
│ │ │ ├── empty_list.xml
│ │ │ ├── empty_search.xml
│ │ │ ├── fragment_favorite.xml
│ │ │ ├── fragment_item.xml
│ │ │ ├── fragment_list.xml
│ │ │ ├── fragment_popup_settings.xml
│ │ │ ├── fragment_web.xml
│ │ │ ├── help_lazy_load.xml
│ │ │ ├── help_list_view.xml
│ │ │ ├── help_navigation.xml
│ │ │ ├── help_volume.xml
│ │ │ ├── include_appwidget.xml
│ │ │ ├── include_help_lazy_load.xml
│ │ │ ├── include_help_list_view.xml
│ │ │ ├── item_comment.xml
│ │ │ ├── item_favorite.xml
│ │ │ ├── item_footer.xml
│ │ │ ├── item_header.xml
│ │ │ ├── item_story.xml
│ │ │ ├── item_submission.xml
│ │ │ ├── item_widget_light.xml
│ │ │ ├── item_widget.xml
│ │ │ ├── local_story_view.xml
│ │ │ ├── preference_category_hint.xml
│ │ │ ├── preference_help.xml
│ │ │ ├── preference_spinner.xml
│ │ │ ├── preference_theme.xml
│ │ │ ├── story_view.xml
│ │ │ ├── theme_view.xml
│ │ │ ├── toolbar_web.xml
│ │ │ ├── toolbar.xml
│ │ │ └── user_header.xml
│ │ ├── layout-w820dp-land
│ │ │ ├── activity_compose.xml
│ │ │ └── activity_list.xml
│ │ ├── menu
│ │ │ ├── menu_article.xml
│ │ │ ├── menu_compose.xml
│ │ │ ├── menu_contextual_comment.xml
│ │ │ ├── menu_contextual_favorite.xml
│ │ │ ├── menu_contextual_story.xml
│ │ │ ├── menu_favorite_action.xml
│ │ │ ├── menu_favorite.xml
│ │ │ ├── menu_item_compact.xml
│ │ │ ├── menu_item_view.xml
│ │ │ ├── menu_item.xml
│ │ │ ├── menu_list.xml
│ │ │ ├── menu_popular.xml
│ │ │ ├── menu_search.xml
│ │ │ ├── menu_settings.xml
│ │ │ ├── menu_share.xml
│ │ │ ├── menu_sort.xml
│ │ │ ├── menu_submit.xml
│ │ │ └── menu_web.xml
│ │ ├── mipmap-anydpi-v26
│ │ │ ├── ic_launcher_round.xml
│ │ │ └── ic_launcher.xml
│ │ ├── mipmap-hdpi
│ │ │ ├── ic_launcher_foreground.png
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ ├── mipmap-mdpi
│ │ │ ├── ic_launcher_foreground.png
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ ├── mipmap-xhdpi
│ │ │ ├── ic_launcher_foreground.png
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ ├── mipmap-xxhdpi
│ │ │ ├── ic_launcher_foreground.png
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ ├── mipmap-xxxhdpi
│ │ │ ├── ic_launcher_foreground.png
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ ├── values
│ │ │ ├── arrays.xml
│ │ │ ├── attrs.xml
│ │ │ ├── bools.xml
│ │ │ ├── colors.xml
│ │ │ ├── dimens.xml
│ │ │ ├── ic_launcher_background.xml
│ │ │ ├── ids.xml
│ │ │ ├── integers.xml
│ │ │ ├── license.xml
│ │ │ ├── non_translatable.xml
│ │ │ ├── preference_keys.xml
│ │ │ ├── strings.xml
│ │ │ ├── styles.xml
│ │ │ └── themes.xml
│ │ ├── values-es
│ │ │ └── strings.xml
│ │ ├── values-night
│ │ │ └── themes.xml
│ │ ├── values-night-v23
│ │ │ └── themes.xml
│ │ ├── values-sw376dp
│ │ │ └── styles.xml
│ │ ├── values-sw600dp
│ │ │ └── styles.xml
│ │ ├── values-v23
│ │ │ └── themes.xml
│ │ ├── values-w820dp
│ │ │ └── dimens.xml
│ │ ├── values-w820dp-land
│ │ │ ├── bools.xml
│ │ │ └── dimens.xml
│ │ ├── values-zh-rCN
│ │ │ └── strings.xml
│ │ └── xml
│ │ ├── appwidget_info.xml
│ │ ├── authenticator.xml
│ │ ├── backup.xml
│ │ ├── file_paths.xml
│ │ ├── network_security_config.xml
│ │ ├── preferences_category.xml
│ │ ├── preferences_comments.xml
│ │ ├── preferences_display.xml
│ │ ├── preferences_font.xml
│ │ ├── preferences_list.xml
│ │ ├── preferences_offline.xml
│ │ ├── preferences_readability.xml
│ │ ├── preferences_widget.xml
│ │ ├── searchable_favorite.xml
│ │ ├── searchable_stories.xml
│ │ ├── shortcuts.xml
│ │ └── syncadapter.xml
│ └── release
│ └── assets
│ └── vendor
│ └── pdf.js
│ └── 1.9.658
│ ├── pdf.js
│ ├── pdf_viewer.css
│ ├── pdf_viewer.js
│ └── pdf.worker.js
├── assets
│ ├── materialistic-drawable.sketch
│ ├── materialistic-feature-graphic.png
│ ├── materialistic-hi-res-icon.png
│ ├── playstore-screenshots.sketch
│ ├── screenshot-1.png
│ ├── screenshot-2.png
│ ├── screenshot-3.png
│ ├── screenshot-4.png
│ └── shortcuts.sketch
├── build.gradle
├── CONTRIBUTING.md
├── docs
│ ├── licenses.html
│ └── privacy.html
├── gradle
│ └── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradle.properties
├── gradlew
├── gradlew.bat
├── LICENSE.txt
├── lint.xml
├── PRIVACY-POLICY.txt
├── README.md
├── settings.gradle
└── THIRD-PARTY-NOTICES.txt
68 directories, 425 files
好例子网口号:伸出你的我的手 — 分享!
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论