├── .gitignore ├── .idea ├── .gitignore ├── .name ├── codeStyles │ ├── Project.xml │ └── codeStyleConfig.xml ├── compiler.xml ├── dictionaries │ └── Sky_D.xml ├── gradle.xml ├── jarRepositories.xml ├── misc.xml ├── runConfigurations.xml └── vcs.xml ├── LICENSE ├── README.md ├── andresguard.gradle ├── app ├── .gitignore ├── build.gradle ├── libs │ └── cdi-api.jar ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── skyd │ │ └── imomoe │ │ └── ExampleInstrumentedTest.kt │ ├── main │ ├── AndroidManifest.xml │ ├── assets │ │ └── fonts │ │ │ └── BPreplay.otf │ ├── java │ │ └── com │ │ │ └── skyd │ │ │ └── imomoe │ │ │ ├── App.kt │ │ │ ├── bean │ │ │ ├── AnimeDetailBean.kt │ │ │ ├── AnimeShowBean.kt │ │ │ ├── BaseBean.kt │ │ │ ├── ClassifyBean.kt │ │ │ ├── FavoriteAnimeBean.kt │ │ │ ├── GetDataEnum.kt │ │ │ ├── HistoryBean.kt │ │ │ ├── LicenseBean.kt │ │ │ ├── MoreBean.kt │ │ │ ├── PageNumberBean.kt │ │ │ ├── PlayBean.kt │ │ │ ├── SearchHistoryBean.kt │ │ │ ├── SendDanmuBean.kt │ │ │ ├── SendDanmuResultBean.kt │ │ │ ├── SkinBean.kt │ │ │ ├── TabBean.kt │ │ │ └── UpdateBean.kt │ │ │ ├── config │ │ │ ├── Api.kt │ │ │ ├── Const.kt │ │ │ └── UnknownActionUrl.kt │ │ │ ├── database │ │ │ ├── AppDatabase.kt │ │ │ ├── converter │ │ │ │ ├── AnimeDownloadStatusConverter.kt │ │ │ │ └── ImageBeanConverter.kt │ │ │ ├── dao │ │ │ │ ├── AnimeDownloadDao.kt │ │ │ │ ├── FavoriteAnimeDao.kt │ │ │ │ ├── HistoryDao.kt │ │ │ │ └── SearchHistoryDao.kt │ │ │ └── entity │ │ │ │ └── AnimeDownloadEntity.kt │ │ │ ├── model │ │ │ ├── AppUpdateModel.kt │ │ │ ├── DataSourceManager.kt │ │ │ ├── impls │ │ │ │ ├── AnimeDetailModel.kt │ │ │ │ ├── AnimeShowModel.kt │ │ │ │ ├── ClassifyModel.kt │ │ │ │ ├── Const.kt │ │ │ │ ├── EverydayAnimeModel.kt │ │ │ │ ├── EverydayAnimeWidgetModel.kt │ │ │ │ ├── HomeModel.kt │ │ │ │ ├── MonthAnimeModel.kt │ │ │ │ ├── PlayModel.kt │ │ │ │ ├── RankListModel.kt │ │ │ │ ├── RankModel.kt │ │ │ │ ├── RouteProcessor.kt │ │ │ │ ├── SearchModel.kt │ │ │ │ └── Util.kt │ │ │ ├── interfaces │ │ │ │ ├── IAnimeDetailModel.kt │ │ │ │ ├── IAnimeShowModel.kt │ │ │ │ ├── IBase.kt │ │ │ │ ├── IClassifyModel.kt │ │ │ │ ├── IConst.kt │ │ │ │ ├── IEverydayAnimeModel.kt │ │ │ │ ├── IEverydayAnimeWidgetModel.kt │ │ │ │ ├── IHomeModel.kt │ │ │ │ ├── IMonthAnimeModel.kt │ │ │ │ ├── IPlayModel.kt │ │ │ │ ├── IRankListModel.kt │ │ │ │ ├── IRankModel.kt │ │ │ │ ├── IRouteProcessor.kt │ │ │ │ ├── ISearchModel.kt │ │ │ │ └── IUtil.kt │ │ │ └── util │ │ │ │ ├── JsoupUtil.kt │ │ │ │ └── ParseHtmlUtil.kt │ │ │ ├── net │ │ │ ├── RetrofitManager.kt │ │ │ └── service │ │ │ │ ├── DanmuService.kt │ │ │ │ └── UpdateService.kt │ │ │ ├── util │ │ │ ├── CrashHandler.kt │ │ │ ├── Debug.kt │ │ │ ├── File.kt │ │ │ ├── MD5.kt │ │ │ ├── PushHelper.kt │ │ │ ├── RvAdapter.kt │ │ │ ├── Share.kt │ │ │ ├── SharedPreferences.kt │ │ │ ├── Text.kt │ │ │ ├── Util.kt │ │ │ ├── View.kt │ │ │ ├── ViewHolderUtil.kt │ │ │ ├── coil │ │ │ │ ├── CoilUtil.kt │ │ │ │ └── DarkBlurTransformation.kt │ │ │ ├── comparator │ │ │ │ └── EpisodeTitleComparator.kt │ │ │ ├── dlna │ │ │ │ ├── CastObject.java │ │ │ │ ├── Utils.kt │ │ │ │ ├── dmc │ │ │ │ │ ├── DLNACastManager.java │ │ │ │ │ ├── DLNACastService.java │ │ │ │ │ ├── DeviceRegistryImpl.java │ │ │ │ │ ├── ICast.java │ │ │ │ │ ├── ILogger.java │ │ │ │ │ ├── OnDeviceRegistryListener.java │ │ │ │ │ ├── QueryRequest.java │ │ │ │ │ ├── Utils.java │ │ │ │ │ ├── action │ │ │ │ │ │ ├── GetBrightness.java │ │ │ │ │ │ └── SetBrightness.java │ │ │ │ │ └── control │ │ │ │ │ │ ├── BaseServiceExecutor.java │ │ │ │ │ │ ├── ControlImpl.java │ │ │ │ │ │ ├── ICastInterface.java │ │ │ │ │ │ ├── IServiceAction.java │ │ │ │ │ │ └── IServiceFactory.java │ │ │ │ └── dms │ │ │ │ │ ├── ContentDirectoryService.java │ │ │ │ │ ├── ContentFactory.java │ │ │ │ │ ├── ContentResourceServlet.java │ │ │ │ │ ├── IMediaContentDao.java │ │ │ │ │ ├── IResourceServer.java │ │ │ │ │ ├── IResourceServerFactory.java │ │ │ │ │ ├── MediaContentDao.kt │ │ │ │ │ ├── MediaItem.java │ │ │ │ │ ├── MediaServer.java │ │ │ │ │ └── NanoHttpServer.java │ │ │ ├── downloadanime │ │ │ │ ├── AnimeDownloadHelper.kt │ │ │ │ ├── AnimeDownloadNotificationReceiver.kt │ │ │ │ ├── AnimeDownloadService.kt │ │ │ │ ├── AnimeDownloadStatus.kt │ │ │ │ └── DownloadListener.kt │ │ │ ├── eventbus │ │ │ │ ├── Event.kt │ │ │ │ └── EventBusSubscriber.kt │ │ │ ├── html │ │ │ │ ├── SnifferVideo.kt │ │ │ │ └── source │ │ │ │ │ ├── DefaultUICallback.kt │ │ │ │ │ ├── GettingCallback.kt │ │ │ │ │ ├── GettingUICallback.kt │ │ │ │ │ ├── Util.kt │ │ │ │ │ └── web │ │ │ │ │ ├── GettingUtil.kt │ │ │ │ │ ├── GettingWebChromeClient.kt │ │ │ │ │ ├── GettingWebView.kt │ │ │ │ │ └── GettingWebViewClient.kt │ │ │ ├── skin │ │ │ │ └── SkinUtil.kt │ │ │ └── update │ │ │ │ ├── AppUpdateHelper.kt │ │ │ │ └── AppUpdateStatus.kt │ │ │ ├── view │ │ │ ├── activity │ │ │ │ ├── AboutActivity.kt │ │ │ │ ├── AnimeDetailActivity.kt │ │ │ │ ├── AnimeDownloadActivity.kt │ │ │ │ ├── BaseActivity.kt │ │ │ │ ├── ClassifyActivity.kt │ │ │ │ ├── CrashActivity.kt │ │ │ │ ├── DlnaActivity.kt │ │ │ │ ├── DlnaControlActivity.kt │ │ │ │ ├── FavoriteActivity.kt │ │ │ │ ├── HistoryActivity.kt │ │ │ │ ├── LicenseActivity.kt │ │ │ │ ├── MainActivity.kt │ │ │ │ ├── MonthAnimeActivity.kt │ │ │ │ ├── NoticeActivity.kt │ │ │ │ ├── PlayActivity.kt │ │ │ │ ├── RankActivity.kt │ │ │ │ ├── SearchActivity.kt │ │ │ │ ├── SettingActivity.kt │ │ │ │ ├── SimplePlayActivity.kt │ │ │ │ ├── SkinActivity.kt │ │ │ │ └── WebViewActivity.kt │ │ │ ├── adapter │ │ │ │ ├── AnimeDetailAdapter.kt │ │ │ │ ├── AnimeDownloadAdapter.kt │ │ │ │ ├── AnimeShowAdapter.kt │ │ │ │ ├── BaseRvAdapter.kt │ │ │ │ ├── FavoriteAdapter.kt │ │ │ │ ├── HistoryAdapter.kt │ │ │ │ ├── LicenseAdapter.kt │ │ │ │ ├── MoreAdapter.kt │ │ │ │ ├── PlayAdapter.kt │ │ │ │ ├── SearchAdapter.kt │ │ │ │ ├── SearchHistoryAdapter.kt │ │ │ │ ├── SerializableRecycledViewPool.kt │ │ │ │ ├── SkinAdapter.kt │ │ │ │ ├── SkinRvAdapter.kt │ │ │ │ ├── UpnpAdapter.kt │ │ │ │ ├── decoration │ │ │ │ │ ├── AnimeCoverItemDecoration.kt │ │ │ │ │ ├── AnimeEpisodeItemDecoration.kt │ │ │ │ │ ├── AnimeShowItemDecoration.kt │ │ │ │ │ └── SkinItemDecoration.kt │ │ │ │ └── spansize │ │ │ │ │ ├── AnimeDetailSpanSize.kt │ │ │ │ │ ├── AnimeShowSpanSize.kt │ │ │ │ │ ├── PlaySpanSize.kt │ │ │ │ │ └── SkinSpanSize.kt │ │ │ ├── component │ │ │ │ ├── AnimeToast.kt │ │ │ │ ├── BottomSheetRecyclerView.kt │ │ │ │ ├── FlowLayout.kt │ │ │ │ ├── SmartScrollingFooterBehavior.kt │ │ │ │ ├── ViewPager2View.kt │ │ │ │ ├── VpSwipeRefreshLayout.kt │ │ │ │ ├── WrapLinearLayoutManager.kt │ │ │ │ ├── ZoomView.kt │ │ │ │ ├── bannerview │ │ │ │ │ ├── BannerUtil.kt │ │ │ │ │ ├── BannerView.kt │ │ │ │ │ ├── adapter │ │ │ │ │ │ ├── CycleBannerAdapter.kt │ │ │ │ │ │ └── MyCycleBannerAdapter.kt │ │ │ │ │ └── indicator │ │ │ │ │ │ ├── DotIndicator.kt │ │ │ │ │ │ ├── Indicator.kt │ │ │ │ │ │ └── SimpleIndicator.kt │ │ │ │ ├── player │ │ │ │ │ ├── AnimeDanmakuLoader.kt │ │ │ │ │ ├── AnimeDanmakuLoaderFactory.kt │ │ │ │ │ ├── AnimeDanmakuParser.kt │ │ │ │ │ ├── AnimeJSONSource.kt │ │ │ │ │ ├── AnimeOrientationUtils.kt │ │ │ │ │ ├── AnimeVideoPlayer.kt │ │ │ │ │ ├── DanmakuAdapter.kt │ │ │ │ │ ├── DanmakuVideoPlayer.kt │ │ │ │ │ ├── DetailPlayerActivity.java │ │ │ │ │ └── MyVideoAllCallBack.kt │ │ │ │ ├── textview │ │ │ │ │ ├── TypefaceTextView.kt │ │ │ │ │ └── TypefaceUtil.kt │ │ │ │ └── widget │ │ │ │ │ └── everydayanime │ │ │ │ │ ├── EverydayAnimeWidgetProvider.kt │ │ │ │ │ └── EverydayAnimeWidgetService.kt │ │ │ └── fragment │ │ │ │ ├── AnimeShowFragment.kt │ │ │ │ ├── BaseFragment.kt │ │ │ │ ├── EverydayAnimeFragment.kt │ │ │ │ ├── HomeFragment.kt │ │ │ │ ├── MoreDialogFragment.kt │ │ │ │ ├── MoreFragment.kt │ │ │ │ ├── RankFragment.kt │ │ │ │ └── ShareDialogFragment.kt │ │ │ └── viewmodel │ │ │ ├── AnimeDetailViewModel.kt │ │ │ ├── AnimeDownloadViewModel.kt │ │ │ ├── AnimeShowViewModel.kt │ │ │ ├── ClassifyViewModel.kt │ │ │ ├── EverydayAnimeViewModel.kt │ │ │ ├── FavoriteViewModel.kt │ │ │ ├── HistoryViewModel.kt │ │ │ ├── HomeViewModel.kt │ │ │ ├── MonthAnimeViewModel.kt │ │ │ ├── PlayViewModel.kt │ │ │ ├── RankListViewModel.kt │ │ │ ├── RankViewModel.kt │ │ │ ├── SearchViewModel.kt │ │ │ ├── SettingViewModel.kt │ │ │ └── UpnpViewModel.kt │ └── res │ │ ├── anim │ │ ├── anl_push_bottom_in.xml │ │ ├── anl_push_bottom_out.xml │ │ ├── anl_push_left_in.xml │ │ ├── anl_push_left_out.xml │ │ ├── anl_push_top_in.xml │ │ ├── anl_push_top_out.xml │ │ ├── anl_push_up_out.xml │ │ └── anl_stay.xml │ │ ├── drawable-xxxhdpi │ │ ├── ic_christmas_hat.webp │ │ ├── ic_everyday_anime_widget.webp │ │ └── ic_spinner_bg_1_skin.9.png │ │ ├── drawable │ │ ├── bg_circle_main_color_2_50_skin.xml │ │ ├── ic_access_time_main_color_24_skin.xml │ │ ├── ic_arrow_back_ios_white_24.xml │ │ ├── ic_arrow_back_white_24.xml │ │ ├── ic_arrow_circle_down_main_color_2_24_skin.xml │ │ ├── ic_arrow_circle_down_white_24_skin.xml │ │ ├── ic_arrow_forward_ios_main_color_12_skin.xml │ │ ├── ic_arrow_right_main_color_2_24_skin.xml │ │ ├── ic_bar_chart_white_24_skin.xml │ │ ├── ic_beans_main_color_24_skin.xml │ │ ├── ic_beans_main_color_2_24_skin.xml │ │ ├── ic_category_main_color_2_24_skin.xml │ │ ├── ic_clear_main_color_24_skin.xml │ │ ├── ic_delete_main_color_2_24_skin.xml │ │ ├── ic_delete_white_24.xml │ │ ├── ic_format_list_bulleted_white_24_skin.xml │ │ ├── ic_fullscreen_exit_white_24.xml │ │ ├── ic_fullscreen_white_24.xml │ │ ├── ic_history_white_24.xml │ │ ├── ic_home_main_color_24_skin.xml │ │ ├── ic_home_main_color_2_24_skin.xml │ │ ├── ic_info_white_24.xml │ │ ├── ic_insert_link_white_24.xml │ │ ├── ic_keyboard_arrow_down_main_color_2_24_skin.xml │ │ ├── ic_language_main_color_2_24_skin.xml │ │ ├── ic_launcher_background.xml │ │ ├── ic_link_main_color_2_34_skin.xml │ │ ├── ic_live_tv_main_color_2_24_skin.xml │ │ ├── ic_more_vert_white_24.xml │ │ ├── ic_music_note_white_24.xml │ │ ├── ic_nights_stay_main_color_2_24_skin.xml │ │ ├── ic_pause_circle_white_24.xml │ │ ├── ic_pause_white_24.xml │ │ ├── ic_photo_main_color_3_24_skin.xml │ │ ├── ic_play_circle_main_color_2_24_skin.xml │ │ ├── ic_play_circle_white_24.xml │ │ ├── ic_play_white_24.xml │ │ ├── ic_power_white_24.xml │ │ ├── ic_qq_main_color_2_34_skin.xml │ │ ├── ic_refresh_white_24.xml │ │ ├── ic_replay_white_24_skin.xml │ │ ├── ic_right_white_32_skin.xml │ │ ├── ic_sakura_17.xml │ │ ├── ic_sd_storage_main_color_2_24_skin.xml │ │ ├── ic_search_main_color_24_skin.xml │ │ ├── ic_sentiment_very_dissatisfied_main_color_24_skin.xml │ │ ├── ic_settings_white_24.xml │ │ ├── ic_share_white_24.xml │ │ ├── ic_skin_white_32_skin.xml │ │ ├── ic_skip_next_white_24.xml │ │ ├── ic_star_border_main_color_2_24_skin.xml │ │ ├── ic_star_border_white_24.xml │ │ ├── ic_star_main_color_2_24_skin.xml │ │ ├── ic_star_white_24_skin.xml │ │ ├── ic_storage_main_color_2_24_skin.xml │ │ ├── ic_sunny_main_color_24_skin.xml │ │ ├── ic_sunny_main_color_2_24_skin.xml │ │ ├── ic_sunny_white_24.xml │ │ ├── ic_swap_horiz_white_24_skin.xml │ │ ├── ic_swap_vert_white_24_skin.xml │ │ ├── ic_turn_off_danmu_main_color_2_64_skin.xml │ │ ├── ic_turn_on_danmu_main_color_2_64_skin.xml │ │ ├── ic_update_main_color_2_24_skin.xml │ │ ├── ic_warning_main_color_3_24_skin.xml │ │ ├── ic_wechat_main_color_2_34_skin.xml │ │ ├── ic_weibo_main_color_2_34_skin.xml │ │ ├── ic_widget_everyday_anime_refresh.xml │ │ ├── layerlist_shortcuts_download_24.xml │ │ ├── layerlist_shortcuts_everyday_24.xml │ │ ├── layerlist_shortcuts_favorite_24.xml │ │ ├── layerlist_video_progress_bg_skin.xml │ │ ├── seek_bar_progress_1_skin.xml │ │ ├── seek_bar_thumb_1_skin.xml │ │ ├── selector_everyday_anime_button_skin.xml │ │ ├── selector_home_button_skin.xml │ │ ├── selector_horizontal_reverse_button_skin.xml │ │ ├── selector_more_button_skin.xml │ │ ├── selector_no_reverse_button_skin.xml │ │ ├── selector_spinner_1_skin.xml │ │ ├── selector_turn_on_off_danmu_skin.xml │ │ ├── selector_vertical_reverse_button_skin.xml │ │ ├── shape_circle_corner_bottom_dialog_white_12_skin.xml │ │ ├── shape_circle_corner_edge_main_color_2_ripper_5_skin.xml │ │ ├── shape_circle_corner_edge_main_color_ripper_50_skin.xml │ │ ├── shape_circle_corner_edge_white_ripper_5_skin.xml │ │ ├── shape_circle_corner_white_50_skin.xml │ │ ├── shape_circle_corner_white_ripper_5.xml │ │ ├── shape_fill_circle_corner_coppery_50.xml │ │ ├── shape_fill_circle_corner_danmu_6.xml │ │ ├── shape_fill_circle_corner_golden_50.xml │ │ ├── shape_fill_circle_corner_main_color_2_50_skin.xml │ │ ├── shape_fill_circle_corner_silvery_50.xml │ │ ├── shape_gray_transparent_2_angle_90.xml │ │ ├── shape_gray_transparent_angle_270.xml │ │ ├── shape_gray_transparent_angle_90.xml │ │ ├── shape_widget_everyday_anime_body.xml │ │ └── shape_widget_everyday_anime_header.xml │ │ ├── layout-sw600dp-land │ │ └── activity_play.xml │ │ ├── layout-sw600dp-port │ │ └── activity_play.xml │ │ ├── layout │ │ ├── activity_about.xml │ │ ├── activity_anime_detail.xml │ │ ├── activity_anime_download.xml │ │ ├── activity_classify.xml │ │ ├── activity_dlna.xml │ │ ├── activity_dlna_control.xml │ │ ├── activity_favorite.xml │ │ ├── activity_history.xml │ │ ├── activity_license.xml │ │ ├── activity_main.xml │ │ ├── activity_month_anime.xml │ │ ├── activity_notice.xml │ │ ├── activity_play.xml │ │ ├── activity_rank.xml │ │ ├── activity_search.xml │ │ ├── activity_setting.xml │ │ ├── activity_simple_play.xml │ │ ├── activity_skin.xml │ │ ├── activity_web_view.xml │ │ ├── dialog_bottom_sheet_2.xml │ │ ├── fragment_anime_show.xml │ │ ├── fragment_everyday_anime.xml │ │ ├── fragment_home.xml │ │ ├── fragment_more.xml │ │ ├── fragment_more_dialog.xml │ │ ├── fragment_rank.xml │ │ ├── fragment_share_dialog.xml │ │ ├── item_anime_cover_1.xml │ │ ├── item_anime_cover_10.xml │ │ ├── item_anime_cover_2.xml │ │ ├── item_anime_cover_3.xml │ │ ├── item_anime_cover_4.xml │ │ ├── item_anime_cover_5.xml │ │ ├── item_anime_cover_6.xml │ │ ├── item_anime_cover_7.xml │ │ ├── item_anime_cover_8.xml │ │ ├── item_anime_cover_9.xml │ │ ├── item_anime_describe_1.xml │ │ ├── item_anime_episode_1.xml │ │ ├── item_anime_episode_2.xml │ │ ├── item_anime_episode_flow_layout_1.xml │ │ ├── item_anime_episode_flow_layout_2.xml │ │ ├── item_anime_info_1.xml │ │ ├── item_anime_type_1.xml │ │ ├── item_banner_1.xml │ │ ├── item_dlna_device_1.xml │ │ ├── item_grid_recycler_view_1.xml │ │ ├── item_header_1.xml │ │ ├── item_horizontal_recycler_view_1.xml │ │ ├── item_license_1.xml │ │ ├── item_license_header_1.xml │ │ ├── item_more_1.xml │ │ ├── item_player_list_item_1.xml │ │ ├── item_search_history_1.xml │ │ ├── item_search_history_header_1.xml │ │ ├── item_skin_cover_1.xml │ │ ├── item_spinner_item_1.xml │ │ ├── item_text_view_1.xml │ │ ├── layout_anime_video_player.xml │ │ ├── layout_anime_video_player_land.xml │ │ ├── layout_circle_progress_text_tip_1.xml │ │ ├── layout_image_text_tip_1.xml │ │ ├── layout_toolbar_1.xml │ │ ├── toast_1.xml │ │ ├── upush_bar_image_notification.xml │ │ ├── upush_notification.xml │ │ └── widget_everyday_anime.xml │ │ ├── mipmap-anydpi-v26 │ │ └── ic_launcher_round.xml │ │ ├── mipmap-xxxhdpi │ │ ├── ic_launcher.webp │ │ ├── ic_launcher_foreground.webp │ │ └── ic_launcher_round.png │ │ ├── raw │ │ └── keep.xml │ │ ├── values-night │ │ └── colors.xml │ │ ├── values │ │ ├── attrs.xml │ │ ├── colors.xml │ │ ├── ic_launcher_background.xml │ │ ├── ids.xml │ │ ├── strings.xml │ │ ├── styles.xml │ │ └── themes_skin.xml │ │ └── xml │ │ ├── file_paths.xml │ │ ├── network_security_config.xml │ │ └── widget_everyday_anime.xml │ └── test │ └── java │ └── com │ └── skyd │ └── imomoe │ └── ExampleUnitTest.kt ├── build.gradle ├── doc ├── about_http_security.md ├── about_secret.gradle.md └── customdatasource │ ├── README.md │ ├── image │ ├── customdatasource.jpg │ ├── customdatasource_2.jpg │ └── normal.jpg │ └── sample │ └── custom │ ├── CustomAnimeDetailModel.kt │ ├── CustomAnimeShowModel.kt │ ├── CustomClassifyModel.kt │ ├── CustomConst.kt │ ├── CustomDataSource.jar │ ├── CustomEverydayAnimeModel.kt │ ├── CustomEverydayAnimeWidgetModel.kt │ ├── CustomHomeModel.kt │ ├── CustomMonthAnimeModel.kt │ ├── CustomParseHtmlUtil.kt │ ├── CustomPlayModel.kt │ ├── CustomRankListModel.kt │ ├── CustomRankModel.kt │ ├── CustomRouteProcessor.kt │ ├── CustomSearchModel.kt │ ├── CustomUtil.kt │ └── TestClass.kt ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── image ├── icon.psd ├── icon_round.psd ├── readme_cover.png ├── readme_cover.psd └── spinner.psd ├── screenshot ├── anime_detail.jpg ├── classify.jpg ├── everyday_anime.jpg ├── favorite.jpg ├── history.jpg ├── main.jpg ├── new_anime.jpg ├── play.jpg ├── player.jpg ├── rank.jpg └── search.jpg ├── settings.gradle ├── skin ├── .gitignore ├── build.gradle ├── consumer-rules.pro ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── skyd │ │ └── skin │ │ └── ExampleInstrumentedTest.kt │ ├── main │ ├── AndroidManifest.xml │ ├── java │ │ └── com │ │ │ └── skyd │ │ │ └── skin │ │ │ ├── SkinManager.kt │ │ │ └── core │ │ │ ├── SkinAttrsSet.kt │ │ │ ├── SkinBaseActivity.kt │ │ │ ├── SkinBaseFragment.kt │ │ │ ├── SkinCache.kt │ │ │ ├── SkinPreferenceUtil.kt │ │ │ ├── SkinResourceProcessor.kt │ │ │ ├── attrs │ │ │ ├── BackgroundAttr.kt │ │ │ ├── BackgroundTintAttr.kt │ │ │ ├── ButtonTintAttr.kt │ │ │ ├── CardBackgroundColorAttr.kt │ │ │ ├── ColorPrimaryAttr.kt │ │ │ ├── ContentScrimAttr.kt │ │ │ ├── DrawableEndAttr.kt │ │ │ ├── DrawableStartAttr.kt │ │ │ ├── DrawableTopCompatAttr.kt │ │ │ ├── ImageViewTintAttr.kt │ │ │ ├── IndeterminateTintAttr.kt │ │ │ ├── ProgressDrawableAttr.kt │ │ │ ├── ScrollbarThumbVerticalAttr.kt │ │ │ ├── SkinAttr.kt │ │ │ ├── SrcAttr.kt │ │ │ ├── SrlPrimaryColorAttr.kt │ │ │ ├── TabIndicatorColorAttr.kt │ │ │ ├── TabTextColorAttr.kt │ │ │ ├── TextColorAttr.kt │ │ │ ├── TextColorHintAttr.kt │ │ │ ├── ThumbAttr.kt │ │ │ ├── ThumbTintAttr.kt │ │ │ └── TrackTintAttr.kt │ │ │ └── listeners │ │ │ ├── ChangeCustomSkinListener.kt │ │ │ └── ChangeSkinListener.kt │ └── res │ │ └── values │ │ └── ids.xml │ └── test │ └── java │ └── com │ └── skyd │ └── skin │ └── ExampleUnitTest.kt ├── skin_blue ├── .gitignore ├── build.gradle ├── consumer-rules.pro ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── skyd │ │ └── skin_blue │ │ └── ExampleInstrumentedTest.kt │ ├── main │ ├── AndroidManifest.xml │ └── res │ │ ├── drawable-xxxhdpi │ │ ├── ic_spinner_bg_1_skin_blue.9.png │ │ └── seek_bar_progress_1_skin_blue.xml │ │ ├── drawable │ │ ├── bg_circle_main_color_2_50_skin_blue.xml │ │ ├── ic_access_time_main_color_24_skin_blue.xml │ │ ├── ic_arrow_forward_ios_main_color_12_skin_blue.xml │ │ ├── ic_arrow_right_main_color_2_24_skin_blue.xml │ │ ├── ic_beans_main_color_24_skin_blue.xml │ │ ├── ic_beans_main_color_2_24_skin_blue.xml │ │ ├── ic_category_main_color_2_24_skin_blue.xml │ │ ├── ic_clear_main_color_24_skin_blue.xml │ │ ├── ic_delete_main_color_2_24_skin_blue.xml │ │ ├── ic_diamond_main_color_2_19_skin_blue.xml │ │ ├── ic_home_main_color_24_skin_blue.xml │ │ ├── ic_home_main_color_2_24_skin_blue.xml │ │ ├── ic_keyboard_arrow_down_main_color_2_24_skin_blue.xml │ │ ├── ic_language_main_color_2_24_skin_blue.xml │ │ ├── ic_link_main_color_2_34_skin_blue.xml │ │ ├── ic_live_tv_main_color_2_24_skin_blue.xml │ │ ├── ic_nights_stay_main_color_2_24_skin_blue.xml │ │ ├── ic_photo_main_color_3_24_skin_blue.xml │ │ ├── ic_play_circle_main_color_2_24_skin_blue.xml │ │ ├── ic_qq_main_color_2_34_skin_blue.xml │ │ ├── ic_replay_white_24_skin_blue.xml │ │ ├── ic_sd_storage_main_color_2_24_skin_blue.xml │ │ ├── ic_search_main_color_24_skin_blue.xml │ │ ├── ic_sentiment_very_dissatisfied_main_color_24_skin_blue.xml │ │ ├── ic_skin_white_32_skin_blue.xml │ │ ├── ic_star_border_main_color_2_24_skin_blue.xml │ │ ├── ic_star_main_color_2_24_skin_blue.xml │ │ ├── ic_storage_main_color_2_24_skin_blue.xml │ │ ├── ic_sunny_main_color_24_skin_blue.xml │ │ ├── ic_sunny_main_color_2_24_skin_blue.xml │ │ ├── ic_swap_horiz_white_24_skin_blue.xml │ │ ├── ic_swap_vert_white_24_skin_blue.xml │ │ ├── ic_turn_off_danmu_main_color_2_64_skin_blue.xml │ │ ├── ic_turn_on_danmu_main_color_2_64_skin_blue.xml │ │ ├── ic_update_main_color_2_24_skin_blue.xml │ │ ├── ic_warning_main_color_3_24_skin_blue.xml │ │ ├── ic_wechat_main_color_2_34_skin_blue.xml │ │ ├── ic_weibo_main_color_2_34_skin_blue.xml │ │ ├── layerlist_video_progress_bg_skin_blue.xml │ │ ├── seek_bar_thumb_1_skin_blue.xml │ │ ├── selector_everyday_anime_button_skin_blue.xml │ │ ├── selector_home_button_skin_blue.xml │ │ ├── selector_horizontal_reverse_button_skin_blue.xml │ │ ├── selector_more_button_skin_blue.xml │ │ ├── selector_no_reverse_button_skin_blue.xml │ │ ├── selector_spinner_1_skin_blue.xml │ │ ├── selector_turn_on_off_danmu_skin_blue.xml │ │ ├── selector_vertical_reverse_button_skin_blue.xml │ │ ├── shape_circle_corner_edge_main_color_2_ripper_5_skin_blue.xml │ │ ├── shape_circle_corner_edge_main_color_ripper_50_skin_blue.xml │ │ └── shape_fill_circle_corner_main_color_2_50_skin_blue.xml │ │ └── values │ │ ├── colors_skin_blue.xml │ │ └── themes_skin_blue.xml │ └── test │ └── java │ └── com │ └── skyd │ └── skin_blue │ └── ExampleUnitTest.kt ├── skin_dark ├── .gitignore ├── build.gradle ├── consumer-rules.pro ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── cyeasybuy │ │ └── skin_dark │ │ └── ExampleInstrumentedTest.kt │ ├── main │ ├── AndroidManifest.xml │ └── res │ │ ├── drawable-xxxhdpi │ │ └── ic_spinner_bg_1_skin_dark.9.png │ │ ├── drawable │ │ ├── bg_circle_main_color_2_50_skin_dark.xml │ │ ├── ic_access_time_main_color_24_skin_dark.xml │ │ ├── ic_arrow_forward_ios_main_color_12_skin_dark.xml │ │ ├── ic_arrow_right_main_color_2_24_skin_dark.xml │ │ ├── ic_beans_main_color_24_skin_dark.xml │ │ ├── ic_beans_main_color_2_24_skin_dark.xml │ │ ├── ic_category_main_color_2_24_skin_dark.xml │ │ ├── ic_clear_main_color_24_skin_dark.xml │ │ ├── ic_delete_main_color_2_24_skin_dark.xml │ │ ├── ic_home_main_color_24_skin_dark.xml │ │ ├── ic_home_main_color_2_24_skin_dark.xml │ │ ├── ic_keyboard_arrow_down_main_color_2_24_skin_dark.xml │ │ ├── ic_language_main_color_2_24_skin_dark.xml │ │ ├── ic_link_main_color_2_34_skin_dark.xml │ │ ├── ic_live_tv_main_color_2_24_skin_dark.xml │ │ ├── ic_nights_stay_main_color_2_24_skin_dark.xml │ │ ├── ic_photo_main_color_3_24_skin_dark.xml │ │ ├── ic_play_circle_main_color_2_24_skin_dark.xml │ │ ├── ic_qq_main_color_2_34_skin_dark.xml │ │ ├── ic_replay_white_24_skin_dark.xml │ │ ├── ic_sd_storage_main_color_2_24_skin_dark.xml │ │ ├── ic_search_main_color_24_skin_dark.xml │ │ ├── ic_sentiment_very_dissatisfied_main_color_24_skin_dark.xml │ │ ├── ic_star_border_main_color_2_24_skin_dark.xml │ │ ├── ic_star_main_color_2_24_skin_dark.xml │ │ ├── ic_storage_main_color_2_24_skin_dark.xml │ │ ├── ic_sunny_main_color_24_skin_dark.xml │ │ ├── ic_sunny_main_color_2_24_skin_dark.xml │ │ ├── ic_swap_horiz_white_24_skin_dark.xml │ │ ├── ic_swap_vert_white_24_skin_dark.xml │ │ ├── ic_turn_off_danmu_main_color_2_64_skin_dark.xml │ │ ├── ic_turn_on_danmu_main_color_2_64_skin_dark.xml │ │ ├── ic_update_main_color_2_24_skin_dark.xml │ │ ├── ic_warning_main_color_3_24_skin_dark.xml │ │ ├── ic_wechat_main_color_2_34_skin_dark.xml │ │ ├── ic_weibo_main_color_2_34_skin_dark.xml │ │ ├── layerlist_video_progress_bg_skin_dark.xml │ │ ├── selector_everyday_anime_button_skin_dark.xml │ │ ├── selector_home_button_skin_dark.xml │ │ ├── selector_horizontal_reverse_button_skin_dark.xml │ │ ├── selector_more_button_skin_dark.xml │ │ ├── selector_no_reverse_button_skin_dark.xml │ │ ├── selector_spinner_1_skin_dark.xml │ │ ├── selector_turn_on_off_danmu_skin_dark.xml │ │ ├── selector_vertical_reverse_button_skin_dark.xml │ │ ├── shape_circle_corner_bottom_dialog_white_12_skin_dark.xml │ │ ├── shape_circle_corner_edge_main_color_2_ripper_5_skin_dark.xml │ │ ├── shape_circle_corner_edge_main_color_ripper_50_skin_dark.xml │ │ ├── shape_circle_corner_edge_white_ripper_5_skin_dark.xml │ │ ├── shape_circle_corner_white_50_skin_dark.xml │ │ └── shape_fill_circle_corner_main_color_2_50_skin_dark.xml │ │ └── values │ │ ├── colors_skin_dark.xml │ │ └── themes_skin_dark.xml │ └── test │ └── java │ └── com │ └── cyeasybuy │ └── skin_dark │ └── ExampleUnitTest.kt ├── skin_lemon ├── .gitignore ├── build.gradle ├── consumer-rules.pro ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── cyeasybuy │ │ └── skin_lemon │ │ └── ExampleInstrumentedTest.kt │ ├── main │ ├── AndroidManifest.xml │ └── res │ │ ├── drawable-xxxhdpi │ │ ├── ic_spinner_bg_1_skin_lemon.9.png │ │ └── seek_bar_progress_1_skin_lemon.xml │ │ ├── drawable │ │ ├── bg_circle_main_color_2_50_skin_lemon.xml │ │ ├── ic_access_time_main_color_24_skin_lemon.xml │ │ ├── ic_arrow_forward_ios_main_color_12_skin_lemon.xml │ │ ├── ic_arrow_right_main_color_2_24_skin_lemon.xml │ │ ├── ic_beans_main_color_24_skin_lemon.xml │ │ ├── ic_beans_main_color_2_24_skin_lemon.xml │ │ ├── ic_category_main_color_2_24_skin_lemon.xml │ │ ├── ic_clear_main_color_24_skin_lemon.xml │ │ ├── ic_delete_main_color_2_24_skin_lemon.xml │ │ ├── ic_diamond_main_color_2_19_skin_lemon.xml │ │ ├── ic_home_main_color_24_skin_lemon.xml │ │ ├── ic_home_main_color_2_24_skin_lemon.xml │ │ ├── ic_keyboard_arrow_down_main_color_2_24_skin_lemon.xml │ │ ├── ic_language_main_color_2_24_skin_lemon.xml │ │ ├── ic_lemon_20.xml │ │ ├── ic_link_main_color_2_34_skin_lemon.xml │ │ ├── ic_live_tv_main_color_2_24_skin_lemon.xml │ │ ├── ic_nights_stay_main_color_2_24_skin_lemon.xml │ │ ├── ic_photo_main_color_3_24_skin_lemon.xml │ │ ├── ic_play_circle_main_color_2_24_skin_lemon.xml │ │ ├── ic_qq_main_color_2_34_skin_lemon.xml │ │ ├── ic_replay_white_24_skin_lemon.xml │ │ ├── ic_sd_storage_main_color_2_24_skin_lemon.xml │ │ ├── ic_search_main_color_24_skin_lemon.xml │ │ ├── ic_sentiment_very_dissatisfied_main_color_24_skin_lemon.xml │ │ ├── ic_skin_white_32_skin_lemon.xml │ │ ├── ic_star_border_main_color_2_24_skin_lemon.xml │ │ ├── ic_star_main_color_2_24_skin_lemon.xml │ │ ├── ic_storage_main_color_2_24_skin_lemon.xml │ │ ├── ic_sunny_main_color_24_skin_lemon.xml │ │ ├── ic_sunny_main_color_2_24_skin_lemon.xml │ │ ├── ic_swap_horiz_white_24_skin_lemon.xml │ │ ├── ic_swap_vert_white_24_skin_lemon.xml │ │ ├── ic_turn_off_danmu_main_color_2_64_skin_lemon.xml │ │ ├── ic_turn_on_danmu_main_color_2_64_skin_lemon.xml │ │ ├── ic_update_main_color_2_24_skin_lemon.xml │ │ ├── ic_warning_main_color_3_24_skin_lemon.xml │ │ ├── ic_wechat_main_color_2_34_skin_lemon.xml │ │ ├── ic_weibo_main_color_2_34_skin_lemon.xml │ │ ├── layerlist_video_progress_bg_skin_lemon.xml │ │ ├── seek_bar_thumb_1_skin_lemon.xml │ │ ├── selector_everyday_anime_button_skin_lemon.xml │ │ ├── selector_home_button_skin_lemon.xml │ │ ├── selector_horizontal_reverse_button_skin_lemon.xml │ │ ├── selector_more_button_skin_lemon.xml │ │ ├── selector_no_reverse_button_skin_lemon.xml │ │ ├── selector_spinner_1_skin_lemon.xml │ │ ├── selector_turn_on_off_danmu_skin_lemon.xml │ │ ├── selector_vertical_reverse_button_skin_lemon.xml │ │ ├── shape_circle_corner_edge_main_color_2_ripper_5_skin_lemon.xml │ │ ├── shape_circle_corner_edge_main_color_ripper_50_skin_lemon.xml │ │ └── shape_fill_circle_corner_main_color_2_50_skin_lemon.xml │ │ └── values │ │ ├── colors_skin_lemon.xml │ │ └── themes_skin_lemon.xml │ └── test │ └── java │ └── com │ └── cyeasybuy │ └── skin_lemon │ └── ExampleUnitTest.kt ├── skin_sweat_soybean ├── .gitignore ├── build.gradle ├── consumer-rules.pro ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── cyeasybuy │ │ └── skin_sweat_soybean │ │ └── ExampleInstrumentedTest.kt │ ├── main │ ├── AndroidManifest.xml │ └── res │ │ ├── drawable-hdpi │ │ ├── ic_arrow_circle_down_white_24_skin_sweat_soybean.xml │ │ ├── ic_bar_chart_white_24_skin_sweat_soybean.xml │ │ ├── ic_delete_main_color_2_24_skin_sweat_soybean.xml │ │ ├── ic_face_savouring_delicious_food_160px.webp │ │ ├── ic_fearful_face_160px.webp │ │ ├── ic_format_list_bulleted_white_24_skin_sweat_soybean.xml │ │ ├── ic_open_mout_tightly_closed_eyes_160px.webp │ │ ├── ic_open_mouth_cold_sweat_160px.webp │ │ ├── ic_play_circle_main_color_2_24_skin_sweat_soybean.xml │ │ ├── ic_rolling_on_the_floor_laughing_160px.webp │ │ ├── ic_smiling_face_with_heart_shaped_eyes_160px.webp │ │ ├── ic_soybean_160px.webp │ │ ├── ic_star_white_24_skin_sweat_soybean.xml │ │ ├── ic_sweat_soybean_160px.webp │ │ └── ic_tears_of_joy_160px.webp │ │ ├── drawable-xxxhdpi │ │ ├── ic_spinner_bg_1_skin_sweat_soybean.9.png │ │ └── seek_bar_progress_1_skin_sweat_soybean.xml │ │ ├── drawable │ │ ├── bg_circle_main_color_2_50_skin_sweat_soybean.xml │ │ ├── ic_access_time_main_color_24_skin_sweat_soybean.xml │ │ ├── ic_arrow_forward_ios_main_color_12_skin_sweat_soybean.xml │ │ ├── ic_arrow_right_main_color_2_24_skin_sweat_soybean.xml │ │ ├── ic_category_main_color_2_24_skin_sweat_soybean.xml │ │ ├── ic_clear_main_color_24_skin_sweat_soybean.xml │ │ ├── ic_keyboard_arrow_down_main_color_2_24_skin_sweat_soybean.xml │ │ ├── ic_language_main_color_2_24_skin_sweat_soybean.xml │ │ ├── ic_link_main_color_2_34_skin_sweat_soybean.xml │ │ ├── ic_live_tv_main_color_2_24_skin_sweat_soybean.xml │ │ ├── ic_nights_stay_main_color_2_24_skin_sweat_soybean.xml │ │ ├── ic_photo_main_color_3_24_skin_sweat_soybean.xml │ │ ├── ic_play_circle_main_color_2_24_skin_lemon.xml │ │ ├── ic_qq_main_color_2_34_skin_sweat_soybean.xml │ │ ├── ic_replay_white_24_skin_sweat_soybean.xml │ │ ├── ic_sd_storage_main_color_2_24_skin_sweat_soybean.xml │ │ ├── ic_search_main_color_24_skin_sweat_soybean.xml │ │ ├── ic_sentiment_very_dissatisfied_main_color_24_skin_sweat_soybean.xml │ │ ├── ic_skin_white_32_skin_sweat_soybean.xml │ │ ├── ic_star_border_main_color_2_24_skin_sweat_soybean.xml │ │ ├── ic_star_main_color_2_24_skin_sweat_soybean.xml │ │ ├── ic_storage_main_color_2_24_skin_sweat_soybean.xml │ │ ├── ic_swap_horiz_white_24_skin_sweat_soybean.xml │ │ ├── ic_swap_vert_white_24_skin_sweat_soybean.xml │ │ ├── ic_turn_off_danmu_main_color_2_64_skin_sweat_soybean.xml │ │ ├── ic_turn_on_danmu_main_color_2_64_skin_sweat_soybean.xml │ │ ├── ic_update_main_color_2_24_skin_sweat_soybean.xml │ │ ├── ic_warning_main_color_3_24_skin_sweat_soybean.xml │ │ ├── ic_wechat_main_color_2_34_skin_sweat_soybean.xml │ │ ├── ic_weibo_main_color_2_34_skin_sweat_soybean.xml │ │ ├── layerlist_sweat_soybean.xml │ │ ├── layerlist_video_progress_bg_skin_sweat_soybean.xml │ │ ├── seek_bar_thumb_1_skin_sweat_soybean.xml │ │ ├── selector_everyday_anime_button_skin_sweat_soybean.xml │ │ ├── selector_home_button_skin_sweat_soybean.xml │ │ ├── selector_horizontal_reverse_button_skin_sweat_soybean.xml │ │ ├── selector_more_button_skin_sweat_soybean.xml │ │ ├── selector_no_reverse_button_skin_sweat_soybean.xml │ │ ├── selector_spinner_1_skin_sweat_soybean.xml │ │ ├── selector_turn_on_off_danmu_skin_sweat_soybean.xml │ │ ├── selector_vertical_reverse_button_skin_sweat_soybean.xml │ │ ├── shape_circle_corner_edge_main_color_2_ripper_5_skin_sweat_soybean.xml │ │ ├── shape_circle_corner_edge_main_color_ripper_50_skin_sweat_soybean.xml │ │ └── shape_fill_circle_corner_main_color_2_50_skin_sweat_soybean.xml │ │ └── values │ │ ├── colors_skin_sweat_soybean.xml │ │ └── themes_skin_sweat_soybean.xml │ └── test │ └── java │ └── com │ └── cyeasybuy │ └── skin_sweat_soybean │ └── ExampleUnitTest.kt └── version.gradle /.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .gradle 3 | /local.properties 4 | /.idea/caches 5 | /.idea/libraries 6 | /.idea/modules.xml 7 | /.idea/workspace.xml 8 | /.idea/navEditor.xml 9 | /.idea/assetWizardSettings.xml 10 | .DS_Store 11 | /build 12 | /captures 13 | .externalNativeBuild 14 | .cxx 15 | local.properties 16 | /secret.gradle 17 | /.idea/dbnavigator.xml 18 | /.idea/encodings.xml 19 | /.idea/statistic.xml 20 | /app/schemas 21 | /app/release 22 | -------------------------------------------------------------------------------- /.idea/.gitignore: -------------------------------------------------------------------------------- 1 | # Default ignored files 2 | /shelf/ 3 | /workspace.xml 4 | -------------------------------------------------------------------------------- /.idea/.name: -------------------------------------------------------------------------------- 1 | 樱花动漫 -------------------------------------------------------------------------------- /.idea/codeStyles/codeStyleConfig.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | -------------------------------------------------------------------------------- /.idea/compiler.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.idea/dictionaries/Sky_D.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | anime 5 | bugly 6 | ctiao 7 | danmaku 8 | deps 9 | dlna 10 | filedownloader 11 | gitee 12 | iframe 13 | imomoe 14 | jsoup 15 | mobileqq 16 | sakura 17 | shuyu 18 | sina 19 | skyd 20 | tencent 21 | umeng 22 | umsdk 23 | upnp 24 | wechat 25 | weibo 26 | yhdm 27 | 28 | 29 | -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 9 | -------------------------------------------------------------------------------- /.idea/runConfigurations.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 10 | -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | /src/main/res/raw/notice.txt 3 | -------------------------------------------------------------------------------- /app/libs/cdi-api.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/androiddevnotesforks/Imomoe/bd3b3a0e3f5211ccd57cf6d384e7c60bc5efc45f/app/libs/cdi-api.jar -------------------------------------------------------------------------------- /app/src/main/assets/fonts/BPreplay.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/androiddevnotesforks/Imomoe/bd3b3a0e3f5211ccd57cf6d384e7c60bc5efc45f/app/src/main/assets/fonts/BPreplay.otf -------------------------------------------------------------------------------- /app/src/main/java/com/skyd/imomoe/bean/BaseBean.kt: -------------------------------------------------------------------------------- 1 | package com.skyd.imomoe.bean 2 | 3 | import java.io.Serializable 4 | 5 | interface BaseBean : Serializable { 6 | var type: String 7 | var actionUrl: String 8 | } -------------------------------------------------------------------------------- /app/src/main/java/com/skyd/imomoe/bean/ClassifyBean.kt: -------------------------------------------------------------------------------- 1 | package com.skyd.imomoe.bean 2 | 3 | class ClassifyBean( 4 | override var type: String, 5 | override var actionUrl: String, 6 | var name: String, 7 | var classifyDataList: ArrayList 8 | ) : BaseBean { 9 | override fun toString(): String { 10 | return name.replace(":", "").replace(":", "") 11 | } 12 | } 13 | 14 | //每个分类子项,如字母的A,地区的大陆 15 | class ClassifyDataBean( 16 | override var type: String, 17 | override var actionUrl: String, 18 | var url: String, 19 | var title: String 20 | ) : BaseBean //也可以继承TabBean -------------------------------------------------------------------------------- /app/src/main/java/com/skyd/imomoe/bean/GetDataEnum.kt: -------------------------------------------------------------------------------- 1 | package com.skyd.imomoe.bean 2 | 3 | enum class GetDataEnum { 4 | FAILED, REFRESH, LOAD_MORE 5 | } -------------------------------------------------------------------------------- /app/src/main/java/com/skyd/imomoe/bean/LicenseBean.kt: -------------------------------------------------------------------------------- 1 | package com.skyd.imomoe.bean 2 | 3 | class LicenseBean( 4 | override var type: String, 5 | override var actionUrl: String, 6 | var url: String, 7 | var title: String, 8 | var license: String 9 | ) : BaseBean 10 | -------------------------------------------------------------------------------- /app/src/main/java/com/skyd/imomoe/bean/MoreBean.kt: -------------------------------------------------------------------------------- 1 | package com.skyd.imomoe.bean 2 | 3 | import androidx.annotation.DrawableRes 4 | 5 | class MoreBean( 6 | override var type: String, 7 | override var actionUrl: String, 8 | var title: String, 9 | @DrawableRes 10 | var image: Int 11 | ) : BaseBean 12 | -------------------------------------------------------------------------------- /app/src/main/java/com/skyd/imomoe/bean/PageNumberBean.kt: -------------------------------------------------------------------------------- 1 | package com.skyd.imomoe.bean 2 | 3 | class PageNumberBean( 4 | override var type: String, 5 | override var actionUrl: String, 6 | var url: String, 7 | var title: String 8 | ) : BaseBean 9 | -------------------------------------------------------------------------------- /app/src/main/java/com/skyd/imomoe/bean/PlayBean.kt: -------------------------------------------------------------------------------- 1 | package com.skyd.imomoe.bean 2 | 3 | class PlayBean( 4 | override var type: String, 5 | override var actionUrl: String, 6 | var title: AnimeTitleBean, 7 | var episode: AnimeEpisodeDataBean, 8 | var data: List 9 | ) : BaseBean 10 | 11 | //番剧详情下方信息rv数据 12 | class AnimeTitleBean( 13 | override var type: String, 14 | override var actionUrl: String, 15 | var title: String 16 | ) : BaseBean -------------------------------------------------------------------------------- /app/src/main/java/com/skyd/imomoe/bean/SendDanmuBean.kt: -------------------------------------------------------------------------------- 1 | package com.skyd.imomoe.bean 2 | 3 | import com.google.gson.annotations.SerializedName 4 | import java.io.Serializable 5 | 6 | class SendDanmuBean( 7 | @SerializedName("author") 8 | var author: String, 9 | @SerializedName("color") 10 | var color: String, 11 | @SerializedName("player") 12 | var player: String, 13 | @SerializedName("referer") 14 | var referer: String, 15 | @SerializedName("size") 16 | var size: String, 17 | @SerializedName("text") 18 | var text: String, 19 | @SerializedName("time") 20 | var time: Double, 21 | @SerializedName("type") 22 | var type: String 23 | ) : Serializable 24 | -------------------------------------------------------------------------------- /app/src/main/java/com/skyd/imomoe/bean/SendDanmuResultBean.kt: -------------------------------------------------------------------------------- 1 | package com.skyd.imomoe.bean 2 | 3 | import com.google.gson.annotations.SerializedName 4 | 5 | class SendDanmuResultBean( 6 | override var type: String, 7 | override var actionUrl: String, 8 | @SerializedName("code") 9 | var code: Long, 10 | @SerializedName("msg") 11 | var message: String 12 | ) : BaseBean 13 | -------------------------------------------------------------------------------- /app/src/main/java/com/skyd/imomoe/bean/SkinBean.kt: -------------------------------------------------------------------------------- 1 | package com.skyd.imomoe.bean 2 | 3 | class SkinBean( 4 | override var type: String, 5 | override var actionUrl: String, 6 | var cover: Any, // Int颜色,或String图片链接 7 | var title: String, 8 | var using: Boolean, // 正在使用 9 | var skinPath: String, 10 | var skinSuffix: String 11 | ) : BaseBean 12 | -------------------------------------------------------------------------------- /app/src/main/java/com/skyd/imomoe/bean/TabBean.kt: -------------------------------------------------------------------------------- 1 | package com.skyd.imomoe.bean 2 | 3 | class TabBean( 4 | override var type: String, 5 | override var actionUrl: String, 6 | var url: String, 7 | var title: String 8 | ) : BaseBean 9 | -------------------------------------------------------------------------------- /app/src/main/java/com/skyd/imomoe/config/UnknownActionUrl.kt: -------------------------------------------------------------------------------- 1 | package com.skyd.imomoe.config 2 | 3 | object UnknownActionUrl { 4 | val actionMap: HashMap = HashMap() 5 | 6 | interface Action { 7 | fun action() 8 | } 9 | } -------------------------------------------------------------------------------- /app/src/main/java/com/skyd/imomoe/database/converter/AnimeDownloadStatusConverter.kt: -------------------------------------------------------------------------------- 1 | package com.skyd.imomoe.database.converter 2 | 3 | import androidx.room.TypeConverter 4 | import com.skyd.imomoe.util.downloadanime.AnimeDownloadStatus 5 | 6 | class AnimeDownloadStatusConverter { 7 | 8 | @TypeConverter 9 | fun intToEnum(status: Int?): AnimeDownloadStatus? = AnimeDownloadStatus.values()[status ?: 0] 10 | 11 | @TypeConverter 12 | fun enumToInt(animeDownloadStatus: AnimeDownloadStatus?): Int? = animeDownloadStatus?.ordinal 13 | 14 | } -------------------------------------------------------------------------------- /app/src/main/java/com/skyd/imomoe/database/converter/ImageBeanConverter.kt: -------------------------------------------------------------------------------- 1 | package com.skyd.imomoe.database.converter 2 | 3 | import androidx.room.TypeConverter 4 | import com.google.gson.Gson 5 | import com.skyd.imomoe.bean.ImageBean 6 | 7 | 8 | class ImageBeanConverter { 9 | 10 | @TypeConverter 11 | fun string2ImageBean(s: String?): ImageBean? = Gson().fromJson(s, ImageBean::class.java) 12 | 13 | @TypeConverter 14 | fun imageBean2String(imageBean: ImageBean?): String? = Gson().toJson(imageBean) 15 | 16 | } 17 | -------------------------------------------------------------------------------- /app/src/main/java/com/skyd/imomoe/database/entity/AnimeDownloadEntity.kt: -------------------------------------------------------------------------------- 1 | package com.skyd.imomoe.database.entity 2 | 3 | import androidx.room.ColumnInfo 4 | import androidx.room.Entity 5 | import androidx.room.PrimaryKey 6 | import java.io.Serializable 7 | 8 | @Entity(tableName = "animeDownloadList") 9 | class AnimeDownloadEntity( 10 | @PrimaryKey 11 | @ColumnInfo(name = "md5") 12 | var md5: String, //md5 13 | @ColumnInfo(name = "title") 14 | var title: String, 15 | @ColumnInfo(name = "fileName") 16 | var fileName: String? 17 | ) : Serializable { 18 | override fun equals(other: Any?): Boolean { 19 | return this.md5 == (other as AnimeDownloadEntity).md5 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /app/src/main/java/com/skyd/imomoe/model/impls/Util.kt: -------------------------------------------------------------------------------- 1 | package com.skyd.imomoe.model.impls 2 | 3 | import com.skyd.imomoe.model.DataSourceManager 4 | import com.skyd.imomoe.model.interfaces.IUtil 5 | import com.skyd.imomoe.util.Util 6 | 7 | class Util : IUtil { 8 | override fun getDetailLinkByEpisodeLink(episodeUrl: String): String { 9 | val const = DataSourceManager.getConst() ?: Const() 10 | return const.actionUrl.ANIME_DETAIL() + episodeUrl 11 | .replaceFirst(const.actionUrl.ANIME_PLAY(), "") 12 | .replaceFirst(Regex("-.*\\.html"), "") + Util.getWebsiteLinkSuffix() 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /app/src/main/java/com/skyd/imomoe/model/interfaces/IAnimeDetailModel.kt: -------------------------------------------------------------------------------- 1 | package com.skyd.imomoe.model.interfaces 2 | 3 | import com.skyd.imomoe.bean.IAnimeDetailBean 4 | import com.skyd.imomoe.bean.ImageBean 5 | import java.util.* 6 | 7 | /** 8 | * 获取番剧详情数据接口 9 | */ 10 | interface IAnimeDetailModel : IBase { 11 | /** 12 | * 获取番剧详情页数据 13 | * 14 | * @param partUrl 页面部分url,不为null 15 | * @return Triple,不可为null 16 | * ImageBean:番剧封面图片类,不可为null; 17 | * String:番剧名,不可为null; 18 | * ArrayList:详情页数据List,不可为null 19 | */ 20 | suspend fun getAnimeDetailData(partUrl: String): Triple> 21 | 22 | companion object { 23 | const val implName = "AnimeDetailModel" 24 | } 25 | } -------------------------------------------------------------------------------- /app/src/main/java/com/skyd/imomoe/model/interfaces/IAnimeShowModel.kt: -------------------------------------------------------------------------------- 1 | package com.skyd.imomoe.model.interfaces 2 | 3 | import com.skyd.imomoe.bean.IAnimeShowBean 4 | import com.skyd.imomoe.bean.PageNumberBean 5 | 6 | /** 7 | * 获取首页每个Tab下方内容的数据接口 8 | */ 9 | interface IAnimeShowModel : IBase { 10 | /** 11 | * 获取首页某一个Tab下的内容 12 | * 13 | * @param partUrl 页面部分url,不为null 14 | * @return Pair,不可为null 15 | * ArrayList:数据List,不可为null; 16 | * PageNumberBean:下一页数据地址Bean,可为null,为空则没有下一页 17 | */ 18 | suspend fun getAnimeShowData(partUrl: String): Pair, PageNumberBean?> 19 | 20 | companion object { 21 | const val implName = "AnimeShowModel" 22 | } 23 | } -------------------------------------------------------------------------------- /app/src/main/java/com/skyd/imomoe/model/interfaces/IBase.kt: -------------------------------------------------------------------------------- 1 | package com.skyd.imomoe.model.interfaces 2 | 3 | /** 4 | * 基接口 5 | */ 6 | interface IBase { 7 | companion object { 8 | /** 9 | * 标记实现类类名,实现类请勿更改 10 | */ 11 | const val implName = "Base" 12 | } 13 | } -------------------------------------------------------------------------------- /app/src/main/java/com/skyd/imomoe/model/interfaces/IEverydayAnimeWidgetModel.kt: -------------------------------------------------------------------------------- 1 | package com.skyd.imomoe.model.interfaces 2 | 3 | import com.skyd.imomoe.bean.AnimeCoverBean 4 | 5 | /** 6 | * 获取每日更新番剧桌面小组件的数据接口 7 | */ 8 | interface IEverydayAnimeWidgetModel : IBase { 9 | /** 10 | * 获取桌面小组件的每日番剧数据 11 | * 12 | * @return ArrayList,不可为null。每天更新番剧的ArrayList,其中共有七条 13 | */ 14 | fun getEverydayAnimeData(): ArrayList> 15 | 16 | companion object { 17 | const val implName = "EverydayAnimeWidgetModel" 18 | } 19 | } -------------------------------------------------------------------------------- /app/src/main/java/com/skyd/imomoe/model/interfaces/IHomeModel.kt: -------------------------------------------------------------------------------- 1 | package com.skyd.imomoe.model.interfaces 2 | 3 | import com.skyd.imomoe.bean.TabBean 4 | 5 | /** 6 | * 获取首页数据的接口 7 | */ 8 | interface IHomeModel : IBase { 9 | /** 10 | * 获取首页上方Tab数据 11 | * 12 | * @return ArrayList,不可为null。所有Tab的ArrayList 13 | */ 14 | suspend fun getAllTabData(): ArrayList 15 | 16 | companion object { 17 | const val implName = "HomeModel" 18 | } 19 | } -------------------------------------------------------------------------------- /app/src/main/java/com/skyd/imomoe/model/interfaces/IMonthAnimeModel.kt: -------------------------------------------------------------------------------- 1 | package com.skyd.imomoe.model.interfaces 2 | 3 | import com.skyd.imomoe.bean.AnimeCoverBean 4 | import com.skyd.imomoe.bean.PageNumberBean 5 | import java.util.* 6 | 7 | /** 8 | * 获取季度番剧数据的接口 9 | */ 10 | interface IMonthAnimeModel : IBase { 11 | /** 12 | * @param partUrl 页面部分url,不为null 13 | * @return Pair,不可为null 14 | * ArrayList:季度番剧数据ArrayList,不为null; 15 | * PageNumberBean:下一页数据地址,可为null,为空则没有下一页 16 | */ 17 | suspend fun getMonthAnimeData(partUrl: String): Pair, PageNumberBean?> 18 | 19 | companion object { 20 | const val implName = "MonthAnimeModel" 21 | } 22 | } -------------------------------------------------------------------------------- /app/src/main/java/com/skyd/imomoe/model/interfaces/IRankListModel.kt: -------------------------------------------------------------------------------- 1 | package com.skyd.imomoe.model.interfaces 2 | 3 | import com.skyd.imomoe.bean.AnimeCoverBean 4 | import com.skyd.imomoe.bean.PageNumberBean 5 | 6 | /** 7 | * 获取排行榜界面Tab数据的接口 8 | */ 9 | interface IRankListModel : IBase { 10 | /** 11 | * 获取排行榜列表数据 12 | * 13 | * @param partUrl 页面部分url,不为null 14 | * @return Pair,不可为null 15 | * List:排行榜列表数据List,不为null 16 | * PageNumberBean:下一页数据地址Bean,可为null,为空则没有下一页 17 | */ 18 | suspend fun getRankListData(partUrl: String): Pair, PageNumberBean?> 19 | 20 | companion object { 21 | const val implName = "RankListModel" 22 | } 23 | } -------------------------------------------------------------------------------- /app/src/main/java/com/skyd/imomoe/model/interfaces/IRankModel.kt: -------------------------------------------------------------------------------- 1 | package com.skyd.imomoe.model.interfaces 2 | 3 | import com.skyd.imomoe.bean.TabBean 4 | 5 | /** 6 | * 获取排行榜界面每个Tab详细数据的接口 7 | */ 8 | interface IRankModel : IBase { 9 | /** 10 | * 获取排行榜Tab数据 11 | * 12 | * @return ArrayList,不可为null。排行榜TabArrayList 13 | */ 14 | suspend fun getRankTabData(): ArrayList 15 | 16 | companion object { 17 | const val implName = "RankModel" 18 | } 19 | } -------------------------------------------------------------------------------- /app/src/main/java/com/skyd/imomoe/model/interfaces/ISearchModel.kt: -------------------------------------------------------------------------------- 1 | package com.skyd.imomoe.model.interfaces 2 | 3 | import com.skyd.imomoe.bean.AnimeCoverBean 4 | import com.skyd.imomoe.bean.PageNumberBean 5 | 6 | /** 7 | * 获取搜索界面数据的接口 8 | */ 9 | interface ISearchModel : IBase { 10 | /** 11 | * 获取搜索结果数据 12 | * 13 | * @param keyWord 搜索关键词,不为null 14 | * @param partUrl 搜索页面部分url,不为null 15 | * @return Pair,不可为null 16 | * ArrayList:搜索结果ArrayList,不为null 17 | * PageNumberBean:下一页数据地址Bean,可为null 18 | */ 19 | suspend fun getSearchData(keyWord: String, partUrl: String): Pair, PageNumberBean?> 20 | 21 | companion object { 22 | const val implName = "SearchModel" 23 | } 24 | } -------------------------------------------------------------------------------- /app/src/main/java/com/skyd/imomoe/model/interfaces/IUtil.kt: -------------------------------------------------------------------------------- 1 | package com.skyd.imomoe.model.interfaces 2 | 3 | /** 4 | * 工具类 5 | */ 6 | interface IUtil : IBase { 7 | /** 8 | * 通过播放页面的网址获取详情页面的网址 9 | * 10 | * @param episodeUrl 播放页面的网址,不为null 11 | * @return 详情页面的网址,不可为null 12 | */ 13 | fun getDetailLinkByEpisodeLink(episodeUrl: String): String 14 | 15 | companion object { 16 | const val implName = "Util" 17 | } 18 | } -------------------------------------------------------------------------------- /app/src/main/java/com/skyd/imomoe/model/util/JsoupUtil.kt: -------------------------------------------------------------------------------- 1 | package com.skyd.imomoe.model.util 2 | 3 | import com.skyd.imomoe.config.Const 4 | import org.jsoup.Jsoup 5 | import org.jsoup.nodes.Document 6 | import kotlin.random.Random 7 | 8 | object JsoupUtil { 9 | /** 10 | * 获取没有运行js的html 11 | */ 12 | fun getDocument(url: String): Document = 13 | Jsoup.connect(url) 14 | .userAgent(Const.Request.USER_AGENT_ARRAY[Random.nextInt(Const.Request.USER_AGENT_ARRAY.size)]) 15 | .get() 16 | } -------------------------------------------------------------------------------- /app/src/main/java/com/skyd/imomoe/net/service/DanmuService.kt: -------------------------------------------------------------------------------- 1 | package com.skyd.imomoe.net.service 2 | 3 | import com.skyd.imomoe.bean.SendDanmuResultBean 4 | import com.skyd.imomoe.config.Api 5 | import okhttp3.RequestBody 6 | import retrofit2.Call 7 | import retrofit2.http.Body 8 | import retrofit2.http.Headers 9 | import retrofit2.http.POST 10 | import retrofit2.http.Query 11 | 12 | interface DanmuService { 13 | @Headers(value = ["Content-Type: application/json", "Accept: application/json"]) 14 | @POST(Api.DANMU_URL) 15 | fun sendDanmu( 16 | @Query("ac") ac: String, 17 | @Query("key") key: String, 18 | @Body json: RequestBody 19 | ): Call 20 | } -------------------------------------------------------------------------------- /app/src/main/java/com/skyd/imomoe/net/service/UpdateService.kt: -------------------------------------------------------------------------------- 1 | package com.skyd.imomoe.net.service 2 | 3 | import com.skyd.imomoe.bean.UpdateBean 4 | import com.skyd.imomoe.config.Api 5 | import retrofit2.Call 6 | import retrofit2.http.GET 7 | 8 | interface UpdateService { 9 | @GET(Api.CHECK_UPDATE_URL) 10 | fun checkUpdate(): Call 11 | } -------------------------------------------------------------------------------- /app/src/main/java/com/skyd/imomoe/util/Debug.kt: -------------------------------------------------------------------------------- 1 | package com.skyd.imomoe.util 2 | 3 | import com.skyd.imomoe.BuildConfig 4 | 5 | /** 6 | * 只有debug包才会执行表达式 7 | */ 8 | fun debug(lambda: () -> Unit) { 9 | if (BuildConfig.DEBUG) { 10 | lambda.invoke() 11 | } 12 | } 13 | 14 | /** 15 | * 只有release包才会执行表达式 16 | */ 17 | fun release(lambda: () -> Unit) { 18 | if (!BuildConfig.DEBUG) { 19 | lambda.invoke() 20 | } 21 | } -------------------------------------------------------------------------------- /app/src/main/java/com/skyd/imomoe/util/File.kt: -------------------------------------------------------------------------------- 1 | package com.skyd.imomoe.util 2 | 3 | import android.net.Uri 4 | import android.os.Build 5 | import androidx.core.content.FileProvider 6 | import com.skyd.imomoe.App 7 | import java.io.File 8 | 9 | val File.uri: Uri 10 | get() = if (Build.VERSION.SDK_INT >= 24) { 11 | FileProvider.getUriForFile(App.context, "com.skyd.imomoe.fileProvider", this) 12 | } else { 13 | Uri.fromFile(this) 14 | } -------------------------------------------------------------------------------- /app/src/main/java/com/skyd/imomoe/util/SharedPreferences.kt: -------------------------------------------------------------------------------- 1 | package com.skyd.imomoe.util 2 | 3 | import android.content.Context 4 | import android.content.SharedPreferences 5 | 6 | fun Context.sharedPreferences(name: String = "App"): SharedPreferences = getSharedPreferences(name, Context.MODE_PRIVATE) 7 | fun SharedPreferences.editor(editorBuilder: SharedPreferences.Editor.() -> Unit) = edit().apply(editorBuilder).apply() -------------------------------------------------------------------------------- /app/src/main/java/com/skyd/imomoe/util/Text.kt: -------------------------------------------------------------------------------- 1 | package com.skyd.imomoe.util 2 | 3 | import com.skyd.imomoe.BuildConfig 4 | 5 | object Text { 6 | /** 7 | * 屏蔽带有某些关键字的弹幕 8 | * 9 | * @return 若屏蔽此字符串,则返回true,否则false 10 | */ 11 | fun String.shield(): Boolean { 12 | BuildConfig.SHIELD_TEXT.forEach { 13 | if (this.contains(it, true)) return true 14 | } 15 | return false 16 | } 17 | } -------------------------------------------------------------------------------- /app/src/main/java/com/skyd/imomoe/util/dlna/dmc/OnDeviceRegistryListener.java: -------------------------------------------------------------------------------- 1 | package com.skyd.imomoe.util.dlna.dmc; 2 | 3 | import org.fourthline.cling.model.meta.Device; 4 | 5 | /** 6 | * this listener call in UI thread. 7 | */ 8 | public interface OnDeviceRegistryListener { 9 | void onDeviceAdded(Device device); 10 | 11 | void onDeviceUpdated(Device device); 12 | 13 | void onDeviceRemoved(Device device); 14 | } 15 | -------------------------------------------------------------------------------- /app/src/main/java/com/skyd/imomoe/util/dlna/dms/IMediaContentDao.java: -------------------------------------------------------------------------------- 1 | package com.skyd.imomoe.util.dlna.dms; 2 | 3 | import android.content.Context; 4 | 5 | import androidx.annotation.NonNull; 6 | 7 | import org.fourthline.cling.support.model.item.Item; 8 | 9 | import java.util.List; 10 | 11 | interface IMediaContentDao { 12 | @NonNull 13 | List getImageItems(@NonNull Context context); 14 | 15 | @NonNull 16 | List getAudioItems(@NonNull Context context); 17 | 18 | @NonNull 19 | List getVideoItems(@NonNull Context context); 20 | } 21 | -------------------------------------------------------------------------------- /app/src/main/java/com/skyd/imomoe/util/dlna/dms/IResourceServer.java: -------------------------------------------------------------------------------- 1 | package com.skyd.imomoe.util.dlna.dms; 2 | 3 | interface IResourceServer { 4 | void startServer(); 5 | 6 | void stopServer(); 7 | } 8 | -------------------------------------------------------------------------------- /app/src/main/java/com/skyd/imomoe/util/dlna/dms/MediaItem.java: -------------------------------------------------------------------------------- 1 | package com.skyd.imomoe.util.dlna.dms; 2 | 3 | import org.fourthline.cling.support.model.DIDLObject; 4 | 5 | public interface MediaItem { 6 | String ROOT_ID = "0"; 7 | String AUDIO_ID = "10"; 8 | String VIDEO_ID = "20"; 9 | String IMAGE_ID = "30"; 10 | 11 | DIDLObject.Class AUDIO_CLASS = new DIDLObject.Class("object.container.audio"); 12 | DIDLObject.Class IMAGE_CLASS = new DIDLObject.Class("object.item.imageItem"); 13 | DIDLObject.Class VIDEO_CLASS = new DIDLObject.Class("object.container.video"); 14 | } 15 | -------------------------------------------------------------------------------- /app/src/main/java/com/skyd/imomoe/util/downloadanime/AnimeDownloadStatus.kt: -------------------------------------------------------------------------------- 1 | package com.skyd.imomoe.util.downloadanime 2 | 3 | enum class AnimeDownloadStatus { 4 | DOWNLOADING, // 正在下载更新 5 | COMPLETE, // 下载完成 6 | CANCEL, // 取消下载 7 | ERROR // 下载失败 8 | } -------------------------------------------------------------------------------- /app/src/main/java/com/skyd/imomoe/util/downloadanime/DownloadListener.kt: -------------------------------------------------------------------------------- 1 | package com.skyd.imomoe.util.downloadanime 2 | 3 | interface DownloadListener { 4 | fun complete(fileName: String) 5 | 6 | fun error() { 7 | } 8 | } -------------------------------------------------------------------------------- /app/src/main/java/com/skyd/imomoe/util/eventbus/Event.kt: -------------------------------------------------------------------------------- 1 | package com.skyd.imomoe.util.eventbus 2 | 3 | interface MessageEvent 4 | 5 | class RefreshEvent : MessageEvent 6 | 7 | // 根据actionUrl选择HomeFragment页面的某个Tab 8 | class SelectHomeTabEvent(var actionUrl: String) : MessageEvent -------------------------------------------------------------------------------- /app/src/main/java/com/skyd/imomoe/util/eventbus/EventBusSubscriber.kt: -------------------------------------------------------------------------------- 1 | package com.skyd.imomoe.util.eventbus 2 | 3 | interface EventBusSubscriber { 4 | fun onMessageEvent(event: MessageEvent) 5 | } 6 | -------------------------------------------------------------------------------- /app/src/main/java/com/skyd/imomoe/util/html/source/DefaultUICallback.kt: -------------------------------------------------------------------------------- 1 | package com.skyd.imomoe.util.html.source 2 | 3 | import android.view.View 4 | 5 | open class DefaultUICallback : GettingUICallback { 6 | override fun onGettingStart(webView: View?, url: String?) {} 7 | 8 | override fun onGettingFinish(webView: View?, url: String?) {} 9 | 10 | override fun onGettingSuccess(webView: View?, html: String) {} 11 | 12 | override fun onGettingError(webView: View?, url: String?, errorCode: Int) {} 13 | } -------------------------------------------------------------------------------- /app/src/main/java/com/skyd/imomoe/util/html/source/GettingCallback.kt: -------------------------------------------------------------------------------- 1 | package com.skyd.imomoe.util.html.source 2 | 3 | import android.view.View 4 | 5 | interface GettingCallback { 6 | /** 7 | * 获取源代码成功,只在{GettingWebView}调用 8 | * 9 | * @param webView 10 | * @param html 11 | */ 12 | fun onGettingSuccess(webView: View?, html: String) 13 | 14 | /** 15 | * 获取源代码失败 16 | * 17 | * @param webView 18 | * @param url 19 | * @param errorCode 20 | */ 21 | fun onGettingError(webView: View?, url: String?, errorCode: Int) 22 | } -------------------------------------------------------------------------------- /app/src/main/java/com/skyd/imomoe/util/html/source/GettingUICallback.kt: -------------------------------------------------------------------------------- 1 | package com.skyd.imomoe.util.html.source 2 | 3 | import android.view.View 4 | 5 | interface GettingUICallback : GettingCallback { 6 | /** 7 | * 开始获取源代码 8 | * @param webView 9 | * @param url 10 | */ 11 | fun onGettingStart(webView: View?, url: String?) 12 | 13 | /** 14 | * 结束获取源代码 15 | * @param webView 16 | * @param url 17 | */ 18 | fun onGettingFinish(webView: View?, url: String?) 19 | } -------------------------------------------------------------------------------- /app/src/main/java/com/skyd/imomoe/util/skin/SkinUtil.kt: -------------------------------------------------------------------------------- 1 | package com.skyd.imomoe.util.skin 2 | 3 | 4 | object SkinUtil { 5 | fun initCustomAttrIds() { 6 | // SkinManager.addCustomAttrIds(R.attr.menu, object : SkinManager.CustomSetSkinTagListener { 7 | // override fun setSkinTag(attrId: Int, resId: Int): Pair? { 8 | // if (resId != -1) return Pair( 9 | // MenuAttr.TAG, 10 | // MenuAttr().apply { attrResourceRefId = resId }) 11 | // return null 12 | // } 13 | // }) 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /app/src/main/java/com/skyd/imomoe/util/update/AppUpdateStatus.kt: -------------------------------------------------------------------------------- 1 | package com.skyd.imomoe.util.update 2 | 3 | enum class AppUpdateStatus { 4 | UNCHECK, // 未检查 5 | DATED, // 当前版本已过时,建议更新 6 | VALID, // 当前是最新版本 7 | CHECKING, // 检查更新中 8 | LATER, // 用户选择暂不更新 9 | ERROR // 任何时候出错,建议RECHECK,但可能是客户端或服务端的网络问题 10 | } -------------------------------------------------------------------------------- /app/src/main/java/com/skyd/imomoe/view/adapter/SerializableRecycledViewPool.kt: -------------------------------------------------------------------------------- 1 | package com.skyd.imomoe.view.adapter 2 | 3 | import androidx.recyclerview.widget.RecyclerView 4 | import java.io.Serializable 5 | 6 | class SerializableRecycledViewPool : RecyclerView.RecycledViewPool(), Serializable -------------------------------------------------------------------------------- /app/src/main/java/com/skyd/imomoe/view/adapter/SkinRvAdapter.kt: -------------------------------------------------------------------------------- 1 | package com.skyd.imomoe.view.adapter 2 | 3 | import android.view.ViewGroup 4 | import androidx.recyclerview.widget.RecyclerView 5 | import com.skyd.skin.SkinManager 6 | import com.skyd.imomoe.util.ViewHolderUtil.Companion.getViewHolder 7 | 8 | abstract class SkinRvAdapter : RecyclerView.Adapter() { 9 | override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { 10 | return getViewHolder(parent, viewType).apply { 11 | SkinManager.setSkin(itemView) 12 | } 13 | } 14 | 15 | override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { 16 | SkinManager.applyViews(holder.itemView) 17 | } 18 | } -------------------------------------------------------------------------------- /app/src/main/java/com/skyd/imomoe/view/adapter/spansize/SkinSpanSize.kt: -------------------------------------------------------------------------------- 1 | package com.skyd.imomoe.view.adapter.spansize 2 | 3 | import androidx.recyclerview.widget.GridLayoutManager 4 | import androidx.recyclerview.widget.RecyclerView 5 | import com.skyd.imomoe.config.Const.ViewHolderTypeInt 6 | 7 | class SkinSpanSize(val adapter: RecyclerView.Adapter) : 8 | GridLayoutManager.SpanSizeLookup() { 9 | override fun getSpanSize(position: Int): Int { 10 | return when (adapter.getItemViewType(position)) { 11 | ViewHolderTypeInt.HEADER_1 -> 4 12 | else -> 1 13 | } 14 | } 15 | } -------------------------------------------------------------------------------- /app/src/main/java/com/skyd/imomoe/view/component/bannerview/BannerUtil.kt: -------------------------------------------------------------------------------- 1 | package com.skyd.imomoe.view.component.bannerview 2 | 3 | /** 4 | * Created by Sky_D on 2021-02-08. 5 | */ 6 | object BannerUtil { 7 | fun getPosition(pos: Int, count: Int) = if (count != 0) when (pos) { 8 | 0 -> { 9 | count - 1 10 | } 11 | count + 1 -> { 12 | 0 13 | } 14 | else -> { 15 | pos - 1 16 | } 17 | } else 0 18 | 19 | fun getRealPosition(pos: Int) = pos + 1 20 | } -------------------------------------------------------------------------------- /app/src/main/java/com/skyd/imomoe/view/component/bannerview/indicator/Indicator.kt: -------------------------------------------------------------------------------- 1 | package com.skyd.imomoe.view.component.bannerview.indicator 2 | 3 | import android.view.View 4 | 5 | /** 6 | * Created by Sky_D on 2021-02-08. 7 | */ 8 | interface Indicator { 9 | fun getView(): View? 10 | 11 | fun onChanged(itemCount: Int, currentPosition: Int) 12 | 13 | fun onPageSelected(position: Int) 14 | 15 | fun onPageScrolled(position: Int, positionOffset: Float, positionOffsetPixels: Int) 16 | 17 | fun onPageScrollStateChanged(state: Int) 18 | } -------------------------------------------------------------------------------- /app/src/main/java/com/skyd/imomoe/view/component/bannerview/indicator/SimpleIndicator.kt: -------------------------------------------------------------------------------- 1 | package com.skyd.imomoe.view.component.bannerview.indicator 2 | 3 | import android.view.View 4 | 5 | /** 6 | * Created by Sky_D on 2021-02-08. 7 | */ 8 | class SimpleIndicator : Indicator { 9 | override fun getView(): View? { 10 | return null 11 | } 12 | 13 | override fun onChanged(itemCount: Int, currentPosition: Int) { 14 | } 15 | 16 | override fun onPageSelected(position: Int) { 17 | } 18 | 19 | override fun onPageScrolled(position: Int, positionOffset: Float, positionOffsetPixels: Int) { 20 | } 21 | 22 | override fun onPageScrollStateChanged(state: Int) { 23 | } 24 | } -------------------------------------------------------------------------------- /app/src/main/java/com/skyd/imomoe/view/component/player/MyVideoAllCallBack.kt: -------------------------------------------------------------------------------- 1 | package com.skyd.imomoe.view.component.player 2 | 3 | import com.shuyu.gsyvideoplayer.listener.VideoAllCallBack 4 | 5 | interface MyVideoAllCallBack : VideoAllCallBack { 6 | fun onVideoPause() 7 | 8 | fun onVideoResume() 9 | 10 | fun onVideoSizeChanged() 11 | } -------------------------------------------------------------------------------- /app/src/main/java/com/skyd/imomoe/view/component/textview/TypefaceUtil.kt: -------------------------------------------------------------------------------- 1 | package com.skyd.imomoe.view.component.textview 2 | 3 | import android.graphics.Typeface 4 | import com.skyd.imomoe.App 5 | 6 | object TypefaceUtil { 7 | const val BPR_TYPEFACE = 1 8 | 9 | private var bPRTypeface: Typeface? = null 10 | 11 | fun getBPRTypeface(): Typeface { 12 | bPRTypeface?.let { 13 | return it 14 | } 15 | return try { 16 | Typeface.createFromAsset(App.context.assets, "fonts/BPreplay.otf") 17 | } catch (e: RuntimeException) { 18 | Typeface.DEFAULT 19 | } 20 | } 21 | } -------------------------------------------------------------------------------- /app/src/main/java/com/skyd/imomoe/viewmodel/UpnpViewModel.kt: -------------------------------------------------------------------------------- 1 | package com.skyd.imomoe.viewmodel 2 | 3 | import androidx.lifecycle.ViewModel 4 | import org.fourthline.cling.model.meta.Device 5 | import java.util.* 6 | 7 | class UpnpViewModel : ViewModel() { 8 | var deviceList: MutableList?> = ArrayList() 9 | 10 | companion object { 11 | const val TAG = "UpnpViewModel" 12 | } 13 | } -------------------------------------------------------------------------------- /app/src/main/res/anim/anl_push_bottom_in.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/anim/anl_push_bottom_out.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/anim/anl_push_left_in.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/anim/anl_push_left_out.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/anim/anl_push_top_in.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/anim/anl_push_top_out.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/anim/anl_push_up_out.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 9 | 10 | 14 | 15 | -------------------------------------------------------------------------------- /app/src/main/res/anim/anl_stay.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/ic_christmas_hat.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/androiddevnotesforks/Imomoe/bd3b3a0e3f5211ccd57cf6d384e7c60bc5efc45f/app/src/main/res/drawable-xxxhdpi/ic_christmas_hat.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/ic_everyday_anime_widget.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/androiddevnotesforks/Imomoe/bd3b3a0e3f5211ccd57cf6d384e7c60bc5efc45f/app/src/main/res/drawable-xxxhdpi/ic_everyday_anime_widget.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/ic_spinner_bg_1_skin.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/androiddevnotesforks/Imomoe/bd3b3a0e3f5211ccd57cf6d384e7c60bc5efc45f/app/src/main/res/drawable-xxxhdpi/ic_spinner_bg_1_skin.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/bg_circle_main_color_2_50_skin.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_access_time_main_color_24_skin.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_arrow_back_ios_white_24.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_arrow_back_white_24.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_arrow_circle_down_main_color_2_24_skin.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_arrow_circle_down_white_24_skin.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_arrow_forward_ios_main_color_12_skin.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_arrow_right_main_color_2_24_skin.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_bar_chart_white_24_skin.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_clear_main_color_24_skin.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_delete_main_color_2_24_skin.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_delete_white_24.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_home_main_color_24_skin.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_home_main_color_2_24_skin.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_info_white_24.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_keyboard_arrow_down_main_color_2_24_skin.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_link_main_color_2_34_skin.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_more_vert_white_24.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_music_note_white_24.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_pause_circle_white_24.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_pause_white_24.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_play_circle_main_color_2_24_skin.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_play_circle_white_24.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_play_white_24.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_replay_white_24_skin.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_search_main_color_24_skin.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_share_white_24.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_skip_next_white_24.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_star_border_main_color_2_24_skin.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_star_border_white_24.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_star_main_color_2_24_skin.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_star_white_24_skin.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_storage_main_color_2_24_skin.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_swap_horiz_white_24_skin.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_swap_vert_white_24_skin.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_warning_main_color_3_24_skin.xml: -------------------------------------------------------------------------------- 1 | 6 | 11 | 14 | 15 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/layerlist_shortcuts_download_24.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 15 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/layerlist_shortcuts_everyday_24.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 15 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/layerlist_shortcuts_favorite_24.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 15 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/seek_bar_thumb_1_skin.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/selector_everyday_anime_button_skin.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/selector_home_button_skin.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/selector_horizontal_reverse_button_skin.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/selector_more_button_skin.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/selector_no_reverse_button_skin.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/selector_spinner_1_skin.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/selector_turn_on_off_danmu_skin.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/selector_vertical_reverse_button_skin.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/shape_circle_corner_bottom_dialog_white_12_skin.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 7 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/shape_circle_corner_edge_main_color_2_ripper_5_skin.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/shape_circle_corner_edge_main_color_ripper_50_skin.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/shape_circle_corner_edge_white_ripper_5_skin.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/shape_circle_corner_white_50_skin.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/shape_circle_corner_white_ripper_5.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/shape_fill_circle_corner_coppery_50.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/shape_fill_circle_corner_danmu_6.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/shape_fill_circle_corner_golden_50.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/shape_fill_circle_corner_main_color_2_50_skin.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/shape_fill_circle_corner_silvery_50.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/shape_gray_transparent_2_angle_90.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/shape_gray_transparent_angle_270.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/shape_gray_transparent_angle_90.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/shape_widget_everyday_anime_body.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/shape_widget_everyday_anime_header.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_simple_play.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/layout/item_anime_episode_2.xml: -------------------------------------------------------------------------------- 1 | 2 | 15 | -------------------------------------------------------------------------------- /app/src/main/res/layout/item_anime_episode_flow_layout_1.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/layout/item_anime_episode_flow_layout_2.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/layout/item_grid_recycler_view_1.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/layout/item_header_1.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/layout/item_player_list_item_1.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/layout/item_search_history_header_1.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/layout/toast_1.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/layout/upush_bar_image_notification.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/androiddevnotesforks/Imomoe/bd3b3a0e3f5211ccd57cf6d384e7c60bc5efc45f/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/androiddevnotesforks/Imomoe/bd3b3a0e3f5211ccd57cf6d384e7c60bc5efc45f/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/androiddevnotesforks/Imomoe/bd3b3a0e3f5211ccd57cf6d384e7c60bc5efc45f/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/raw/keep.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/values-night/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #000000 4 | #000000 5 | #B5B5B5 6 | #B5B5B5 7 | #B5B5B5 8 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/values/ic_launcher_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #FC719B 4 | -------------------------------------------------------------------------------- /app/src/main/res/values/ids.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /app/src/main/res/xml/file_paths.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | 8 | 11 | 12 | 15 | 16 | -------------------------------------------------------------------------------- /app/src/main/res/xml/network_security_config.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/xml/widget_everyday_anime.xml: -------------------------------------------------------------------------------- 1 | 2 | 10 | -------------------------------------------------------------------------------- /app/src/test/java/com/skyd/imomoe/ExampleUnitTest.kt: -------------------------------------------------------------------------------- 1 | package com.skyd.imomoe 2 | 3 | import org.junit.Test 4 | 5 | import org.junit.Assert.* 6 | 7 | /** 8 | * Example local unit test, which will execute on the development machine (host). 9 | * 10 | * See [testing documentation](http://d.android.com/tools/testing). 11 | */ 12 | class ExampleUnitTest { 13 | @Test 14 | fun addition_isCorrect() { 15 | assertEquals(4, 2 + 2) 16 | } 17 | } -------------------------------------------------------------------------------- /doc/about_http_security.md: -------------------------------------------------------------------------------- 1 | # 关于http网站或数据源的安全问题 2 | 3 | - #### 背景 4 | 5 | 作者在某一天发现访问数据源网站(http)会302重定向到一个“黄色诈骗网站”,经研究后发现是我的**DNS被劫持了**。 6 | 7 | - #### DNS是什么? 8 | 9 | DNS的功能是把域名解析成IP地址,从而进行请求。 10 | 11 | - #### DNS被劫持后有什么危害? 12 | 13 | 当DNS被劫持后,将域名解析为IP时会返回一个**虚假的IP**,此IP不仅会让APP**无法加载数据**,如果使用浏览器访问此IP(或此域名),还会把浏览器302重定向到了“黄色诈骗网站”,**诱导**浏览器**下载诈骗APP**。因此当您**访问http的数据源网站**时,**务必小心**,**不要下载来历不明APP和Jar包**。 14 | 15 | - #### DNS被劫持后的初步解决方法? 16 | 17 | 尝试设置网络代理或换用其他网络。 18 | -------------------------------------------------------------------------------- /doc/customdatasource/image/customdatasource.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/androiddevnotesforks/Imomoe/bd3b3a0e3f5211ccd57cf6d384e7c60bc5efc45f/doc/customdatasource/image/customdatasource.jpg -------------------------------------------------------------------------------- /doc/customdatasource/image/customdatasource_2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/androiddevnotesforks/Imomoe/bd3b3a0e3f5211ccd57cf6d384e7c60bc5efc45f/doc/customdatasource/image/customdatasource_2.jpg -------------------------------------------------------------------------------- /doc/customdatasource/image/normal.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/androiddevnotesforks/Imomoe/bd3b3a0e3f5211ccd57cf6d384e7c60bc5efc45f/doc/customdatasource/image/normal.jpg -------------------------------------------------------------------------------- /doc/customdatasource/sample/custom/CustomDataSource.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/androiddevnotesforks/Imomoe/bd3b3a0e3f5211ccd57cf6d384e7c60bc5efc45f/doc/customdatasource/sample/custom/CustomDataSource.jar -------------------------------------------------------------------------------- /doc/customdatasource/sample/custom/CustomUtil.kt: -------------------------------------------------------------------------------- 1 | package com.skyd.imomoe.model.impls.custom 2 | 3 | import com.skyd.imomoe.model.interfaces.IUtil 4 | import com.skyd.imomoe.util.Util 5 | 6 | class CustomUtil : IUtil { 7 | override fun getDetailLinkByEpisodeLink(episodeUrl: String): String { 8 | val const = CustomConst() 9 | return const.actionUrl.ANIME_DETAIL() + episodeUrl 10 | .replaceFirst(const.actionUrl.ANIME_PLAY(), "") 11 | .replaceFirst(Regex("-.*-.*\\.html"), "") + Util.getWebsiteLinkSuffix() 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/androiddevnotesforks/Imomoe/bd3b3a0e3f5211ccd57cf6d384e7c60bc5efc45f/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Sat Aug 21 11:08:43 GMT+08:00 2021 2 | distributionBase=GRADLE_USER_HOME 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-6.9-bin.zip 4 | distributionPath=wrapper/dists 5 | zipStorePath=wrapper/dists 6 | zipStoreBase=GRADLE_USER_HOME 7 | -------------------------------------------------------------------------------- /image/icon.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/androiddevnotesforks/Imomoe/bd3b3a0e3f5211ccd57cf6d384e7c60bc5efc45f/image/icon.psd -------------------------------------------------------------------------------- /image/icon_round.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/androiddevnotesforks/Imomoe/bd3b3a0e3f5211ccd57cf6d384e7c60bc5efc45f/image/icon_round.psd -------------------------------------------------------------------------------- /image/readme_cover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/androiddevnotesforks/Imomoe/bd3b3a0e3f5211ccd57cf6d384e7c60bc5efc45f/image/readme_cover.png -------------------------------------------------------------------------------- /image/readme_cover.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/androiddevnotesforks/Imomoe/bd3b3a0e3f5211ccd57cf6d384e7c60bc5efc45f/image/readme_cover.psd -------------------------------------------------------------------------------- /image/spinner.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/androiddevnotesforks/Imomoe/bd3b3a0e3f5211ccd57cf6d384e7c60bc5efc45f/image/spinner.psd -------------------------------------------------------------------------------- /screenshot/anime_detail.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/androiddevnotesforks/Imomoe/bd3b3a0e3f5211ccd57cf6d384e7c60bc5efc45f/screenshot/anime_detail.jpg -------------------------------------------------------------------------------- /screenshot/classify.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/androiddevnotesforks/Imomoe/bd3b3a0e3f5211ccd57cf6d384e7c60bc5efc45f/screenshot/classify.jpg -------------------------------------------------------------------------------- /screenshot/everyday_anime.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/androiddevnotesforks/Imomoe/bd3b3a0e3f5211ccd57cf6d384e7c60bc5efc45f/screenshot/everyday_anime.jpg -------------------------------------------------------------------------------- /screenshot/favorite.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/androiddevnotesforks/Imomoe/bd3b3a0e3f5211ccd57cf6d384e7c60bc5efc45f/screenshot/favorite.jpg -------------------------------------------------------------------------------- /screenshot/history.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/androiddevnotesforks/Imomoe/bd3b3a0e3f5211ccd57cf6d384e7c60bc5efc45f/screenshot/history.jpg -------------------------------------------------------------------------------- /screenshot/main.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/androiddevnotesforks/Imomoe/bd3b3a0e3f5211ccd57cf6d384e7c60bc5efc45f/screenshot/main.jpg -------------------------------------------------------------------------------- /screenshot/new_anime.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/androiddevnotesforks/Imomoe/bd3b3a0e3f5211ccd57cf6d384e7c60bc5efc45f/screenshot/new_anime.jpg -------------------------------------------------------------------------------- /screenshot/play.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/androiddevnotesforks/Imomoe/bd3b3a0e3f5211ccd57cf6d384e7c60bc5efc45f/screenshot/play.jpg -------------------------------------------------------------------------------- /screenshot/player.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/androiddevnotesforks/Imomoe/bd3b3a0e3f5211ccd57cf6d384e7c60bc5efc45f/screenshot/player.jpg -------------------------------------------------------------------------------- /screenshot/rank.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/androiddevnotesforks/Imomoe/bd3b3a0e3f5211ccd57cf6d384e7c60bc5efc45f/screenshot/rank.jpg -------------------------------------------------------------------------------- /screenshot/search.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/androiddevnotesforks/Imomoe/bd3b3a0e3f5211ccd57cf6d384e7c60bc5efc45f/screenshot/search.jpg -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app' 2 | include ':skin' 3 | include ':skin_dark' 4 | include ':skin_blue' 5 | include ':skin_lemon' 6 | include ':skin_sweat_soybean' 7 | rootProject.name = "樱花动漫" -------------------------------------------------------------------------------- /skin/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /skin/consumer-rules.pro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/androiddevnotesforks/Imomoe/bd3b3a0e3f5211ccd57cf6d384e7c60bc5efc45f/skin/consumer-rules.pro -------------------------------------------------------------------------------- /skin/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /skin/src/main/java/com/skyd/skin/core/SkinAttrsSet.kt: -------------------------------------------------------------------------------- 1 | package com.skyd.skin.core 2 | 3 | import com.skyd.skin.core.attrs.SkinAttr 4 | 5 | /** 6 | * 存储所有的属性集合 7 | */ 8 | class SkinAttrsSet { 9 | var attrsMap: HashMap = HashMap() 10 | 11 | override fun toString(): String { 12 | return attrsMap.toString() 13 | } 14 | } -------------------------------------------------------------------------------- /skin/src/main/java/com/skyd/skin/core/SkinBaseFragment.kt: -------------------------------------------------------------------------------- 1 | package com.skyd.skin.core 2 | 3 | import android.os.Bundle 4 | import androidx.fragment.app.Fragment 5 | import android.view.View 6 | import com.skyd.skin.SkinManager 7 | import com.skyd.skin.core.listeners.ChangeSkinListener 8 | 9 | open class SkinBaseFragment : Fragment(), ChangeSkinListener { 10 | 11 | override fun onViewCreated(view: View, savedInstanceState: Bundle?) { 12 | super.onViewCreated(view, savedInstanceState) 13 | SkinManager.addListener(this) 14 | } 15 | 16 | override fun onDestroyView() { 17 | super.onDestroyView() 18 | SkinManager.removeListener(this) 19 | } 20 | 21 | override fun onChangeSkin() {} 22 | 23 | } -------------------------------------------------------------------------------- /skin/src/main/java/com/skyd/skin/core/SkinCache.kt: -------------------------------------------------------------------------------- 1 | package com.skyd.skin.core 2 | 3 | import android.content.res.Resources 4 | 5 | class SkinCache( 6 | val skinResource: Resources, 7 | val skinPackageName: String, 8 | val skinSuffix: String 9 | ) -------------------------------------------------------------------------------- /skin/src/main/java/com/skyd/skin/core/attrs/BackgroundAttr.kt: -------------------------------------------------------------------------------- 1 | package com.skyd.skin.core.attrs 2 | 3 | import android.util.Log 4 | import android.view.View 5 | import androidx.constraintlayout.widget.ConstraintLayout 6 | import com.skyd.skin.SkinManager 7 | 8 | 9 | class BackgroundAttr : SkinAttr() { 10 | companion object { 11 | const val TAG = "background" 12 | } 13 | 14 | override fun applySkin(view: View) { 15 | if (attrResourceRefId != -1) SkinManager.setBackground(view, attrResourceRefId) 16 | } 17 | } -------------------------------------------------------------------------------- /skin/src/main/java/com/skyd/skin/core/attrs/BackgroundTintAttr.kt: -------------------------------------------------------------------------------- 1 | package com.skyd.skin.core.attrs 2 | 3 | import android.view.View 4 | import com.skyd.skin.SkinManager 5 | 6 | class BackgroundTintAttr : SkinAttr() { 7 | companion object { 8 | const val TAG = "backgroundTint" 9 | } 10 | 11 | override fun applySkin(view: View) { 12 | if (attrResourceRefId != -1) SkinManager.setBackgroundTint(view, attrResourceRefId) 13 | } 14 | } -------------------------------------------------------------------------------- /skin/src/main/java/com/skyd/skin/core/attrs/ButtonTintAttr.kt: -------------------------------------------------------------------------------- 1 | package com.skyd.skin.core.attrs 2 | 3 | import android.view.View 4 | import android.widget.CompoundButton 5 | import com.skyd.skin.SkinManager 6 | 7 | class ButtonTintAttr : SkinAttr() { 8 | companion object { 9 | const val TAG = "buttonTint" 10 | } 11 | 12 | override fun applySkin(view: View) { 13 | if (attrResourceRefId != -1 && view is CompoundButton) 14 | SkinManager.setButtonTint(view, attrResourceRefId) 15 | } 16 | } -------------------------------------------------------------------------------- /skin/src/main/java/com/skyd/skin/core/attrs/CardBackgroundColorAttr.kt: -------------------------------------------------------------------------------- 1 | package com.skyd.skin.core.attrs 2 | 3 | import android.view.View 4 | import androidx.cardview.widget.CardView 5 | import com.skyd.skin.SkinManager 6 | 7 | class CardBackgroundColorAttr : SkinAttr() { 8 | companion object { 9 | const val TAG = "cardBackgroundColor" 10 | } 11 | 12 | override fun applySkin(view: View) { 13 | if (attrResourceRefId != -1 && view is CardView) 14 | SkinManager.setCardBackgroundColor(view, attrResourceRefId) 15 | } 16 | } -------------------------------------------------------------------------------- /skin/src/main/java/com/skyd/skin/core/attrs/ColorPrimaryAttr.kt: -------------------------------------------------------------------------------- 1 | package com.skyd.skin.core.attrs 2 | 3 | import android.view.View 4 | import androidx.swiperefreshlayout.widget.SwipeRefreshLayout 5 | import com.skyd.skin.SkinManager 6 | 7 | 8 | class ColorPrimaryAttr : SkinAttr() { 9 | companion object { 10 | const val TAG = "colorPrimary" 11 | } 12 | 13 | override fun applySkin(view: View) { 14 | if (attrResourceRefId == -1) return 15 | // 按需添加 16 | when (view) { 17 | is SwipeRefreshLayout -> { 18 | SkinManager.setColorSchemeColors(view, attrResourceRefId) 19 | } 20 | } 21 | } 22 | } -------------------------------------------------------------------------------- /skin/src/main/java/com/skyd/skin/core/attrs/DrawableEndAttr.kt: -------------------------------------------------------------------------------- 1 | package com.skyd.skin.core.attrs 2 | 3 | import android.view.View 4 | import android.widget.TextView 5 | import com.skyd.skin.SkinManager 6 | 7 | 8 | class DrawableEndAttr : SkinAttr() { 9 | companion object { 10 | const val TAG = "drawableEnd" 11 | } 12 | 13 | override fun applySkin(view: View) { 14 | if (view is TextView && attrResourceRefId != -1) { 15 | SkinManager.setDrawableEnd(view, attrResourceRefId) 16 | } 17 | } 18 | } -------------------------------------------------------------------------------- /skin/src/main/java/com/skyd/skin/core/attrs/DrawableStartAttr.kt: -------------------------------------------------------------------------------- 1 | package com.skyd.skin.core.attrs 2 | 3 | import android.view.View 4 | import android.widget.TextView 5 | import com.skyd.skin.SkinManager 6 | 7 | 8 | class DrawableStartAttr : SkinAttr() { 9 | companion object { 10 | const val TAG = "drawableStart" 11 | } 12 | 13 | override fun applySkin(view: View) { 14 | if (view is TextView && attrResourceRefId != -1) { 15 | SkinManager.setDrawableStart(view, attrResourceRefId) 16 | } 17 | } 18 | } -------------------------------------------------------------------------------- /skin/src/main/java/com/skyd/skin/core/attrs/DrawableTopCompatAttr.kt: -------------------------------------------------------------------------------- 1 | package com.skyd.skin.core.attrs 2 | 3 | import android.view.View 4 | import android.widget.TextView 5 | import com.skyd.skin.SkinManager 6 | 7 | 8 | class DrawableTopCompatAttr : SkinAttr() { 9 | companion object { 10 | const val TAG = "drawableTopCompat" 11 | } 12 | 13 | override fun applySkin(view: View) { 14 | if (view is TextView && attrResourceRefId != -1) { 15 | SkinManager.setDrawableTopCompat(view, attrResourceRefId) 16 | } 17 | } 18 | } -------------------------------------------------------------------------------- /skin/src/main/java/com/skyd/skin/core/attrs/ImageViewTintAttr.kt: -------------------------------------------------------------------------------- 1 | package com.skyd.skin.core.attrs 2 | 3 | import android.view.View 4 | import android.widget.ImageView 5 | import com.skyd.skin.SkinManager 6 | 7 | 8 | class ImageViewTintAttr : SkinAttr() { 9 | companion object { 10 | const val TAG = "imageViewTint" 11 | } 12 | 13 | override fun applySkin(view: View) { 14 | if (view is ImageView && attrResourceRefId != -1) { 15 | SkinManager.setImageViewTint(view, attrResourceRefId) 16 | } 17 | } 18 | } -------------------------------------------------------------------------------- /skin/src/main/java/com/skyd/skin/core/attrs/IndeterminateTintAttr.kt: -------------------------------------------------------------------------------- 1 | package com.skyd.skin.core.attrs 2 | 3 | import android.view.View 4 | import android.widget.ProgressBar 5 | import com.skyd.skin.SkinManager 6 | 7 | class IndeterminateTintAttr : SkinAttr() { 8 | companion object { 9 | const val TAG = "indeterminateTint" 10 | } 11 | 12 | override fun applySkin(view: View) { 13 | if (attrResourceRefId != -1 && view is ProgressBar) 14 | SkinManager.setIndeterminateTint(view, attrResourceRefId) 15 | } 16 | } -------------------------------------------------------------------------------- /skin/src/main/java/com/skyd/skin/core/attrs/ProgressDrawableAttr.kt: -------------------------------------------------------------------------------- 1 | package com.skyd.skin.core.attrs 2 | 3 | import android.view.View 4 | import android.widget.ProgressBar 5 | import com.skyd.skin.SkinManager 6 | 7 | 8 | class ProgressDrawableAttr : SkinAttr() { 9 | companion object { 10 | const val TAG = "progressDrawable" 11 | } 12 | 13 | override fun applySkin(view: View) { 14 | if (attrResourceRefId != -1 && view is ProgressBar) { 15 | SkinManager.setProgressDrawable(view, attrResourceRefId) 16 | } 17 | } 18 | } -------------------------------------------------------------------------------- /skin/src/main/java/com/skyd/skin/core/attrs/ScrollbarThumbVerticalAttr.kt: -------------------------------------------------------------------------------- 1 | package com.skyd.skin.core.attrs 2 | 3 | import android.os.Build 4 | import android.view.View 5 | import com.skyd.skin.SkinManager 6 | 7 | 8 | class ScrollbarThumbVerticalAttr : SkinAttr() { 9 | companion object { 10 | const val TAG = "scrollbarThumbVertical" 11 | } 12 | 13 | override fun applySkin(view: View) { 14 | if (attrResourceRefId != -1) if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { 15 | SkinManager.setScrollbarThumbVertical(view, attrResourceRefId) 16 | } 17 | } 18 | } -------------------------------------------------------------------------------- /skin/src/main/java/com/skyd/skin/core/attrs/SkinAttr.kt: -------------------------------------------------------------------------------- 1 | package com.skyd.skin.core.attrs 2 | 3 | import android.view.View 4 | 5 | abstract class SkinAttr : Cloneable { 6 | 7 | // the integer value of the "id" attribute 8 | var attrResourceRefId = -1 9 | 10 | abstract fun applySkin(view: View) 11 | 12 | } -------------------------------------------------------------------------------- /skin/src/main/java/com/skyd/skin/core/attrs/SrcAttr.kt: -------------------------------------------------------------------------------- 1 | package com.skyd.skin.core.attrs 2 | 3 | import android.view.View 4 | import android.widget.ImageView 5 | import com.skyd.skin.SkinManager 6 | 7 | 8 | class SrcAttr : SkinAttr() { 9 | companion object { 10 | const val TAG = "src" 11 | } 12 | 13 | override fun applySkin(view: View) { 14 | if (view is ImageView && attrResourceRefId != -1) { 15 | SkinManager.setSrc(view, attrResourceRefId) 16 | } 17 | } 18 | } -------------------------------------------------------------------------------- /skin/src/main/java/com/skyd/skin/core/attrs/TabIndicatorColorAttr.kt: -------------------------------------------------------------------------------- 1 | package com.skyd.skin.core.attrs 2 | 3 | import android.view.View 4 | import com.skyd.skin.SkinManager 5 | import com.google.android.material.tabs.TabLayout 6 | 7 | 8 | class TabIndicatorColorAttr : SkinAttr() { 9 | companion object { 10 | const val TAG = "tabIndicatorColor" 11 | } 12 | 13 | override fun applySkin(view: View) { 14 | if (view is TabLayout && attrResourceRefId != -1) { 15 | SkinManager.setTabIndicatorColor(view, attrResourceRefId) 16 | } 17 | } 18 | } -------------------------------------------------------------------------------- /skin/src/main/java/com/skyd/skin/core/attrs/TabTextColorAttr.kt: -------------------------------------------------------------------------------- 1 | package com.skyd.skin.core.attrs 2 | 3 | import android.view.View 4 | import com.skyd.skin.SkinManager 5 | import com.google.android.material.tabs.TabLayout 6 | 7 | 8 | class TabTextColorAttr : SkinAttr() { 9 | companion object { 10 | const val TAG = "tabTextColor" 11 | } 12 | 13 | override fun applySkin(view: View) { 14 | if (view is TabLayout && attrResourceRefId != -1) { 15 | SkinManager.setTabTextColor(view, attrResourceRefId) 16 | } 17 | } 18 | } -------------------------------------------------------------------------------- /skin/src/main/java/com/skyd/skin/core/attrs/TextColorAttr.kt: -------------------------------------------------------------------------------- 1 | package com.skyd.skin.core.attrs 2 | 3 | import android.view.View 4 | import android.widget.TextView 5 | import com.skyd.skin.SkinManager 6 | 7 | 8 | class TextColorAttr : SkinAttr() { 9 | companion object { 10 | const val TAG = "textColor" 11 | } 12 | 13 | override fun applySkin(view: View) { 14 | if (view is TextView && attrResourceRefId != -1) { 15 | SkinManager.setTextColor(view, attrResourceRefId) 16 | } 17 | } 18 | } -------------------------------------------------------------------------------- /skin/src/main/java/com/skyd/skin/core/attrs/TextColorHintAttr.kt: -------------------------------------------------------------------------------- 1 | package com.skyd.skin.core.attrs 2 | 3 | import android.view.View 4 | import android.widget.TextView 5 | import com.skyd.skin.SkinManager 6 | 7 | class TextColorHintAttr : SkinAttr() { 8 | companion object { 9 | const val TAG = "textColorHint" 10 | } 11 | 12 | override fun applySkin(view: View) { 13 | if (attrResourceRefId != -1 && view is TextView) 14 | SkinManager.setTextColorHint(view, attrResourceRefId) 15 | } 16 | } -------------------------------------------------------------------------------- /skin/src/main/java/com/skyd/skin/core/attrs/ThumbAttr.kt: -------------------------------------------------------------------------------- 1 | package com.skyd.skin.core.attrs 2 | 3 | import android.view.View 4 | import android.widget.SeekBar 5 | import com.skyd.skin.SkinManager 6 | 7 | 8 | class ThumbAttr : SkinAttr() { 9 | companion object { 10 | const val TAG = "thumb" 11 | } 12 | 13 | override fun applySkin(view: View) { 14 | if (attrResourceRefId != -1 && view is SeekBar) { 15 | SkinManager.setThumb(view, attrResourceRefId) 16 | } 17 | } 18 | } -------------------------------------------------------------------------------- /skin/src/main/java/com/skyd/skin/core/attrs/ThumbTintAttr.kt: -------------------------------------------------------------------------------- 1 | package com.skyd.skin.core.attrs 2 | 3 | import android.view.View 4 | import androidx.appcompat.widget.SwitchCompat 5 | import com.skyd.skin.SkinManager 6 | 7 | class ThumbTintAttr : SkinAttr() { 8 | companion object { 9 | const val TAG = "thumbTint" 10 | } 11 | 12 | override fun applySkin(view: View) { 13 | if (attrResourceRefId != -1 && view is SwitchCompat) 14 | SkinManager.setThumbTint(view, attrResourceRefId) 15 | } 16 | } -------------------------------------------------------------------------------- /skin/src/main/java/com/skyd/skin/core/attrs/TrackTintAttr.kt: -------------------------------------------------------------------------------- 1 | package com.skyd.skin.core.attrs 2 | 3 | import android.view.View 4 | import androidx.appcompat.widget.SwitchCompat 5 | import com.skyd.skin.SkinManager 6 | 7 | class TrackTintAttr : SkinAttr() { 8 | companion object { 9 | const val TAG = "trackTint" 10 | } 11 | 12 | override fun applySkin(view: View) { 13 | if (attrResourceRefId != -1 && view is SwitchCompat) 14 | SkinManager.setTrackTint(view, attrResourceRefId) 15 | } 16 | } -------------------------------------------------------------------------------- /skin/src/main/java/com/skyd/skin/core/listeners/ChangeCustomSkinListener.kt: -------------------------------------------------------------------------------- 1 | package com.skyd.skin.core.listeners 2 | 3 | interface ChangeCustomSkinListener { 4 | fun setCustomTag() 5 | fun changeCustomSkin() 6 | } -------------------------------------------------------------------------------- /skin/src/main/java/com/skyd/skin/core/listeners/ChangeSkinListener.kt: -------------------------------------------------------------------------------- 1 | package com.skyd.skin.core.listeners 2 | 3 | interface ChangeSkinListener { 4 | fun onChangeSkin() 5 | } -------------------------------------------------------------------------------- /skin/src/main/res/values/ids.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /skin/src/test/java/com/skyd/skin/ExampleUnitTest.kt: -------------------------------------------------------------------------------- 1 | package com.skyd.skin 2 | 3 | import org.junit.Test 4 | 5 | import org.junit.Assert.* 6 | 7 | /** 8 | * Example local unit test, which will execute on the development machine (host). 9 | * 10 | * See [testing documentation](http://d.android.com/tools/testing). 11 | */ 12 | class ExampleUnitTest { 13 | @Test 14 | fun addition_isCorrect() { 15 | assertEquals(4, 2 + 2) 16 | } 17 | } -------------------------------------------------------------------------------- /skin_blue/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /skin_blue/consumer-rules.pro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/androiddevnotesforks/Imomoe/bd3b3a0e3f5211ccd57cf6d384e7c60bc5efc45f/skin_blue/consumer-rules.pro -------------------------------------------------------------------------------- /skin_blue/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /skin_blue/src/main/res/drawable-xxxhdpi/ic_spinner_bg_1_skin_blue.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/androiddevnotesforks/Imomoe/bd3b3a0e3f5211ccd57cf6d384e7c60bc5efc45f/skin_blue/src/main/res/drawable-xxxhdpi/ic_spinner_bg_1_skin_blue.9.png -------------------------------------------------------------------------------- /skin_blue/src/main/res/drawable/bg_circle_main_color_2_50_skin_blue.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 9 | -------------------------------------------------------------------------------- /skin_blue/src/main/res/drawable/ic_access_time_main_color_24_skin_blue.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /skin_blue/src/main/res/drawable/ic_arrow_forward_ios_main_color_12_skin_blue.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /skin_blue/src/main/res/drawable/ic_arrow_right_main_color_2_24_skin_blue.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /skin_blue/src/main/res/drawable/ic_clear_main_color_24_skin_blue.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /skin_blue/src/main/res/drawable/ic_delete_main_color_2_24_skin_blue.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /skin_blue/src/main/res/drawable/ic_home_main_color_24_skin_blue.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /skin_blue/src/main/res/drawable/ic_home_main_color_2_24_skin_blue.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /skin_blue/src/main/res/drawable/ic_keyboard_arrow_down_main_color_2_24_skin_blue.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /skin_blue/src/main/res/drawable/ic_link_main_color_2_34_skin_blue.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /skin_blue/src/main/res/drawable/ic_play_circle_main_color_2_24_skin_blue.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /skin_blue/src/main/res/drawable/ic_replay_white_24_skin_blue.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /skin_blue/src/main/res/drawable/ic_search_main_color_24_skin_blue.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /skin_blue/src/main/res/drawable/ic_star_border_main_color_2_24_skin_blue.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /skin_blue/src/main/res/drawable/ic_star_main_color_2_24_skin_blue.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /skin_blue/src/main/res/drawable/ic_storage_main_color_2_24_skin_blue.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /skin_blue/src/main/res/drawable/ic_swap_horiz_white_24_skin_blue.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /skin_blue/src/main/res/drawable/ic_swap_vert_white_24_skin_blue.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /skin_blue/src/main/res/drawable/ic_warning_main_color_3_24_skin_blue.xml: -------------------------------------------------------------------------------- 1 | 6 | 11 | 14 | 15 | -------------------------------------------------------------------------------- /skin_blue/src/main/res/drawable/seek_bar_thumb_1_skin_blue.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /skin_blue/src/main/res/drawable/selector_everyday_anime_button_skin_blue.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /skin_blue/src/main/res/drawable/selector_home_button_skin_blue.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /skin_blue/src/main/res/drawable/selector_horizontal_reverse_button_skin_blue.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /skin_blue/src/main/res/drawable/selector_more_button_skin_blue.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /skin_blue/src/main/res/drawable/selector_no_reverse_button_skin_blue.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /skin_blue/src/main/res/drawable/selector_spinner_1_skin_blue.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /skin_blue/src/main/res/drawable/selector_turn_on_off_danmu_skin_blue.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /skin_blue/src/main/res/drawable/selector_vertical_reverse_button_skin_blue.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /skin_blue/src/main/res/drawable/shape_circle_corner_edge_main_color_2_ripper_5_skin_blue.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /skin_blue/src/main/res/drawable/shape_circle_corner_edge_main_color_ripper_50_skin_blue.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /skin_blue/src/main/res/drawable/shape_fill_circle_corner_main_color_2_50_skin_blue.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /skin_blue/src/main/res/values/colors_skin_blue.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #FF000000 4 | #FFFFFFFF 5 | #FFFFFF 6 | 7 | #2196F3 8 | #1C7BC6 9 | #1C7BC6 10 | #1C7BC6 11 | #03A9F4 12 | #03A9F4 13 | -------------------------------------------------------------------------------- /skin_blue/src/test/java/com/skyd/skin_blue/ExampleUnitTest.kt: -------------------------------------------------------------------------------- 1 | package com.skyd.skin_blue 2 | 3 | import org.junit.Test 4 | 5 | import org.junit.Assert.* 6 | 7 | /** 8 | * Example local unit test, which will execute on the development machine (host). 9 | * 10 | * See [testing documentation](http://d.android.com/tools/testing). 11 | */ 12 | class ExampleUnitTest { 13 | @Test 14 | fun addition_isCorrect() { 15 | assertEquals(4, 2 + 2) 16 | } 17 | } -------------------------------------------------------------------------------- /skin_dark/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /skin_dark/consumer-rules.pro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/androiddevnotesforks/Imomoe/bd3b3a0e3f5211ccd57cf6d384e7c60bc5efc45f/skin_dark/consumer-rules.pro -------------------------------------------------------------------------------- /skin_dark/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /skin_dark/src/main/res/drawable-xxxhdpi/ic_spinner_bg_1_skin_dark.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/androiddevnotesforks/Imomoe/bd3b3a0e3f5211ccd57cf6d384e7c60bc5efc45f/skin_dark/src/main/res/drawable-xxxhdpi/ic_spinner_bg_1_skin_dark.9.png -------------------------------------------------------------------------------- /skin_dark/src/main/res/drawable/bg_circle_main_color_2_50_skin_dark.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 9 | -------------------------------------------------------------------------------- /skin_dark/src/main/res/drawable/ic_access_time_main_color_24_skin_dark.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /skin_dark/src/main/res/drawable/ic_arrow_forward_ios_main_color_12_skin_dark.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /skin_dark/src/main/res/drawable/ic_arrow_right_main_color_2_24_skin_dark.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /skin_dark/src/main/res/drawable/ic_clear_main_color_24_skin_dark.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /skin_dark/src/main/res/drawable/ic_delete_main_color_2_24_skin_dark.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /skin_dark/src/main/res/drawable/ic_home_main_color_24_skin_dark.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /skin_dark/src/main/res/drawable/ic_home_main_color_2_24_skin_dark.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /skin_dark/src/main/res/drawable/ic_keyboard_arrow_down_main_color_2_24_skin_dark.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /skin_dark/src/main/res/drawable/ic_link_main_color_2_34_skin_dark.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /skin_dark/src/main/res/drawable/ic_play_circle_main_color_2_24_skin_dark.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /skin_dark/src/main/res/drawable/ic_replay_white_24_skin_dark.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /skin_dark/src/main/res/drawable/ic_search_main_color_24_skin_dark.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /skin_dark/src/main/res/drawable/ic_star_border_main_color_2_24_skin_dark.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /skin_dark/src/main/res/drawable/ic_star_main_color_2_24_skin_dark.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /skin_dark/src/main/res/drawable/ic_storage_main_color_2_24_skin_dark.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /skin_dark/src/main/res/drawable/ic_swap_horiz_white_24_skin_dark.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /skin_dark/src/main/res/drawable/ic_swap_vert_white_24_skin_dark.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /skin_dark/src/main/res/drawable/ic_warning_main_color_3_24_skin_dark.xml: -------------------------------------------------------------------------------- 1 | 6 | 11 | 14 | 15 | -------------------------------------------------------------------------------- /skin_dark/src/main/res/drawable/selector_everyday_anime_button_skin_dark.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /skin_dark/src/main/res/drawable/selector_home_button_skin_dark.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /skin_dark/src/main/res/drawable/selector_horizontal_reverse_button_skin_dark.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /skin_dark/src/main/res/drawable/selector_more_button_skin_dark.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /skin_dark/src/main/res/drawable/selector_no_reverse_button_skin_dark.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /skin_dark/src/main/res/drawable/selector_spinner_1_skin_dark.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /skin_dark/src/main/res/drawable/selector_turn_on_off_danmu_skin_dark.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /skin_dark/src/main/res/drawable/selector_vertical_reverse_button_skin_dark.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /skin_dark/src/main/res/drawable/shape_circle_corner_bottom_dialog_white_12_skin_dark.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 7 | 8 | -------------------------------------------------------------------------------- /skin_dark/src/main/res/drawable/shape_circle_corner_edge_main_color_2_ripper_5_skin_dark.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /skin_dark/src/main/res/drawable/shape_circle_corner_edge_main_color_ripper_50_skin_dark.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /skin_dark/src/main/res/drawable/shape_circle_corner_edge_white_ripper_5_skin_dark.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /skin_dark/src/main/res/drawable/shape_circle_corner_white_50_skin_dark.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 9 | -------------------------------------------------------------------------------- /skin_dark/src/main/res/drawable/shape_fill_circle_corner_main_color_2_50_skin_dark.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /skin_dark/src/main/res/values/colors_skin_dark.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #B5B5B5 4 | #B5B5B5 5 | #000000 6 | 7 | #676767 8 | #000000 9 | #A8A8A8 10 | #9A9A9A 11 | #222222 12 | #00000000 13 | #5E000000 14 | -------------------------------------------------------------------------------- /skin_dark/src/test/java/com/cyeasybuy/skin_dark/ExampleUnitTest.kt: -------------------------------------------------------------------------------- 1 | package com.cyeasybuy.skin_dark 2 | 3 | import org.junit.Test 4 | 5 | import org.junit.Assert.* 6 | 7 | /** 8 | * Example local unit test, which will execute on the development machine (host). 9 | * 10 | * See [testing documentation](http://d.android.com/tools/testing). 11 | */ 12 | class ExampleUnitTest { 13 | @Test 14 | fun addition_isCorrect() { 15 | assertEquals(4, 2 + 2) 16 | } 17 | } -------------------------------------------------------------------------------- /skin_lemon/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /skin_lemon/consumer-rules.pro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/androiddevnotesforks/Imomoe/bd3b3a0e3f5211ccd57cf6d384e7c60bc5efc45f/skin_lemon/consumer-rules.pro -------------------------------------------------------------------------------- /skin_lemon/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /skin_lemon/src/main/res/drawable-xxxhdpi/ic_spinner_bg_1_skin_lemon.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/androiddevnotesforks/Imomoe/bd3b3a0e3f5211ccd57cf6d384e7c60bc5efc45f/skin_lemon/src/main/res/drawable-xxxhdpi/ic_spinner_bg_1_skin_lemon.9.png -------------------------------------------------------------------------------- /skin_lemon/src/main/res/drawable/bg_circle_main_color_2_50_skin_lemon.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 9 | -------------------------------------------------------------------------------- /skin_lemon/src/main/res/drawable/ic_access_time_main_color_24_skin_lemon.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /skin_lemon/src/main/res/drawable/ic_arrow_forward_ios_main_color_12_skin_lemon.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /skin_lemon/src/main/res/drawable/ic_arrow_right_main_color_2_24_skin_lemon.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /skin_lemon/src/main/res/drawable/ic_clear_main_color_24_skin_lemon.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /skin_lemon/src/main/res/drawable/ic_delete_main_color_2_24_skin_lemon.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /skin_lemon/src/main/res/drawable/ic_home_main_color_24_skin_lemon.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /skin_lemon/src/main/res/drawable/ic_home_main_color_2_24_skin_lemon.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /skin_lemon/src/main/res/drawable/ic_keyboard_arrow_down_main_color_2_24_skin_lemon.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /skin_lemon/src/main/res/drawable/ic_play_circle_main_color_2_24_skin_lemon.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /skin_lemon/src/main/res/drawable/ic_replay_white_24_skin_lemon.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /skin_lemon/src/main/res/drawable/ic_search_main_color_24_skin_lemon.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /skin_lemon/src/main/res/drawable/ic_star_main_color_2_24_skin_lemon.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /skin_lemon/src/main/res/drawable/ic_storage_main_color_2_24_skin_lemon.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /skin_lemon/src/main/res/drawable/ic_swap_horiz_white_24_skin_lemon.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /skin_lemon/src/main/res/drawable/ic_swap_vert_white_24_skin_lemon.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /skin_lemon/src/main/res/drawable/ic_warning_main_color_3_24_skin_lemon.xml: -------------------------------------------------------------------------------- 1 | 6 | 11 | 14 | 15 | -------------------------------------------------------------------------------- /skin_lemon/src/main/res/drawable/seek_bar_thumb_1_skin_lemon.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /skin_lemon/src/main/res/drawable/selector_everyday_anime_button_skin_lemon.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /skin_lemon/src/main/res/drawable/selector_home_button_skin_lemon.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /skin_lemon/src/main/res/drawable/selector_horizontal_reverse_button_skin_lemon.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /skin_lemon/src/main/res/drawable/selector_more_button_skin_lemon.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /skin_lemon/src/main/res/drawable/selector_no_reverse_button_skin_lemon.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /skin_lemon/src/main/res/drawable/selector_spinner_1_skin_lemon.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /skin_lemon/src/main/res/drawable/selector_turn_on_off_danmu_skin_lemon.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /skin_lemon/src/main/res/drawable/selector_vertical_reverse_button_skin_lemon.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /skin_lemon/src/main/res/drawable/shape_circle_corner_edge_main_color_2_ripper_5_skin_lemon.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /skin_lemon/src/main/res/drawable/shape_circle_corner_edge_main_color_ripper_50_skin_lemon.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /skin_lemon/src/main/res/drawable/shape_fill_circle_corner_main_color_2_50_skin_lemon.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /skin_lemon/src/main/res/values/colors_skin_lemon.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #FF000000 4 | #FFFFFFFF 5 | #FFFFFF 6 | 7 | #ffc600 8 | #FFB544 9 | #FFB544 10 | #FFB544 11 | #ffbc55 12 | #ffbc55 13 | -------------------------------------------------------------------------------- /skin_lemon/src/test/java/com/cyeasybuy/skin_lemon/ExampleUnitTest.kt: -------------------------------------------------------------------------------- 1 | package com.cyeasybuy.skin_lemon 2 | 3 | import org.junit.Test 4 | 5 | import org.junit.Assert.* 6 | 7 | /** 8 | * Example local unit test, which will execute on the development machine (host). 9 | * 10 | * See [testing documentation](http://d.android.com/tools/testing). 11 | */ 12 | class ExampleUnitTest { 13 | @Test 14 | fun addition_isCorrect() { 15 | assertEquals(4, 2 + 2) 16 | } 17 | } -------------------------------------------------------------------------------- /skin_sweat_soybean/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /skin_sweat_soybean/consumer-rules.pro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/androiddevnotesforks/Imomoe/bd3b3a0e3f5211ccd57cf6d384e7c60bc5efc45f/skin_sweat_soybean/consumer-rules.pro -------------------------------------------------------------------------------- /skin_sweat_soybean/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /skin_sweat_soybean/src/main/res/drawable-hdpi/ic_arrow_circle_down_white_24_skin_sweat_soybean.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /skin_sweat_soybean/src/main/res/drawable-hdpi/ic_bar_chart_white_24_skin_sweat_soybean.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /skin_sweat_soybean/src/main/res/drawable-hdpi/ic_face_savouring_delicious_food_160px.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/androiddevnotesforks/Imomoe/bd3b3a0e3f5211ccd57cf6d384e7c60bc5efc45f/skin_sweat_soybean/src/main/res/drawable-hdpi/ic_face_savouring_delicious_food_160px.webp -------------------------------------------------------------------------------- /skin_sweat_soybean/src/main/res/drawable-hdpi/ic_fearful_face_160px.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/androiddevnotesforks/Imomoe/bd3b3a0e3f5211ccd57cf6d384e7c60bc5efc45f/skin_sweat_soybean/src/main/res/drawable-hdpi/ic_fearful_face_160px.webp -------------------------------------------------------------------------------- /skin_sweat_soybean/src/main/res/drawable-hdpi/ic_format_list_bulleted_white_24_skin_sweat_soybean.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /skin_sweat_soybean/src/main/res/drawable-hdpi/ic_open_mout_tightly_closed_eyes_160px.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/androiddevnotesforks/Imomoe/bd3b3a0e3f5211ccd57cf6d384e7c60bc5efc45f/skin_sweat_soybean/src/main/res/drawable-hdpi/ic_open_mout_tightly_closed_eyes_160px.webp -------------------------------------------------------------------------------- /skin_sweat_soybean/src/main/res/drawable-hdpi/ic_open_mouth_cold_sweat_160px.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/androiddevnotesforks/Imomoe/bd3b3a0e3f5211ccd57cf6d384e7c60bc5efc45f/skin_sweat_soybean/src/main/res/drawable-hdpi/ic_open_mouth_cold_sweat_160px.webp -------------------------------------------------------------------------------- /skin_sweat_soybean/src/main/res/drawable-hdpi/ic_play_circle_main_color_2_24_skin_sweat_soybean.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /skin_sweat_soybean/src/main/res/drawable-hdpi/ic_rolling_on_the_floor_laughing_160px.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/androiddevnotesforks/Imomoe/bd3b3a0e3f5211ccd57cf6d384e7c60bc5efc45f/skin_sweat_soybean/src/main/res/drawable-hdpi/ic_rolling_on_the_floor_laughing_160px.webp -------------------------------------------------------------------------------- /skin_sweat_soybean/src/main/res/drawable-hdpi/ic_smiling_face_with_heart_shaped_eyes_160px.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/androiddevnotesforks/Imomoe/bd3b3a0e3f5211ccd57cf6d384e7c60bc5efc45f/skin_sweat_soybean/src/main/res/drawable-hdpi/ic_smiling_face_with_heart_shaped_eyes_160px.webp -------------------------------------------------------------------------------- /skin_sweat_soybean/src/main/res/drawable-hdpi/ic_soybean_160px.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/androiddevnotesforks/Imomoe/bd3b3a0e3f5211ccd57cf6d384e7c60bc5efc45f/skin_sweat_soybean/src/main/res/drawable-hdpi/ic_soybean_160px.webp -------------------------------------------------------------------------------- /skin_sweat_soybean/src/main/res/drawable-hdpi/ic_star_white_24_skin_sweat_soybean.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /skin_sweat_soybean/src/main/res/drawable-hdpi/ic_sweat_soybean_160px.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/androiddevnotesforks/Imomoe/bd3b3a0e3f5211ccd57cf6d384e7c60bc5efc45f/skin_sweat_soybean/src/main/res/drawable-hdpi/ic_sweat_soybean_160px.webp -------------------------------------------------------------------------------- /skin_sweat_soybean/src/main/res/drawable-hdpi/ic_tears_of_joy_160px.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/androiddevnotesforks/Imomoe/bd3b3a0e3f5211ccd57cf6d384e7c60bc5efc45f/skin_sweat_soybean/src/main/res/drawable-hdpi/ic_tears_of_joy_160px.webp -------------------------------------------------------------------------------- /skin_sweat_soybean/src/main/res/drawable-xxxhdpi/ic_spinner_bg_1_skin_sweat_soybean.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/androiddevnotesforks/Imomoe/bd3b3a0e3f5211ccd57cf6d384e7c60bc5efc45f/skin_sweat_soybean/src/main/res/drawable-xxxhdpi/ic_spinner_bg_1_skin_sweat_soybean.9.png -------------------------------------------------------------------------------- /skin_sweat_soybean/src/main/res/drawable/bg_circle_main_color_2_50_skin_sweat_soybean.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 9 | -------------------------------------------------------------------------------- /skin_sweat_soybean/src/main/res/drawable/ic_access_time_main_color_24_skin_sweat_soybean.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /skin_sweat_soybean/src/main/res/drawable/ic_arrow_forward_ios_main_color_12_skin_sweat_soybean.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /skin_sweat_soybean/src/main/res/drawable/ic_arrow_right_main_color_2_24_skin_sweat_soybean.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /skin_sweat_soybean/src/main/res/drawable/ic_clear_main_color_24_skin_sweat_soybean.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /skin_sweat_soybean/src/main/res/drawable/ic_keyboard_arrow_down_main_color_2_24_skin_sweat_soybean.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /skin_sweat_soybean/src/main/res/drawable/ic_play_circle_main_color_2_24_skin_lemon.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /skin_sweat_soybean/src/main/res/drawable/ic_replay_white_24_skin_sweat_soybean.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /skin_sweat_soybean/src/main/res/drawable/ic_search_main_color_24_skin_sweat_soybean.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /skin_sweat_soybean/src/main/res/drawable/ic_star_main_color_2_24_skin_sweat_soybean.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /skin_sweat_soybean/src/main/res/drawable/ic_storage_main_color_2_24_skin_sweat_soybean.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /skin_sweat_soybean/src/main/res/drawable/ic_swap_horiz_white_24_skin_sweat_soybean.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /skin_sweat_soybean/src/main/res/drawable/ic_swap_vert_white_24_skin_sweat_soybean.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /skin_sweat_soybean/src/main/res/drawable/ic_warning_main_color_3_24_skin_sweat_soybean.xml: -------------------------------------------------------------------------------- 1 | 6 | 11 | 14 | 15 | -------------------------------------------------------------------------------- /skin_sweat_soybean/src/main/res/drawable/layerlist_sweat_soybean.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 8 | -------------------------------------------------------------------------------- /skin_sweat_soybean/src/main/res/drawable/seek_bar_thumb_1_skin_sweat_soybean.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /skin_sweat_soybean/src/main/res/drawable/selector_everyday_anime_button_skin_sweat_soybean.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /skin_sweat_soybean/src/main/res/drawable/selector_home_button_skin_sweat_soybean.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /skin_sweat_soybean/src/main/res/drawable/selector_horizontal_reverse_button_skin_sweat_soybean.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /skin_sweat_soybean/src/main/res/drawable/selector_more_button_skin_sweat_soybean.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /skin_sweat_soybean/src/main/res/drawable/selector_no_reverse_button_skin_sweat_soybean.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /skin_sweat_soybean/src/main/res/drawable/selector_spinner_1_skin_sweat_soybean.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /skin_sweat_soybean/src/main/res/drawable/selector_turn_on_off_danmu_skin_sweat_soybean.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /skin_sweat_soybean/src/main/res/drawable/selector_vertical_reverse_button_skin_sweat_soybean.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /skin_sweat_soybean/src/main/res/drawable/shape_circle_corner_edge_main_color_2_ripper_5_skin_sweat_soybean.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /skin_sweat_soybean/src/main/res/drawable/shape_circle_corner_edge_main_color_ripper_50_skin_sweat_soybean.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /skin_sweat_soybean/src/main/res/drawable/shape_fill_circle_corner_main_color_2_50_skin_sweat_soybean.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /skin_sweat_soybean/src/test/java/com/cyeasybuy/skin_sweat_soybean/ExampleUnitTest.kt: -------------------------------------------------------------------------------- 1 | package com.cyeasybuy.skin_sweat_soybean 2 | 3 | import org.junit.Test 4 | 5 | import org.junit.Assert.* 6 | 7 | /** 8 | * Example local unit test, which will execute on the development machine (host). 9 | * 10 | * See [testing documentation](http://d.android.com/tools/testing). 11 | */ 12 | class ExampleUnitTest { 13 | @Test 14 | fun addition_isCorrect() { 15 | assertEquals(4, 2 + 2) 16 | } 17 | } --------------------------------------------------------------------------------