├── .github └── ISSUE_TEMPLATE.md ├── .gitignore ├── LICENSE ├── NOTICE ├── NOTICE.html ├── README.md ├── app ├── .gitignore ├── .keystore_onlymash.jks ├── build.gradle ├── google-services.json ├── libs │ └── libGoogleAnalyticsServices.jar ├── proguard-rules.pro ├── src │ ├── androidTest │ │ └── java │ │ │ └── com │ │ │ └── hippo │ │ │ └── ehviewer │ │ │ ├── ApplicationTest.java │ │ │ ├── CardBgTest.java │ │ │ ├── CookieDBTest.java │ │ │ └── DumpTest.java │ ├── debug │ │ ├── AndroidManifest.xml │ │ └── res │ │ │ ├── mipmap-hdpi │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-mdpi │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-xhdpi │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-xxhdpi │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-xxxhdpi │ │ │ └── ic_launcher.png │ │ │ ├── values-es │ │ │ └── strings.xml │ │ │ ├── values-ja │ │ │ └── strings.xml │ │ │ ├── values-ko │ │ │ └── strings.xml │ │ │ ├── values-zh-rCN │ │ │ └── strings.xml │ │ │ ├── values-zh-rHK │ │ │ └── strings.xml │ │ │ ├── values-zh-rTW │ │ │ └── strings.xml │ │ │ ├── values │ │ │ └── strings.xml │ │ │ └── xml-v25 │ │ │ └── shortcuts.xml │ ├── main │ │ ├── AndroidManifest.xml │ │ ├── java │ │ │ └── com │ │ │ │ └── hippo │ │ │ │ ├── annotation │ │ │ │ └── Implemented.java │ │ │ │ ├── app │ │ │ │ ├── AppCompatPreferenceActivity.java │ │ │ │ ├── CheckBoxDialogBuilder.java │ │ │ │ ├── EditTextDialogBuilder.java │ │ │ │ ├── ListCheckBoxDialogBuilder.java │ │ │ │ └── ProgressDialog.java │ │ │ │ ├── content │ │ │ │ ├── ContextLocalWrapper.java │ │ │ │ ├── FileProvider.java │ │ │ │ └── RecordingApplication.java │ │ │ │ ├── database │ │ │ │ ├── MSQLiteBuilder.java │ │ │ │ └── MSQLiteOpenHelper.java │ │ │ │ ├── drawable │ │ │ │ ├── AddDeleteDrawable.java │ │ │ │ ├── BatteryDrawable.java │ │ │ │ ├── BitmapPool.java │ │ │ │ ├── DrawerArrowDrawable.java │ │ │ │ ├── PreciselyClipDrawable.java │ │ │ │ ├── RoundDrawable.java │ │ │ │ ├── RoundSideRectDrawable.java │ │ │ │ ├── TextDrawable.java │ │ │ │ ├── TriangleDrawable.java │ │ │ │ ├── UnikeryDrawable.java │ │ │ │ └── WrapDrawable.java │ │ │ │ ├── ehviewer │ │ │ │ ├── Analytics.java │ │ │ │ ├── AppConfig.java │ │ │ │ ├── EhApplication.java │ │ │ │ ├── EhDB.java │ │ │ │ ├── GetLocale.java │ │ │ │ ├── GetResponseData.java │ │ │ │ ├── GetText.java │ │ │ │ ├── Hosts.java │ │ │ │ ├── ImageBitmapHelper.java │ │ │ │ ├── Settings.java │ │ │ │ ├── UrlOpener.java │ │ │ │ ├── client │ │ │ │ │ ├── EhCacheKeyFactory.java │ │ │ │ │ ├── EhClient.java │ │ │ │ │ ├── EhConfig.java │ │ │ │ │ ├── EhCookieStore.java │ │ │ │ │ ├── EhDns.java │ │ │ │ │ ├── EhEngine.java │ │ │ │ │ ├── EhFilter.java │ │ │ │ │ ├── EhRequest.java │ │ │ │ │ ├── EhRequestBuilder.java │ │ │ │ │ ├── EhUrl.java │ │ │ │ │ ├── EhUrlOpener.java │ │ │ │ │ ├── EhUtils.java │ │ │ │ │ ├── data │ │ │ │ │ │ ├── FavListUrlBuilder.java │ │ │ │ │ │ ├── GalleryApiInfo.java │ │ │ │ │ │ ├── GalleryComment.java │ │ │ │ │ │ ├── GalleryDetail.java │ │ │ │ │ │ ├── GalleryInfo.java │ │ │ │ │ │ ├── GalleryPreview.java │ │ │ │ │ │ ├── GalleryTagGroup.java │ │ │ │ │ │ ├── LargePreviewSet.java │ │ │ │ │ │ ├── ListUrlBuilder.java │ │ │ │ │ │ ├── NormalPreviewSet.java │ │ │ │ │ │ └── PreviewSet.java │ │ │ │ │ ├── exception │ │ │ │ │ │ ├── CancelledException.java │ │ │ │ │ │ ├── EhException.java │ │ │ │ │ │ ├── Image509Exception.java │ │ │ │ │ │ ├── NoHAtHClientException.java │ │ │ │ │ │ ├── OffensiveException.java │ │ │ │ │ │ ├── ParseException.java │ │ │ │ │ │ └── PiningException.java │ │ │ │ │ └── parser │ │ │ │ │ │ ├── ArchiveParser.java │ │ │ │ │ │ ├── FavoritesParser.java │ │ │ │ │ │ ├── ForumsParser.java │ │ │ │ │ │ ├── GalleryApiParser.java │ │ │ │ │ │ ├── GalleryDetailParser.java │ │ │ │ │ │ ├── GalleryDetailUrlParser.java │ │ │ │ │ │ ├── GalleryListParser.java │ │ │ │ │ │ ├── GalleryListUrlParser.java │ │ │ │ │ │ ├── GalleryPageParser.java │ │ │ │ │ │ ├── GalleryPageUrlParser.java │ │ │ │ │ │ ├── GalleryTokenApiParser.java │ │ │ │ │ │ ├── ParserUtils.java │ │ │ │ │ │ ├── ProfileParser.java │ │ │ │ │ │ ├── RateGalleryParser.java │ │ │ │ │ │ ├── SignInParser.java │ │ │ │ │ │ ├── TorrentParser.java │ │ │ │ │ │ ├── VoteCommentParser.java │ │ │ │ │ │ └── WhatsHotParser.java │ │ │ │ ├── download │ │ │ │ │ ├── DownloadManager.java │ │ │ │ │ └── DownloadService.java │ │ │ │ ├── gallery │ │ │ │ │ ├── DirGalleryProvider.java │ │ │ │ │ ├── EhGalleryProvider.java │ │ │ │ │ ├── GalleryProvider2.java │ │ │ │ │ └── ZipGalleryProvider.java │ │ │ │ ├── preference │ │ │ │ │ ├── CleanRedundancyPreference.java │ │ │ │ │ ├── ClearDownloadPathCachePreference.java │ │ │ │ │ ├── DefaultCategoryPreference.java │ │ │ │ │ ├── ExcludedTagNamespacesPreference.java │ │ │ │ │ ├── HatHProxyPreference.java │ │ │ │ │ ├── RestoreDownloadPreference.java │ │ │ │ │ ├── SignOutPreference.java │ │ │ │ │ ├── TaskPreference.java │ │ │ │ │ └── VersionPreference.java │ │ │ │ ├── shortcuts │ │ │ │ │ └── ShortcutsActivity.java │ │ │ │ ├── spider │ │ │ │ │ ├── SpiderDen.java │ │ │ │ │ ├── SpiderInfo.java │ │ │ │ │ └── SpiderQueen.java │ │ │ │ ├── ui │ │ │ │ │ ├── CommonOperations.java │ │ │ │ │ ├── DirPickerActivity.java │ │ │ │ │ ├── EhActivity.java │ │ │ │ │ ├── EhPreferenceActivity.java │ │ │ │ │ ├── ExcludedLanguagesActivity.java │ │ │ │ │ ├── FilterActivity.java │ │ │ │ │ ├── GalleryActivity.java │ │ │ │ │ ├── HostsActivity.java │ │ │ │ │ ├── LicenseActivity.java │ │ │ │ │ ├── MainActivity.java │ │ │ │ │ ├── SetSecurityActivity.java │ │ │ │ │ ├── SettingsActivity.java │ │ │ │ │ ├── ToolbarActivity.java │ │ │ │ │ ├── UConfigActivity.java │ │ │ │ │ ├── annotation │ │ │ │ │ │ ├── DrawerLifeCircle.java │ │ │ │ │ │ ├── ViewLifeCircle.java │ │ │ │ │ │ └── WholeLifeCircle.java │ │ │ │ │ ├── fragment │ │ │ │ │ │ ├── AboutFragment.java │ │ │ │ │ │ ├── AdvancedFragment.java │ │ │ │ │ │ ├── DownloadFragment.java │ │ │ │ │ │ ├── EhFragment.java │ │ │ │ │ │ ├── PrivacyFragment.java │ │ │ │ │ │ └── ReadFragment.java │ │ │ │ │ └── scene │ │ │ │ │ │ ├── AnalyticsScene.java │ │ │ │ │ │ ├── BaseScene.java │ │ │ │ │ │ ├── CookieSignInScene.java │ │ │ │ │ │ ├── DownloadsScene.java │ │ │ │ │ │ ├── EhCallback.java │ │ │ │ │ │ ├── EnterGalleryDetailTransaction.java │ │ │ │ │ │ ├── FavoritesScene.java │ │ │ │ │ │ ├── GalleryAdapter.java │ │ │ │ │ │ ├── GalleryCommentsScene.java │ │ │ │ │ │ ├── GalleryDetailScene.java │ │ │ │ │ │ ├── GalleryHolder.java │ │ │ │ │ │ ├── GalleryInfoScene.java │ │ │ │ │ │ ├── GalleryListScene.java │ │ │ │ │ │ ├── GalleryPreviewsScene.java │ │ │ │ │ │ ├── HistoryScene.java │ │ │ │ │ │ ├── ProgressScene.java │ │ │ │ │ │ ├── SecurityScene.java │ │ │ │ │ │ ├── SelectSiteScene.java │ │ │ │ │ │ ├── SignInScene.java │ │ │ │ │ │ ├── SolidScene.java │ │ │ │ │ │ ├── ThumbSpanHelper.java │ │ │ │ │ │ ├── ToolbarScene.java │ │ │ │ │ │ ├── TransitionNameFactory.java │ │ │ │ │ │ ├── WarningScene.java │ │ │ │ │ │ └── WebViewSignInScene.java │ │ │ │ └── widget │ │ │ │ │ ├── AdvanceSearchTable.java │ │ │ │ │ ├── CategoryTable.java │ │ │ │ │ ├── DividerView.java │ │ │ │ │ ├── EhDrawerLayout.java │ │ │ │ │ ├── EhDrawerView.java │ │ │ │ │ ├── EhNavigationView.java │ │ │ │ │ ├── EhStageLayout.java │ │ │ │ │ ├── GalleryGuideView.java │ │ │ │ │ ├── GalleryRatingBar.java │ │ │ │ │ ├── ImageSearchLayout.java │ │ │ │ │ ├── RecaptchaView.java │ │ │ │ │ ├── ReversibleSeekBar.java │ │ │ │ │ ├── SearchBar.java │ │ │ │ │ ├── SearchDatabase.java │ │ │ │ │ ├── SearchEditText.java │ │ │ │ │ ├── SearchLayout.java │ │ │ │ │ ├── SeekBarPanel.java │ │ │ │ │ ├── SimpleRatingView.java │ │ │ │ │ └── TileThumb.java │ │ │ │ ├── hardware │ │ │ │ └── ShakeDetector.java │ │ │ │ ├── io │ │ │ │ ├── FileInputStreamPipe.java │ │ │ │ ├── FileOutputStreamPipe.java │ │ │ │ ├── UniFileInputStreamPipe.java │ │ │ │ └── UniFileOutputStreamPipe.java │ │ │ │ ├── network │ │ │ │ ├── CookieDatabase.java │ │ │ │ ├── CookieRepository.java │ │ │ │ ├── CookieSet.java │ │ │ │ ├── InetValidator.java │ │ │ │ ├── Network.java │ │ │ │ ├── StatusCodeException.java │ │ │ │ └── UrlBuilder.java │ │ │ │ ├── okhttp │ │ │ │ └── ChromeRequestBuilder.java │ │ │ │ ├── preference │ │ │ │ ├── ActivityPreference.java │ │ │ │ ├── DialogPreference.java │ │ │ │ ├── ListPreference.java │ │ │ │ ├── MessagePreference.java │ │ │ │ ├── PreferenceUtils.java │ │ │ │ ├── SeekBarPreference.java │ │ │ │ ├── SwitchPreference.java │ │ │ │ └── UrlPreference.java │ │ │ │ ├── reveal │ │ │ │ ├── Reveal.java │ │ │ │ ├── RevealLinearLayout.java │ │ │ │ ├── RevealView.java │ │ │ │ └── ViewAnimationUtils.java │ │ │ │ ├── scene │ │ │ │ ├── Announcer.java │ │ │ │ ├── SceneApplication.java │ │ │ │ ├── SceneFragment.java │ │ │ │ ├── StageActivity.java │ │ │ │ ├── StageLayout.java │ │ │ │ └── TransitionHelper.java │ │ │ │ ├── text │ │ │ │ ├── Html.java │ │ │ │ ├── LinkMovementMethod2.java │ │ │ │ └── URLImageGetter.java │ │ │ │ ├── util │ │ │ │ ├── AppHelper.java │ │ │ │ ├── BitmapUtils.java │ │ │ │ ├── DrawableManager.java │ │ │ │ ├── ExceptionUtils.java │ │ │ │ ├── HashCodeUtils.java │ │ │ │ ├── JsoupUtils.java │ │ │ │ ├── LogCat.java │ │ │ │ ├── PackageUtils.java │ │ │ │ ├── PermissionRequester.java │ │ │ │ ├── ReadableTime.java │ │ │ │ ├── SqlUtils.java │ │ │ │ ├── SystemUiHelper.java │ │ │ │ ├── SystemUiHelperImplKK.java │ │ │ │ ├── TextUrl.java │ │ │ │ └── UserAgentUtil.kt │ │ │ │ ├── view │ │ │ │ └── ViewTransition.java │ │ │ │ └── widget │ │ │ │ ├── AutoWrapLayout.java │ │ │ │ ├── BatteryView.java │ │ │ │ ├── CheckTextView.java │ │ │ │ ├── ColorView.java │ │ │ │ ├── ContentLayout.java │ │ │ │ ├── CuteSpinner.java │ │ │ │ ├── DateUtils.java │ │ │ │ ├── DirExplorer.java │ │ │ │ ├── DrawerView.java │ │ │ │ ├── FabLayout.java │ │ │ │ ├── FixedAspectImageView.java │ │ │ │ ├── IndicatingListView.java │ │ │ │ ├── IndicatingScrollView.java │ │ │ │ ├── LinkifyTextView.java │ │ │ │ ├── LoadImageView.java │ │ │ │ ├── MaxSizeContainer.java │ │ │ │ ├── ObservedTextView.java │ │ │ │ ├── OffsetLayout.java │ │ │ │ ├── ProgressView.java │ │ │ │ ├── RadioGridGroup.java │ │ │ │ ├── SafeCoordinatorLayout.java │ │ │ │ ├── SearchBarMover.java │ │ │ │ ├── SensitiveCheckBox.java │ │ │ │ ├── ShadowLinearLayout.java │ │ │ │ ├── SimpleGridAutoSpanLayout.java │ │ │ │ ├── SimpleGridLayout.java │ │ │ │ ├── Slider.java │ │ │ │ ├── TextClock.java │ │ │ │ ├── lockpattern │ │ │ │ ├── LockPatternUtils.java │ │ │ │ └── LockPatternView.java │ │ │ │ └── recyclerview │ │ │ │ ├── AutoGridLayoutManager.java │ │ │ │ └── AutoStaggeredGridLayoutManager.java │ │ └── res │ │ │ ├── anim │ │ │ ├── accelerate_quart.xml │ │ │ ├── decelerate_quart.xml │ │ │ ├── decelerate_quint.xml │ │ │ ├── decelerate_terz.xml │ │ │ ├── scene_close_enter.xml │ │ │ ├── scene_close_exit.xml │ │ │ ├── scene_open_enter.xml │ │ │ └── scene_open_exit.xml │ │ │ ├── color │ │ │ ├── preference_header_title_light.xml │ │ │ ├── primary_text_dark.xml │ │ │ ├── primary_text_light.xml │ │ │ ├── secondary_text_dark.xml │ │ │ ├── secondary_text_light.xml │ │ │ ├── selectable_item_icon.xml │ │ │ └── selectable_item_text.xml │ │ │ ├── drawable-hdpi │ │ │ ├── drawer_shadow_left.9.png │ │ │ ├── drawer_shadow_right.9.png │ │ │ ├── ic_fp_40px.png │ │ │ ├── ic_pause_x24.png │ │ │ ├── ic_stat_alert.png │ │ │ ├── image_failed.png │ │ │ └── sadpanda_low_poly.webp │ │ │ ├── drawable-mdpi │ │ │ ├── drawer_shadow_left.9.png │ │ │ ├── drawer_shadow_right.9.png │ │ │ ├── ic_fingerprint_error.xml │ │ │ ├── ic_fingerprint_success.xml │ │ │ ├── ic_fp_40px.png │ │ │ ├── ic_pause_x24.png │ │ │ ├── ic_stat_alert.png │ │ │ ├── image_failed.png │ │ │ └── sadpanda_low_poly.webp │ │ │ ├── drawable-v25 │ │ │ ├── ic_shortcut_start.xml │ │ │ └── ic_shortcut_stop.xml │ │ │ ├── drawable-v26 │ │ │ ├── ic_shortcut_start.xml │ │ │ └── ic_shortcut_stop.xml │ │ │ ├── drawable-xhdpi │ │ │ ├── drawer_shadow_left.9.png │ │ │ ├── drawer_shadow_right.9.png │ │ │ ├── ic_fp_40px.png │ │ │ ├── ic_pause_x24.png │ │ │ ├── ic_stat_alert.png │ │ │ ├── image_failed.png │ │ │ └── sadpanda_low_poly.webp │ │ │ ├── drawable-xxhdpi │ │ │ ├── drawer_shadow_left.9.png │ │ │ ├── drawer_shadow_right.9.png │ │ │ ├── ic_fp_40px.png │ │ │ ├── ic_pause_x24.png │ │ │ ├── ic_stat_alert.png │ │ │ ├── image_failed.png │ │ │ ├── sadpanda_low_poly.webp │ │ │ ├── shadow_2dp.9.png │ │ │ └── shadow_8dp.9.png │ │ │ ├── drawable │ │ │ ├── big_download.xml │ │ │ ├── big_filter.xml │ │ │ ├── big_history.xml │ │ │ ├── big_label.xml │ │ │ ├── big_search.xml │ │ │ ├── big_weird_face.xml │ │ │ ├── default_avatar.xml │ │ │ ├── divider_gallery_detail.xml │ │ │ ├── ic_launcher_background.xml │ │ │ ├── ic_launcher_foreground.xml │ │ │ ├── ic_more_vert_black_24dp.xml │ │ │ ├── ic_pause_108dp.xml │ │ │ ├── ic_play_arrow_108dp.xml │ │ │ ├── preference_header_background.xml │ │ │ ├── selectable_item_background.xml │ │ │ ├── selectable_item_foreground.xml │ │ │ ├── shadow_bottom.xml │ │ │ ├── shadow_top.xml │ │ │ ├── spacer_keyline.xml │ │ │ ├── tile_background.xml │ │ │ ├── v_adb_primary_x24.xml │ │ │ ├── v_alert_red_x48.xml │ │ │ ├── v_archive_primary_x48.xml │ │ │ ├── v_arrow_left_dark_x24.xml │ │ │ ├── v_book_open_primary_x24.xml │ │ │ ├── v_bug_black_x48.xml │ │ │ ├── v_chart_accent_x48.xml │ │ │ ├── v_check_all_dark_x24.xml │ │ │ ├── v_check_dark_x24.xml │ │ │ ├── v_clear_all_dark_x24.xml │ │ │ ├── v_close_dark_x24.xml │ │ │ ├── v_cookie_brown_x48.xml │ │ │ ├── v_delete_dark_x24.xml │ │ │ ├── v_delete_red_x24.xml │ │ │ ├── v_delete_x24.xml │ │ │ ├── v_dots_vertical_secondary_dark_x24.xml │ │ │ ├── v_download_black_x24.xml │ │ │ ├── v_download_box_dark_x24.xml │ │ │ ├── v_download_primary_x24.xml │ │ │ ├── v_file_find_primary_x48.xml │ │ │ ├── v_fire_black_x24.xml │ │ │ ├── v_folder_move_dark_x24.xml │ │ │ ├── v_go_to_dark_x24.xml │ │ │ ├── v_heart_black_x24.xml │ │ │ ├── v_heart_box_dark_x24.xml │ │ │ ├── v_heart_outline_primary_x48.xml │ │ │ ├── v_heart_primary_x48.xml │ │ │ ├── v_help_circle_x24.xml │ │ │ ├── v_history_black_x24.xml │ │ │ ├── v_homepage_black_x24.xml │ │ │ ├── v_info_dark_x24.xml │ │ │ ├── v_info_outline_dark_x24.xml │ │ │ ├── v_info_primary_x24.xml │ │ │ ├── v_magnify_dark_x24.xml │ │ │ ├── v_magnify_x24.xml │ │ │ ├── v_pause_dark_x24.xml │ │ │ ├── v_pause_x24.xml │ │ │ ├── v_play_dark_x24.xml │ │ │ ├── v_play_x24.xml │ │ │ ├── v_plus_dark_x24.xml │ │ │ ├── v_refresh_dark_x24.xml │ │ │ ├── v_reply_dark_x24.xml │ │ │ ├── v_sad_panda_primary_x24.xml │ │ │ ├── v_sec_primary_x24.xml │ │ │ ├── v_send_dark_x24.xml │ │ │ ├── v_settings_black_x24.xml │ │ │ ├── v_settings_dark_x24.xml │ │ │ ├── v_share_primary_x48.xml │ │ │ ├── v_similar_primary_x48.xml │ │ │ ├── v_slider_bubble.xml │ │ │ ├── v_star_half_x16.xml │ │ │ ├── v_star_outline_x16.xml │ │ │ ├── v_star_x16.xml │ │ │ ├── v_thumb_up_primary_x48.xml │ │ │ └── v_utorrent_primary_x48.xml │ │ │ ├── layout-land │ │ │ └── activity_set_security.xml │ │ │ ├── layout │ │ │ ├── activity_dir_picker.xml │ │ │ ├── activity_filter.xml │ │ │ ├── activity_gallery.xml │ │ │ ├── activity_hosts.xml │ │ │ ├── activity_main.xml │ │ │ ├── activity_set_security.xml │ │ │ ├── activity_toolbar.xml │ │ │ ├── activity_u_config.xml │ │ │ ├── alert_dialog_progress_material.xml │ │ │ ├── button_guide.xml │ │ │ ├── dialog_add_filter.xml │ │ │ ├── dialog_archive_list.xml │ │ │ ├── dialog_checkbox_builder.xml │ │ │ ├── dialog_edittext_builder.xml │ │ │ ├── dialog_gallery_menu.xml │ │ │ ├── dialog_go_to.xml │ │ │ ├── dialog_hosts.xml │ │ │ ├── dialog_js_prompt.xml │ │ │ ├── dialog_list_checkbox_builder.xml │ │ │ ├── dialog_rate.xml │ │ │ ├── dialog_recycler_view.xml │ │ │ ├── dialog_torrent_list.xml │ │ │ ├── drawer_list.xml │ │ │ ├── drawer_list_rv.xml │ │ │ ├── gallery_detail_actions.xml │ │ │ ├── gallery_detail_comments.xml │ │ │ ├── gallery_detail_content.xml │ │ │ ├── gallery_detail_header.xml │ │ │ ├── gallery_detail_info.xml │ │ │ ├── gallery_detail_previews.xml │ │ │ ├── gallery_detail_progress.xml │ │ │ ├── gallery_detail_tags.xml │ │ │ ├── gallery_tag_group.xml │ │ │ ├── item_cute_spinner_item.xml │ │ │ ├── item_dir_explorer.xml │ │ │ ├── item_download.xml │ │ │ ├── item_drawer_favorites.xml │ │ │ ├── item_drawer_list.xml │ │ │ ├── item_excluded_languages.xml │ │ │ ├── item_filter.xml │ │ │ ├── item_filter_header.xml │ │ │ ├── item_gallery_comment.xml │ │ │ ├── item_gallery_grid.xml │ │ │ ├── item_gallery_info_data.xml │ │ │ ├── item_gallery_info_header.xml │ │ │ ├── item_gallery_list.xml │ │ │ ├── item_gallery_preview.xml │ │ │ ├── item_gallery_tag.xml │ │ │ ├── item_hosts.xml │ │ │ ├── item_label_list.xml │ │ │ ├── item_preference_header.xml │ │ │ ├── item_select_dialog.xml │ │ │ ├── item_simple_list.xml │ │ │ ├── item_simple_list_2.xml │ │ │ ├── nav_header_main.xml │ │ │ ├── preference_dialog_default_categories.xml │ │ │ ├── preference_dialog_excluded_tag_namespaces.xml │ │ │ ├── preference_dialog_hath_proxy.xml │ │ │ ├── preference_dialog_task.xml │ │ │ ├── preference_widget_fixed_switch.xml │ │ │ ├── preference_widget_seekbar.xml │ │ │ ├── progress_dialog_material.xml │ │ │ ├── scene_analytics.xml │ │ │ ├── scene_cookie_sign_in.xml │ │ │ ├── scene_crash.xml │ │ │ ├── scene_download.xml │ │ │ ├── scene_excluded_languages.xml │ │ │ ├── scene_favorites.xml │ │ │ ├── scene_gallery_comments.xml │ │ │ ├── scene_gallery_detail.xml │ │ │ ├── scene_gallery_info.xml │ │ │ ├── scene_gallery_list.xml │ │ │ ├── scene_gallery_previews.xml │ │ │ ├── scene_history.xml │ │ │ ├── scene_label_list.xml │ │ │ ├── scene_login.xml │ │ │ ├── scene_progress.xml │ │ │ ├── scene_security.xml │ │ │ ├── scene_select_site.xml │ │ │ ├── scene_toolbar.xml │ │ │ ├── scene_warning.xml │ │ │ ├── search_action.xml │ │ │ ├── search_advance.xml │ │ │ ├── search_category.xml │ │ │ ├── search_image.xml │ │ │ ├── search_normal.xml │ │ │ ├── widget_advance_search_table.xml │ │ │ ├── widget_category_table.xml │ │ │ ├── widget_content_layout.xml │ │ │ ├── widget_gallery_guide_1.xml │ │ │ ├── widget_gallery_guide_2.xml │ │ │ ├── widget_image_search.xml │ │ │ └── widget_search_bar.xml │ │ │ ├── menu │ │ │ ├── activity_filter.xml │ │ │ ├── activity_u_config.xml │ │ │ ├── download_label_option.xml │ │ │ ├── drawer_download.xml │ │ │ ├── drawer_favorites.xml │ │ │ ├── drawer_gallery_list.xml │ │ │ ├── nav_drawer_main.xml │ │ │ ├── quicksearch_option.xml │ │ │ ├── scene_download.xml │ │ │ ├── scene_download_label.xml │ │ │ ├── scene_gallery_detail.xml │ │ │ ├── scene_gallery_previews.xml │ │ │ └── scene_history.xml │ │ │ ├── mipmap-anydpi-v26 │ │ │ ├── ic_launcher.xml │ │ │ └── ic_launcher_round.xml │ │ │ ├── mipmap-hdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-mdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xxhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xxxhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── transition │ │ │ └── trans_move.xml │ │ │ ├── values-es │ │ │ └── strings.xml │ │ │ ├── values-ja │ │ │ └── strings.xml │ │ │ ├── values-ko │ │ │ └── strings.xml │ │ │ ├── values-land │ │ │ └── dimens.xml │ │ │ ├── values-large │ │ │ └── dimens.xml │ │ │ ├── values-night │ │ │ ├── colors.xml │ │ │ └── styles.xml │ │ │ ├── values-sw600dp │ │ │ └── dimens.xml │ │ │ ├── values-sw720dp-land │ │ │ └── dimens.xml │ │ │ ├── values-sw720dp-w1280dp │ │ │ └── dimens.xml │ │ │ ├── values-sw720dp │ │ │ └── dimens.xml │ │ │ ├── values-v19 │ │ │ └── themes.xml │ │ │ ├── values-v21 │ │ │ └── themes.xml │ │ │ ├── values-zh-rCN │ │ │ └── strings.xml │ │ │ ├── values-zh-rHK │ │ │ └── strings.xml │ │ │ ├── values-zh-rTW │ │ │ └── strings.xml │ │ │ ├── values │ │ │ ├── arrays.xml │ │ │ ├── attrs.xml │ │ │ ├── bools.xml │ │ │ ├── colors.xml │ │ │ ├── dimens.xml │ │ │ ├── drawables.xml │ │ │ ├── ids.xml │ │ │ ├── pathdata.xml │ │ │ ├── strings.xml │ │ │ ├── styles.xml │ │ │ └── themes.xml │ │ │ ├── xml-v25 │ │ │ └── shortcuts.xml │ │ │ └── xml │ │ │ ├── about_settings.xml │ │ │ ├── advanced_settings.xml │ │ │ ├── backup_scheme.xml │ │ │ ├── download_settings.xml │ │ │ ├── eh_settings.xml │ │ │ ├── filepaths.xml │ │ │ ├── privacy_settings.xml │ │ │ ├── read_settings.xml │ │ │ └── settings_headers.xml │ └── test │ │ └── java │ │ └── com │ │ └── hippo │ │ ├── database │ │ └── MSQLiteBuilderTest.java │ │ ├── ehviewer │ │ └── HostsTest.java │ │ └── network │ │ └── CookieRepositoryTest.java ├── update.json └── update_beta.json ├── art ├── launcher_icon-web.png ├── screenshot-01.png └── screenshot.jpg ├── build.gradle ├── daogenerator ├── .gitignore ├── build.gradle └── src │ └── main │ └── java │ └── com │ └── hippo │ └── ehviewer │ └── daogenerator │ ├── EhDaoGenerator.java │ ├── Main.java │ └── Utilities.java ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat └── settings.gradle /.github/ISSUE_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | 感谢您提交 Issue,请在提交前仔细阅读以下信息。 2 | 3 | 请在阅读完毕后,删除这些文字,并写下对该 Issue 的描述。 4 | 5 | 若您能熟练使用现代标准汉语,请务必使用该语言描述 Issue。 6 | 7 | Issue 的内容仅可为 8 | * Bug 反馈 9 | * 功能申请 10 | 11 | 若您希望得到使用指导(譬如如何删除快速搜索),请至 [G+ 社区](https://plus.google.com/u/1/communities/103823982034655188459) 发贴。若有其他问题,可在应用内找到开发者的邮箱地址,使用电子邮件与开发者交流。 12 | 13 | 若内容为 Bug 反馈,请先查看 [release 页面](https://github.com/seven332/EhViewer/releases),以帮助确认该 bug 是否存在于最新版中;同时应详细描述 bug 内容与重现方法,必要时可附加截图,但请确定截图符合风序良俗。 14 | 15 | 功能申请包括添加新功能与改进现有功能。 16 | 17 | 一个 Issue 只包含一个 Bug 反馈或者功能申请。若有多个需求,请提交多个 Issue。 18 | 19 | 尽量不提交重复的 Issue,可先进行搜索。对于重复的 Issue,开发者可能会直接关闭并添加 Duplicate 标签。 20 | 21 | 22 | Thank you for taking the time to submit an issue. Before you proceed, please consider the following. 23 | 24 | An issue can only be about: 25 | * Bug Report 26 | * Feature Request 27 | 28 | If you need application instructions, please post your question in [G+ community](https://plus.google.com/u/1/communities/103823982034655188459). If you have other questions, please get the developer's email address in the application, and send him/her an email. 29 | 30 | One issue one bug report or feature request. 31 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .gradle 2 | /local.properties 3 | .DS_Store 4 | /build 5 | /src 6 | *.iml 7 | .idea 8 | /captures 9 | release 10 | -------------------------------------------------------------------------------- /NOTICE: -------------------------------------------------------------------------------- 1 | EhViewer 2 | Copyright 2014-2016 Hippo Seven 3 | 4 | An Unofficial E-Hentai Application for Android. 5 | 6 | 香风智乃是最可爱的女孩子。 7 | chino kafuu is the cutest girl. 8 | -------------------------------------------------------------------------------- /app/.gitignore: -------------------------------------------------------------------------------- 1 | /src/main/assets/NOTICE.html 2 | /build 3 | /src/main/java-gen 4 | manifest-merger-release-report.txt 5 | /src/main/libs 6 | /src/main/obj 7 | 8 | # Intellij 9 | *.iml 10 | -------------------------------------------------------------------------------- /app/.keystore_onlymash.jks: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/onlymash/EhViewer/65d588d710f0ee9ff0cc9fa0e9dd810ea4d77f17/app/.keystore_onlymash.jks -------------------------------------------------------------------------------- /app/libs/libGoogleAnalyticsServices.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/onlymash/EhViewer/65d588d710f0ee9ff0cc9fa0e9dd810ea4d77f17/app/libs/libGoogleAnalyticsServices.jar -------------------------------------------------------------------------------- /app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # By default, the flags in this file are appended to flags specified 3 | # in E:\Android\android-sdk/tools/proguard/proguard-android.txt 4 | # You can edit the include path and order by changing the proguardFiles 5 | # directive in build.gradle. 6 | # 7 | # For more details, see 8 | # http://developer.android.com/guide/developing/tools/proguard.html 9 | 10 | # Add any project specific keep options here: 11 | 12 | # If your project uses WebView with JS, uncomment the following 13 | # and specify the fully qualified class name to the JavaScript interface 14 | # class: 15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 16 | # public *; 17 | #} 18 | -------------------------------------------------------------------------------- /app/src/androidTest/java/com/hippo/ehviewer/ApplicationTest.java: -------------------------------------------------------------------------------- 1 | package com.hippo.ehviewer; 2 | 3 | import android.app.Application; 4 | import android.test.ApplicationTestCase; 5 | 6 | /** 7 | * Testing Fundamentals 8 | */ 9 | public class ApplicationTest extends ApplicationTestCase { 10 | public ApplicationTest() { 11 | super(Application.class); 12 | } 13 | } -------------------------------------------------------------------------------- /app/src/androidTest/java/com/hippo/ehviewer/CookieDBTest.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 Hippo Seven 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.hippo.ehviewer; 18 | 19 | import junit.framework.TestCase; 20 | 21 | public class CookieDBTest extends TestCase { 22 | } 23 | -------------------------------------------------------------------------------- /app/src/debug/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 21 | 22 | 23 | 24 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /app/src/debug/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/onlymash/EhViewer/65d588d710f0ee9ff0cc9fa0e9dd810ea4d77f17/app/src/debug/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/debug/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/onlymash/EhViewer/65d588d710f0ee9ff0cc9fa0e9dd810ea4d77f17/app/src/debug/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/debug/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/onlymash/EhViewer/65d588d710f0ee9ff0cc9fa0e9dd810ea4d77f17/app/src/debug/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/debug/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/onlymash/EhViewer/65d588d710f0ee9ff0cc9fa0e9dd810ea4d77f17/app/src/debug/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/debug/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/onlymash/EhViewer/65d588d710f0ee9ff0cc9fa0e9dd810ea4d77f17/app/src/debug/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/debug/res/values-es/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 19 | 20 | EhViewer Debug 21 | 22 | 23 | -------------------------------------------------------------------------------- /app/src/debug/res/values-ja/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 19 | 20 | EhViewer Debug 21 | 22 | 23 | -------------------------------------------------------------------------------- /app/src/debug/res/values-ko/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 19 | 20 | EhViewer Debug 21 | 22 | 23 | -------------------------------------------------------------------------------- /app/src/debug/res/values-zh-rCN/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 19 | 20 | EhViewer Debug 21 | 22 | 23 | -------------------------------------------------------------------------------- /app/src/debug/res/values-zh-rHK/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 19 | 20 | EhViewer Debug 21 | 22 | 23 | -------------------------------------------------------------------------------- /app/src/debug/res/values-zh-rTW/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 19 | 20 | EhViewer Debug 21 | 22 | 23 | -------------------------------------------------------------------------------- /app/src/debug/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 19 | 20 | EhViewer Debug 21 | 22 | 23 | -------------------------------------------------------------------------------- /app/src/main/java/com/hippo/annotation/Implemented.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 Hippo Seven 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.hippo.annotation; 18 | 19 | import java.lang.annotation.ElementType; 20 | import java.lang.annotation.Retention; 21 | import java.lang.annotation.RetentionPolicy; 22 | import java.lang.annotation.Target; 23 | 24 | @Retention(RetentionPolicy.SOURCE) 25 | @Target({ElementType.METHOD}) 26 | public @interface Implemented { 27 | Class value(); 28 | } 29 | -------------------------------------------------------------------------------- /app/src/main/java/com/hippo/ehviewer/Analytics.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 Hippo Seven 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.hippo.ehviewer; 18 | 19 | import android.content.Context; 20 | 21 | import com.google.firebase.analytics.FirebaseAnalytics; 22 | 23 | public final class Analytics { 24 | 25 | private Analytics() {} 26 | 27 | public static void start(Context context) { 28 | FirebaseAnalytics.getInstance(context).setUserId(Settings.getUserID()); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /app/src/main/java/com/hippo/ehviewer/GetLocale.java: -------------------------------------------------------------------------------- 1 | package com.hippo.ehviewer; 2 | 3 | import android.content.res.Resources; 4 | 5 | import java.util.Locale; 6 | 7 | public class GetLocale { 8 | public static Locale getLocale() { 9 | Locale locale = null; 10 | String language = Settings.getAppLanguage(); 11 | if (language != null && !language.equals("system")) { 12 | String[] split = language.split("-"); 13 | switch (split.length) { 14 | case 1: 15 | locale = new Locale(split[0]); 16 | break; 17 | case 2: 18 | locale = new Locale(split[0], split[1]); 19 | break; 20 | case 3: 21 | locale = new Locale(split[0], split[1], split[2]); 22 | break; 23 | } 24 | } 25 | if (locale == null) { 26 | locale = Resources.getSystem().getConfiguration().locale; 27 | } 28 | 29 | return locale; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /app/src/main/java/com/hippo/ehviewer/GetResponseData.java: -------------------------------------------------------------------------------- 1 | package com.hippo.ehviewer; 2 | 3 | import okhttp3.Response; 4 | import okhttp3.ResponseBody; 5 | 6 | public class GetResponseData { 7 | public static String getResponseData(Response response) { 8 | String data = null; 9 | ResponseBody body = response.body(); 10 | try { 11 | if (body != null) { 12 | data = body.string(); 13 | } 14 | } catch (Exception e) { 15 | e.printStackTrace(); 16 | } 17 | return data; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /app/src/main/java/com/hippo/ehviewer/GetText.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 Hippo Seven 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.hippo.ehviewer; 18 | 19 | import android.content.Context; 20 | import android.content.res.Resources; 21 | import android.support.annotation.NonNull; 22 | import android.support.annotation.StringRes; 23 | 24 | public class GetText { 25 | 26 | private static Resources sResources; 27 | 28 | public static void initialize(Context context) { 29 | sResources = context.getApplicationContext().getResources(); 30 | } 31 | 32 | @NonNull 33 | public static String getString(@StringRes int id) { 34 | return sResources.getString(id); 35 | } 36 | 37 | @NonNull 38 | public static String getString(@StringRes int id, Object... formatArgs) { 39 | return sResources.getString(id, formatArgs); 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /app/src/main/java/com/hippo/ehviewer/client/EhRequestBuilder.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 Hippo Seven 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.hippo.ehviewer.client; 18 | 19 | import com.hippo.ehviewer.Settings; 20 | import com.hippo.okhttp.ChromeRequestBuilder; 21 | 22 | import java.net.MalformedURLException; 23 | 24 | public class EhRequestBuilder extends ChromeRequestBuilder { 25 | 26 | public EhRequestBuilder(String url) throws MalformedURLException { 27 | this(url, Settings.getEhConfig()); 28 | } 29 | 30 | public EhRequestBuilder(String url, EhConfig ehConfig) throws MalformedURLException { 31 | super(url); 32 | tag(ehConfig); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /app/src/main/java/com/hippo/ehviewer/client/data/PreviewSet.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 Hippo Seven 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.hippo.ehviewer.client.data; 18 | 19 | import android.os.Parcelable; 20 | 21 | import com.hippo.widget.LoadImageView; 22 | 23 | public abstract class PreviewSet implements Parcelable { 24 | 25 | public abstract int size(); 26 | 27 | public abstract int getPosition(int index); 28 | 29 | public abstract String getPageUrlAt(int index); 30 | 31 | public abstract GalleryPreview getGalleryPreview(long gid, int index); 32 | 33 | public abstract void load(LoadImageView view, long gid, int index); 34 | } 35 | -------------------------------------------------------------------------------- /app/src/main/java/com/hippo/ehviewer/client/exception/CancelledException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 Hippo Seven 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.hippo.ehviewer.client.exception; 18 | 19 | public class CancelledException extends Exception { 20 | 21 | public CancelledException() { 22 | super("CANCELED"); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /app/src/main/java/com/hippo/ehviewer/client/exception/EhException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 Hippo Seven 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.hippo.ehviewer.client.exception; 18 | 19 | public class EhException extends Exception { 20 | 21 | public EhException(String detailMessage) { 22 | super(detailMessage); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /app/src/main/java/com/hippo/ehviewer/client/exception/Image509Exception.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 Hippo Seven 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.hippo.ehviewer.client.exception; 18 | 19 | public class Image509Exception extends EhException { 20 | 21 | public Image509Exception() { 22 | super("509"); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /app/src/main/java/com/hippo/ehviewer/client/exception/NoHAtHClientException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 Hippo Seven 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.hippo.ehviewer.client.exception; 18 | 19 | public class NoHAtHClientException extends EhException { 20 | 21 | public NoHAtHClientException(String detailMessage) { 22 | super(detailMessage); 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /app/src/main/java/com/hippo/ehviewer/client/exception/OffensiveException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2015 Hippo Seven 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.hippo.ehviewer.client.exception; 18 | 19 | /** 20 | * It is an exception for get offensive tip for g.e-hentai.org 21 | */ 22 | public class OffensiveException extends EhException { 23 | 24 | public OffensiveException() { 25 | super("OFFENSIVE"); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /app/src/main/java/com/hippo/ehviewer/client/exception/ParseException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 Hippo Seven 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.hippo.ehviewer.client.exception; 18 | 19 | public class ParseException extends EhException { 20 | 21 | private String mBody; 22 | 23 | public ParseException(String detailMessage, String body) { 24 | super(detailMessage); 25 | mBody = body; 26 | } 27 | 28 | public String getBody() { 29 | return mBody; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /app/src/main/java/com/hippo/ehviewer/client/exception/PiningException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2015 Hippo Seven 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.hippo.ehviewer.client.exception; 18 | 19 | public class PiningException extends EhException { 20 | 21 | public PiningException() { 22 | super("pining for the fjords"); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /app/src/main/java/com/hippo/ehviewer/ui/annotation/DrawerLifeCircle.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 Hippo Seven 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.hippo.ehviewer.ui.annotation; 18 | 19 | import android.app.Fragment; 20 | import android.os.Bundle; 21 | import android.view.LayoutInflater; 22 | import android.view.ViewGroup; 23 | 24 | import java.lang.annotation.ElementType; 25 | import java.lang.annotation.Retention; 26 | import java.lang.annotation.RetentionPolicy; 27 | import java.lang.annotation.Target; 28 | 29 | /** 30 | * Created in {@link Fragment#onCreateView(LayoutInflater, ViewGroup, Bundle)}, 31 | * destroyed in {@link Fragment#onDestroyView()}. 32 | */ 33 | @Retention(RetentionPolicy.SOURCE) 34 | @Target({ElementType.FIELD}) 35 | public @interface DrawerLifeCircle { 36 | } 37 | -------------------------------------------------------------------------------- /app/src/main/java/com/hippo/ehviewer/ui/annotation/ViewLifeCircle.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 Hippo Seven 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.hippo.ehviewer.ui.annotation; 18 | 19 | import android.app.Fragment; 20 | import android.os.Bundle; 21 | import android.view.LayoutInflater; 22 | import android.view.ViewGroup; 23 | 24 | import java.lang.annotation.ElementType; 25 | import java.lang.annotation.Retention; 26 | import java.lang.annotation.RetentionPolicy; 27 | import java.lang.annotation.Target; 28 | 29 | /** 30 | * Created in {@link Fragment#onCreateView(LayoutInflater, ViewGroup, Bundle)}, 31 | * destroyed in {@link Fragment#onDestroyView()}. 32 | */ 33 | @Retention(RetentionPolicy.SOURCE) 34 | @Target({ElementType.FIELD}) 35 | public @interface ViewLifeCircle { 36 | } 37 | -------------------------------------------------------------------------------- /app/src/main/java/com/hippo/ehviewer/ui/annotation/WholeLifeCircle.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 Hippo Seven 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.hippo.ehviewer.ui.annotation; 18 | 19 | import android.app.Activity; 20 | import android.app.Fragment; 21 | import android.os.Bundle; 22 | 23 | import java.lang.annotation.ElementType; 24 | import java.lang.annotation.Retention; 25 | import java.lang.annotation.RetentionPolicy; 26 | import java.lang.annotation.Target; 27 | 28 | /** 29 | * Created in {@link Fragment#onCreate(Bundle)} or {@link Activity#onCreate(Bundle)}, 30 | * destroyed in {@link Fragment#onDestroy()} or {@link Activity#onDestroy()}. 31 | */ 32 | @Retention(RetentionPolicy.SOURCE) 33 | @Target({ElementType.FIELD}) 34 | public @interface WholeLifeCircle { 35 | } 36 | -------------------------------------------------------------------------------- /app/src/main/java/com/hippo/ehviewer/ui/fragment/ReadFragment.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 Hippo Seven 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.hippo.ehviewer.ui.fragment; 18 | 19 | import android.os.Bundle; 20 | import android.preference.PreferenceFragment; 21 | 22 | import com.hippo.ehviewer.R; 23 | 24 | public class ReadFragment extends PreferenceFragment { 25 | 26 | @Override 27 | public void onCreate(Bundle savedInstanceState) { 28 | super.onCreate(savedInstanceState); 29 | addPreferencesFromResource(R.xml.read_settings); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /app/src/main/java/com/hippo/ehviewer/ui/scene/TransitionNameFactory.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 Hippo Seven 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.hippo.ehviewer.ui.scene; 18 | 19 | public final class TransitionNameFactory { 20 | 21 | public static String getThumbTransitionName(long gid) { 22 | return "thumb:" + gid; 23 | } 24 | 25 | public static String getTitleTransitionName(long gid) { 26 | return "title:" + gid; 27 | } 28 | 29 | public static String getUploaderTransitionName(long gid) { 30 | return "uploader:" + gid; 31 | } 32 | 33 | public static String getCategoryTransitionName(long gid) { 34 | return "category:" + gid; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /app/src/main/java/com/hippo/network/Network.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2014 Hippo Seven 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.hippo.network; 18 | 19 | import android.content.Context; 20 | import android.net.ConnectivityManager; 21 | import android.net.NetworkInfo; 22 | 23 | public final class Network { 24 | private Network() {} 25 | 26 | public static int getActiveNetworkType(Context context) { 27 | ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); 28 | NetworkInfo activeNetwork; 29 | if (cm != null && (activeNetwork = cm.getActiveNetworkInfo()) != null) { 30 | return activeNetwork.getType(); 31 | } else { 32 | return -1; 33 | } 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /app/src/main/java/com/hippo/okhttp/ChromeRequestBuilder.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 Hippo Seven 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.hippo.okhttp; 18 | 19 | import java.net.MalformedURLException; 20 | import java.net.URL; 21 | 22 | import okhttp3.Request; 23 | 24 | public class ChromeRequestBuilder extends Request.Builder { 25 | 26 | private static final String CHROME_USER_AGENT = "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Safari/537.36"; 27 | 28 | public ChromeRequestBuilder(String url) throws MalformedURLException { 29 | url(new URL(url)); 30 | addHeader("User-Agent", CHROME_USER_AGENT); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /app/src/main/java/com/hippo/reveal/Reveal.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 Hippo Seven 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.hippo.reveal; 18 | 19 | public interface Reveal { 20 | 21 | void setRevealEnable(boolean enable); 22 | 23 | void setReveal(int centerX, int centerY, float radius); 24 | } 25 | -------------------------------------------------------------------------------- /app/src/main/java/com/hippo/scene/TransitionHelper.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 Hippo Seven 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.hippo.scene; 18 | 19 | import android.content.Context; 20 | import android.support.v4.app.Fragment; 21 | import android.support.v4.app.FragmentTransaction; 22 | 23 | public interface TransitionHelper { 24 | 25 | boolean onTransition(Context context, FragmentTransaction transaction, Fragment exit, Fragment enter); 26 | } 27 | -------------------------------------------------------------------------------- /app/src/main/java/com/hippo/util/DrawableManager.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 Hippo Seven 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.hippo.util; 18 | 19 | import android.annotation.SuppressLint; 20 | import android.content.Context; 21 | import android.graphics.drawable.Drawable; 22 | import android.support.annotation.DrawableRes; 23 | import android.support.annotation.NonNull; 24 | import android.support.v7.widget.AppCompatDrawableManager; 25 | 26 | public final class DrawableManager { 27 | 28 | @SuppressLint("RestrictedApi") 29 | private static final AppCompatDrawableManager sManager = AppCompatDrawableManager.get(); 30 | 31 | @SuppressLint("RestrictedApi") 32 | public static Drawable getDrawable(@NonNull Context context, @DrawableRes int resId) { 33 | return sManager.getDrawable(context, resId); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /app/src/main/java/com/hippo/util/HashCodeUtils.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2017 Hippo Seven 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.hippo.util; 18 | /* 19 | * Created by Hippo on 2017/9/4. 20 | */ 21 | 22 | public class HashCodeUtils { 23 | 24 | private static final int X = 31; 25 | 26 | /** 27 | *
{@code
28 |    * args[0].hashCode()*31^(n-1) + args[1].hashCode()*31^(n-2) + ... + args[n-1].hashCode()
29 |    * }
30 | * Returns 0 if {@code args == null}. 31 | */ 32 | public static int hashCode(Object... args) { 33 | if (args == null) { 34 | return 0; 35 | } 36 | int hash = 0; 37 | for (Object o: args) { 38 | hash = X * hash + (o != null ? o.hashCode() : 0); 39 | } 40 | return hash; 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /app/src/main/java/com/hippo/util/UserAgentUtil.kt: -------------------------------------------------------------------------------- 1 | package com.hippo.util 2 | 3 | import android.content.Context 4 | import android.webkit.WebSettings 5 | 6 | object UserAgentUtil { 7 | 8 | fun getUserAgent(context: Context): String { 9 | var userAgent = "" 10 | userAgent = try { 11 | WebSettings.getDefaultUserAgent(context) 12 | } catch (e: Exception) { 13 | System.getProperty("http.agent") 14 | } 15 | 16 | val sb = StringBuilder() 17 | var i = 0 18 | val length = userAgent.length 19 | while (i < length) { 20 | val c = userAgent[i] 21 | if (c <= '\u001f' || c >= '\u007f') { 22 | sb.append(String.format("\\u%04x", c.toInt())) 23 | } else { 24 | sb.append(c) 25 | } 26 | i++ 27 | } 28 | return sb.toString() 29 | } 30 | } -------------------------------------------------------------------------------- /app/src/main/res/anim/accelerate_quart.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 21 | -------------------------------------------------------------------------------- /app/src/main/res/anim/decelerate_quart.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 21 | -------------------------------------------------------------------------------- /app/src/main/res/anim/decelerate_quint.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 21 | -------------------------------------------------------------------------------- /app/src/main/res/anim/decelerate_terz.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 21 | -------------------------------------------------------------------------------- /app/src/main/res/anim/scene_close_enter.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 20 | 21 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /app/src/main/res/anim/scene_open_exit.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 20 | 21 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /app/src/main/res/color/preference_header_title_light.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /app/src/main/res/color/primary_text_dark.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /app/src/main/res/color/primary_text_light.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /app/src/main/res/color/secondary_text_dark.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /app/src/main/res/color/secondary_text_light.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /app/src/main/res/color/selectable_item_icon.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/color/selectable_item_text.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/drawer_shadow_left.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/onlymash/EhViewer/65d588d710f0ee9ff0cc9fa0e9dd810ea4d77f17/app/src/main/res/drawable-hdpi/drawer_shadow_left.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/drawer_shadow_right.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/onlymash/EhViewer/65d588d710f0ee9ff0cc9fa0e9dd810ea4d77f17/app/src/main/res/drawable-hdpi/drawer_shadow_right.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_fp_40px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/onlymash/EhViewer/65d588d710f0ee9ff0cc9fa0e9dd810ea4d77f17/app/src/main/res/drawable-hdpi/ic_fp_40px.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_pause_x24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/onlymash/EhViewer/65d588d710f0ee9ff0cc9fa0e9dd810ea4d77f17/app/src/main/res/drawable-hdpi/ic_pause_x24.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_stat_alert.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/onlymash/EhViewer/65d588d710f0ee9ff0cc9fa0e9dd810ea4d77f17/app/src/main/res/drawable-hdpi/ic_stat_alert.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/image_failed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/onlymash/EhViewer/65d588d710f0ee9ff0cc9fa0e9dd810ea4d77f17/app/src/main/res/drawable-hdpi/image_failed.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/sadpanda_low_poly.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/onlymash/EhViewer/65d588d710f0ee9ff0cc9fa0e9dd810ea4d77f17/app/src/main/res/drawable-hdpi/sadpanda_low_poly.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/drawer_shadow_left.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/onlymash/EhViewer/65d588d710f0ee9ff0cc9fa0e9dd810ea4d77f17/app/src/main/res/drawable-mdpi/drawer_shadow_left.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/drawer_shadow_right.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/onlymash/EhViewer/65d588d710f0ee9ff0cc9fa0e9dd810ea4d77f17/app/src/main/res/drawable-mdpi/drawer_shadow_right.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_fingerprint_error.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 22 | 25 | 28 | 29 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_fingerprint_success.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 22 | 25 | 28 | 29 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_fp_40px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/onlymash/EhViewer/65d588d710f0ee9ff0cc9fa0e9dd810ea4d77f17/app/src/main/res/drawable-mdpi/ic_fp_40px.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_pause_x24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/onlymash/EhViewer/65d588d710f0ee9ff0cc9fa0e9dd810ea4d77f17/app/src/main/res/drawable-mdpi/ic_pause_x24.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_stat_alert.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/onlymash/EhViewer/65d588d710f0ee9ff0cc9fa0e9dd810ea4d77f17/app/src/main/res/drawable-mdpi/ic_stat_alert.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/image_failed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/onlymash/EhViewer/65d588d710f0ee9ff0cc9fa0e9dd810ea4d77f17/app/src/main/res/drawable-mdpi/image_failed.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/sadpanda_low_poly.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/onlymash/EhViewer/65d588d710f0ee9ff0cc9fa0e9dd810ea4d77f17/app/src/main/res/drawable-mdpi/sadpanda_low_poly.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable-v25/ic_shortcut_start.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 11 | 15 | 16 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-v25/ic_shortcut_stop.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 11 | 15 | 16 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-v26/ic_shortcut_start.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-v26/ic_shortcut_stop.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/drawer_shadow_left.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/onlymash/EhViewer/65d588d710f0ee9ff0cc9fa0e9dd810ea4d77f17/app/src/main/res/drawable-xhdpi/drawer_shadow_left.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/drawer_shadow_right.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/onlymash/EhViewer/65d588d710f0ee9ff0cc9fa0e9dd810ea4d77f17/app/src/main/res/drawable-xhdpi/drawer_shadow_right.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_fp_40px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/onlymash/EhViewer/65d588d710f0ee9ff0cc9fa0e9dd810ea4d77f17/app/src/main/res/drawable-xhdpi/ic_fp_40px.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_pause_x24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/onlymash/EhViewer/65d588d710f0ee9ff0cc9fa0e9dd810ea4d77f17/app/src/main/res/drawable-xhdpi/ic_pause_x24.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_stat_alert.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/onlymash/EhViewer/65d588d710f0ee9ff0cc9fa0e9dd810ea4d77f17/app/src/main/res/drawable-xhdpi/ic_stat_alert.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/image_failed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/onlymash/EhViewer/65d588d710f0ee9ff0cc9fa0e9dd810ea4d77f17/app/src/main/res/drawable-xhdpi/image_failed.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/sadpanda_low_poly.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/onlymash/EhViewer/65d588d710f0ee9ff0cc9fa0e9dd810ea4d77f17/app/src/main/res/drawable-xhdpi/sadpanda_low_poly.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/drawer_shadow_left.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/onlymash/EhViewer/65d588d710f0ee9ff0cc9fa0e9dd810ea4d77f17/app/src/main/res/drawable-xxhdpi/drawer_shadow_left.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/drawer_shadow_right.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/onlymash/EhViewer/65d588d710f0ee9ff0cc9fa0e9dd810ea4d77f17/app/src/main/res/drawable-xxhdpi/drawer_shadow_right.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_fp_40px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/onlymash/EhViewer/65d588d710f0ee9ff0cc9fa0e9dd810ea4d77f17/app/src/main/res/drawable-xxhdpi/ic_fp_40px.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_pause_x24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/onlymash/EhViewer/65d588d710f0ee9ff0cc9fa0e9dd810ea4d77f17/app/src/main/res/drawable-xxhdpi/ic_pause_x24.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_stat_alert.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/onlymash/EhViewer/65d588d710f0ee9ff0cc9fa0e9dd810ea4d77f17/app/src/main/res/drawable-xxhdpi/ic_stat_alert.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/image_failed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/onlymash/EhViewer/65d588d710f0ee9ff0cc9fa0e9dd810ea4d77f17/app/src/main/res/drawable-xxhdpi/image_failed.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/sadpanda_low_poly.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/onlymash/EhViewer/65d588d710f0ee9ff0cc9fa0e9dd810ea4d77f17/app/src/main/res/drawable-xxhdpi/sadpanda_low_poly.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/shadow_2dp.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/onlymash/EhViewer/65d588d710f0ee9ff0cc9fa0e9dd810ea4d77f17/app/src/main/res/drawable-xxhdpi/shadow_2dp.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/shadow_8dp.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/onlymash/EhViewer/65d588d710f0ee9ff0cc9fa0e9dd810ea4d77f17/app/src/main/res/drawable-xxhdpi/shadow_8dp.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/big_download.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/big_filter.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/big_history.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/big_label.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/big_search.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/big_weird_face.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/divider_gallery_detail.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 20 | 21 | 23 | 24 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_launcher_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 22 | 26 | 30 | 31 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_launcher_foreground.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 22 | 26 | 27 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_more_vert_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_pause_108dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_play_arrow_108dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/preference_header_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/selectable_item_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/selectable_item_foreground.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/shadow_bottom.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 21 | 22 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/shadow_top.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 21 | 22 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/spacer_keyline.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 21 | 22 | 25 | 26 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/tile_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_adb_primary_x24.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_alert_red_x48.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_archive_primary_x48.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_arrow_left_dark_x24.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_book_open_primary_x24.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_bug_black_x48.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_chart_accent_x48.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_check_all_dark_x24.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_check_dark_x24.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_clear_all_dark_x24.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_close_dark_x24.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_cookie_brown_x48.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_delete_dark_x24.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_delete_red_x24.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_delete_x24.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_dots_vertical_secondary_dark_x24.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_download_black_x24.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_download_box_dark_x24.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_download_primary_x24.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_file_find_primary_x48.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_fire_black_x24.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_folder_move_dark_x24.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_go_to_dark_x24.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_heart_black_x24.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_heart_box_dark_x24.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_heart_outline_primary_x48.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_heart_primary_x48.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_help_circle_x24.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_history_black_x24.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_homepage_black_x24.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_info_dark_x24.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_info_outline_dark_x24.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_info_primary_x24.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_magnify_dark_x24.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_magnify_x24.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_pause_dark_x24.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_pause_x24.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_play_dark_x24.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_play_x24.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_plus_dark_x24.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_refresh_dark_x24.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_reply_dark_x24.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_sad_panda_primary_x24.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_sec_primary_x24.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_send_dark_x24.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_settings_black_x24.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_settings_dark_x24.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_share_primary_x48.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_similar_primary_x48.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_slider_bubble.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_star_half_x16.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_star_outline_x16.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_star_x16.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_thumb_up_primary_x48.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/v_utorrent_primary_x48.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_toolbar.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_u_config.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 29 | 30 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /app/src/main/res/layout/button_guide.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 |