├── .gitignore ├── .idea ├── .name ├── codeStyles │ └── Project.xml ├── misc.xml └── runConfigurations.xml ├── LICENSE ├── README.md ├── app ├── .gitignore ├── build.gradle ├── libs │ ├── Android-SpinKit140.aar │ ├── SQLiteStudioRemote.jar │ ├── roundedimageview-release.aar │ └── toasty-142.aar ├── proguard-rules.pro ├── release │ └── output.json └── src │ └── main │ ├── AndroidManifest.xml │ ├── assets │ └── data │ │ ├── categories.json │ │ └── test.json │ ├── java │ └── com │ │ └── yuenov │ │ └── open │ │ ├── activitys │ │ ├── AboutMeActivity.java │ │ ├── BookCityActivity.java │ │ ├── BookRecommendMoreActivity.java │ │ ├── BookShelfActivity.java │ │ ├── BrowserActivity.java │ │ ├── CategoryChannelActivity.java │ │ ├── CategoryChannelItemListActivity.java │ │ ├── CategoryEndAllListActivity.java │ │ ├── CategoryEndListActivity.java │ │ ├── ChapterMenuListActivity.java │ │ ├── ChapterSelectDownloadListActivity.java │ │ ├── CommonProblemActivity.java │ │ ├── FeedBackActivity.java │ │ ├── FindActivity.java │ │ ├── FindAllListActivity.java │ │ ├── FirstActivity.java │ │ ├── MainActivity.java │ │ ├── PreviewDetailActivity.java │ │ ├── RankActivity.java │ │ ├── RankPageListActivity.java │ │ ├── ReadDetailActivity.java │ │ ├── ReadHistoryListActivity.java │ │ ├── ReadingPreferencesActivity.java │ │ ├── SearchActivity.java │ │ ├── SpecialAllListActivity.java │ │ ├── SpecialListActivity.java │ │ └── baseInfo │ │ │ └── BaseActivity.java │ │ ├── adapters │ │ ├── BangDanListAdapter.java │ │ ├── BookDetailBottomMenuListAdapter.java │ │ ├── BookMenuListAdapter.java │ │ ├── BookPreviewItemAdapter.java │ │ ├── BookPreviewRecommendAdapter.java │ │ ├── BookSelectDownloadMenuListAdapter.java │ │ ├── CategoryBookListAdapter.java │ │ ├── CategoryChannelListAdapter.java │ │ ├── CategoryListAdapter.java │ │ ├── IndexBookShelfListAdapter.java │ │ ├── RankListAdapter.java │ │ ├── ReadHistoryListAdapter.java │ │ ├── SearchBookDefaultListAdapter.java │ │ ├── SearchBookListAdapter.java │ │ └── SpecialListAdapter.java │ │ ├── application │ │ └── MyApplication.java │ │ ├── constant │ │ ├── AboutChapterStatus.java │ │ ├── ConstantInterFace.java │ │ ├── ConstantPageInfo.java │ │ ├── ConstantSetting.java │ │ └── stat │ │ │ └── TurnPageType.java │ │ ├── database │ │ ├── AppDatabase.java │ │ ├── dao │ │ │ ├── BookChapterDao.java │ │ │ ├── BookShelfDao.java │ │ │ ├── CacheDao.java │ │ │ └── ReadHistoryDao.java │ │ └── tb │ │ │ ├── TbBookChapter.java │ │ │ ├── TbBookShelf.java │ │ │ ├── TbCache.java │ │ │ └── TbReadHistory.java │ │ ├── fragments │ │ ├── BookCityFragment.java │ │ ├── CategoryChannelFragment.java │ │ ├── CategoryChannelItemListFragment.java │ │ ├── FeedBackLackBookFragment.java │ │ ├── FeedBackProductQuestionFragment.java │ │ ├── FeedBookQuestionFragment.java │ │ ├── RankListFragment.java │ │ └── baseInfo │ │ │ └── BaseFragment.java │ │ ├── interfaces │ │ ├── IDownloadContentListener.java │ │ ├── IDownloadMenuListListener.java │ │ └── IGetCategoryListListener.java │ │ ├── model │ │ ├── ContentTextViewAttributeSet.java │ │ ├── ImageModel.java │ │ ├── PageInfoModel.java │ │ ├── TextModel.java │ │ ├── eventBus │ │ │ ├── OnAppActiveChangeEvent.java │ │ │ ├── OnBookShelfChangeEvent.java │ │ │ ├── OnDownloadBackUpChangeEvent.java │ │ │ └── OnDownloadMenuFinishChangeEvent.java │ │ ├── httpModel │ │ │ ├── BookCheckUpdateHttpModel.java │ │ │ ├── BookGetRecommendHttpModel.java │ │ │ ├── BookPreviewHttpModel.java │ │ │ ├── BookProblemHttpModel.java │ │ │ ├── CategoriesListHttpModel.java │ │ │ ├── CategoryDiscoveryAllListHttpModel.java │ │ │ ├── CategoryDiscoveryHttpModel.java │ │ │ ├── ChapterUpdateForceHttpModel.java │ │ │ ├── DownloadChapterHttpModel.java │ │ │ ├── GetAppConfigHttpModel.java │ │ │ ├── GetBookMenuListHttpModel.java │ │ │ ├── GetCategoryChannelHttpModel.java │ │ │ ├── GetCategoryEndHttpModel.java │ │ │ ├── GetRankListHttpModel.java │ │ │ ├── GetRankPageListHttpModel.java │ │ │ ├── GetSpecialHttpModel.java │ │ │ ├── GetSpecialPageListHttpModel.java │ │ │ ├── InterFaceBaseHttpModel.java │ │ │ ├── PrivacyPolicyHttpModel.java │ │ │ ├── PrivacyUseragreementHttpModel.java │ │ │ ├── SaveBookReportHttpModel.java │ │ │ ├── SaveProductProblemHttpModel.java │ │ │ ├── SearchBookHttpModel.java │ │ │ └── UserUpdateHttpModel.java │ │ ├── responseModel │ │ │ ├── BookCheckUpdateResponse.java │ │ │ ├── CategoriesListResponse.java │ │ │ ├── CategoryChannelListResponse.java │ │ │ ├── DownloadListResponse.java │ │ │ ├── FindIndexInfoResponse.java │ │ │ ├── IndexSpecialListResponse.java │ │ │ ├── MenuListResponse.java │ │ │ └── RankItemResponse.java │ │ └── standard │ │ │ ├── AppConfigInfo.java │ │ │ ├── BPreviewUpdateInfo.java │ │ │ ├── BookBaseInfo.java │ │ │ ├── BookMenuItemInfo.java │ │ │ ├── BookMenuListInfo.java │ │ │ ├── BookPreviewInfo.java │ │ │ ├── CategoriesListItem.java │ │ │ ├── CategoryChannelItemInfo.java │ │ │ ├── CategoryMenuItem.java │ │ │ ├── CategoryMenuListItem.java │ │ │ ├── ChapterUpdateForceInfo.java │ │ │ ├── CheckUpdateItemInfo.java │ │ │ ├── DownloadBookContentItemInfo.java │ │ │ ├── DownloadChapterRequestInfo.java │ │ │ ├── FindItemBookItemModel.java │ │ │ ├── RankItemInfo.java │ │ │ ├── RankListInfo.java │ │ │ ├── ReadBookInfo.java │ │ │ ├── ReadSettingInfo.java │ │ │ ├── ReadingPreferencesModel.java │ │ │ ├── RequestBookCheckUpdateInfo.java │ │ │ ├── SpecialItemModel.java │ │ │ ├── SubmitSaveProductProblemInfo.java │ │ │ └── TbReadHistoryLeftJoinBookChapterInfo.java │ │ ├── utils │ │ ├── AESUtils.java │ │ ├── EditSharedPreferences.java │ │ ├── Utility.java │ │ ├── UtilityAppConfig.java │ │ ├── UtilityBlur.java │ │ ├── UtilityBrightness.java │ │ ├── UtilityBusiness.java │ │ ├── UtilityCache.java │ │ ├── UtilityControl.java │ │ ├── UtilityData.java │ │ ├── UtilityException.java │ │ ├── UtilityMeasure.java │ │ ├── UtilityReadInfo.java │ │ ├── UtilityToasty.java │ │ ├── WebviewSettingProxy.java │ │ ├── dialogFragment │ │ │ ├── BaseDialog.java │ │ │ ├── BdDeleteBookShelf.java │ │ │ └── ShareAppSuccessDialogFragment.java │ │ ├── images │ │ │ ├── BannerGlideImageLoader.java │ │ │ ├── CornerTransform.java │ │ │ └── UtilityImage.java │ │ └── pops │ │ │ ├── DeleteBookShelfPop.java │ │ │ └── ShareAppPop.java │ │ └── widget │ │ ├── BatteryView.java │ │ ├── CategoryItemImageView.java │ │ ├── ContentTextView.java │ │ ├── DetailOperationView.java │ │ ├── EditTextView.java │ │ ├── LightView.java │ │ ├── LoadingView.java │ │ ├── MyAppTitle.java │ │ ├── MyInfoItemView.java │ │ ├── MyListView.java │ │ ├── MyX5WebView.java │ │ ├── OrderConfirmGridView.java │ │ ├── PubLoadingView.java │ │ ├── RankItemImageView.java │ │ ├── ReadDetailTimeView.java │ │ ├── TimeView.java │ │ ├── WrapHeightGridView.java │ │ └── page │ │ ├── IPagerLoader.java │ │ ├── PageLoader.java │ │ ├── PageMode.java │ │ ├── PageStyle.java │ │ ├── PageView.java │ │ ├── ScreenUtils.java │ │ ├── SystemBarUtils.java │ │ ├── TxtChapter.java │ │ ├── TxtPage.java │ │ └── animation │ │ ├── AnimationProvider.java │ │ ├── CoverPageAnim.java │ │ ├── HorizonPageAnim.java │ │ ├── NonePageAnim.java │ │ ├── PageAnimation.java │ │ ├── ScrollPageAnim.java │ │ ├── SimulationPageAnim.java │ │ └── SlidePageAnim.java │ └── res │ ├── anim │ ├── activity_enter.xml │ ├── activity_exit.xml │ ├── anim_alpha_hide.xml │ ├── anim_alpha_show.xml │ ├── anim_bookdetail_bottomhide.xml │ ├── anim_bookdetail_bottomshow.xml │ ├── anim_bookdetail_tophide.xml │ ├── anim_bookdetail_topshow.xml │ ├── anim_fade_in.xml │ ├── anim_fade_out.xml │ ├── anim_pop_alpha.xml │ ├── anim_pop_close.xml │ ├── anim_pop_opaque.xml │ ├── anim_pop_show.xml │ ├── anim_widget_bookdetail_bottomhide.xml │ ├── anim_widget_bookdetail_bottomshow.xml │ ├── anim_widget_rotate.xml │ ├── dialog_push_in.xml │ ├── dialog_push_out.xml │ ├── slide_bottom_in.xml │ ├── slide_bottom_out.xml │ ├── slide_left_in.xml │ ├── slide_left_out.xml │ ├── slide_right_in.xml │ ├── slide_right_out.xml │ ├── slide_top_in.xml │ └── slide_top_out.xml │ ├── color │ └── bg_myapp_right_text_color_selector.xml │ ├── drawable │ ├── aaa_test.xml │ ├── bg_bookshelf_find.xml │ ├── bg_category_item_stat_categoryname.xml │ ├── bg_category_item_stat_lz.xml │ ├── bg_category_item_stat_wj.xml │ ├── bg_categorychannel_item_item.xml │ ├── bg_findindex_item_title_left.xml │ ├── bg_loading_1.xml │ ├── bg_loading_2.xml │ ├── bg_productquestion_desc.xml │ ├── bg_productquestion_submit.xml │ ├── bg_productquestion_unsubmit.xml │ ├── bg_readhistory_addshelf.xml │ ├── bg_readhistory_inshelf.xml │ ├── bg_readingpreferences_select.xml │ ├── bg_search_inputarea.xml │ ├── bg_search_list_tag.xml │ ├── bg_searchhistory_item.xml │ ├── bg_searchlist_add.xml │ ├── bg_searchlist_read.xml │ ├── bg_shareapp_success.xml │ ├── bg_shareapp_success_bottom.xml │ ├── bg_shareapp_success_top.xml │ ├── bg_tab_bookcity_selector.xml │ ├── bg_tab_bookshelf_selector.xml │ ├── bg_tab_find_selector.xml │ ├── bg_tab_myinfo_selector.xml │ ├── bg_tab_xc_selector.xml │ ├── bg_title_back_selector.xml │ ├── bg_widget_bd_op_select.xml │ ├── bg_widget_bd_op_unselect.xml │ ├── bg_widget_edittext.xml │ ├── book_menu_list.xml │ ├── button_book_read.xml │ ├── button_download_back.xml │ ├── categorieslist_item_bg.xml │ ├── feedback_checkbox.xml │ ├── feedback_cursor.xml │ ├── ic_launcher_background.xml │ ├── ic_launcher_foreground.xml │ ├── loading.xml │ ├── normal_loading.png │ ├── progressbar_color.xml │ └── seekbar_progress_drawable.xml │ ├── layout │ ├── aaa_activity_test.xml │ ├── aaa_view_test.xml │ ├── activity_abouthide.xml │ ├── activity_aboutme.xml │ ├── activity_book_recommend_more.xml │ ├── activity_bookcity.xml │ ├── activity_bookindex.xml │ ├── activity_bookmenulist.xml │ ├── activity_bookshelf.xml │ ├── activity_browser.xml │ ├── activity_categorychanne.xml │ ├── activity_categorychannel.xml │ ├── activity_categoryend.xml │ ├── activity_categoryend_alllist.xml │ ├── activity_commonproblem.xml │ ├── activity_detailpreview.xml │ ├── activity_feedback.xml │ ├── activity_findalllist.xml │ ├── activity_first.xml │ ├── activity_main.xml │ ├── activity_rank.xml │ ├── activity_ranklist.xml │ ├── activity_readdetail.xml │ ├── activity_readhistory.xml │ ├── activity_readingpreferences.xml │ ├── activity_search.xml │ ├── activity_selectdownload.xml │ ├── activity_special_alllist.xml │ ├── activity_speciallist.xml │ ├── fragment_bc.xml │ ├── fragment_bookquestion.xml │ ├── fragment_categorychannel_item.xml │ ├── fragment_categorychannel_item_list.xml │ ├── fragment_lackbook.xml │ ├── fragment_productquestion.xml │ ├── fragment_rank_list.xml │ ├── view_activity_titlebar.xml │ ├── view_adapter_bangdan_item.xml │ ├── view_adapter_bs_type.xml │ ├── view_adapter_categorychannel_item.xml │ ├── view_adapter_categorylist_item.xml │ ├── view_adapter_find_item.xml │ ├── view_adapter_find_item_item.xml │ ├── view_adapter_item_bookmenu.xml │ ├── view_adapter_item_bookshelf.xml │ ├── view_adapter_item_category_list.xml │ ├── view_adapter_item_detailoperation_bottom_menu.xml │ ├── view_adapter_item_detailpewview_recommend.xml │ ├── view_adapter_item_selectdownloadmenu.xml │ ├── view_adapter_ranklist_item.xml │ ├── view_adapter_readhistory_item.xml │ ├── view_adapter_searchdefault_book.xml │ ├── view_adapter_searchlist_book.xml │ ├── view_bookshelf_empty.xml │ ├── view_bs_banner.xml │ ├── view_bs_empty.xml │ ├── view_categorychannel_filter_item.xml │ ├── view_findindex_type.xml │ ├── view_item_search_history.xml │ ├── view_item_search_list_tag.xml │ ├── view_loading.xml │ ├── view_loading_2.xml │ ├── view_menu_bookcity_tablayout_title.xml │ ├── view_menu_tablayout_title.xml │ ├── view_popwindow_deletebookshelf.xml │ ├── view_popwindow_shareapp.xml │ ├── view_popwindow_shareapp_success.xml │ ├── view_pub_loading.xml │ ├── view_search_hotlist_header.xml │ ├── view_search_searchhistory.xml │ ├── view_tablayout_menu_category_title.xml │ ├── view_tablayout_menu_checked.xml │ ├── view_tablayout_menu_unchecked.xml │ ├── view_widget_categoryitem_image.xml │ ├── view_widget_detailoperation.xml │ ├── view_widget_edittextview.xml │ ├── view_widget_light.xml │ ├── view_widget_myinfo_item.xml │ ├── view_widget_rankitem_image.xml │ └── view_widget_readdetail_timeview.xml │ ├── menu │ └── detail_menu_menu.xml │ ├── mipmap-hdpi │ └── ic_launcher.png │ ├── mipmap-mdpi │ └── ic_launcher.png │ ├── mipmap-xhdpi │ ├── aaatest.jpg │ ├── bg_theme1_read_bg.png │ ├── bg_theme2_read_bg.png │ ├── bg_theme3_read_bg.png │ ├── bg_theme4_read_bg.png │ ├── bg_theme5_read_bg.png │ ├── clear_input_icon.png │ ├── detailinfo_default_bg.png │ ├── feedback_checkbox_select.png │ ├── feedback_checkbox_unselect.png │ ├── ic_adapter_ba_item_showall.png │ ├── ic_add_bookshelf.png │ ├── ic_app_icon_white.png │ ├── ic_avatar_default.png │ ├── ic_book_add_black.png │ ├── ic_book_detail_menu.png │ ├── ic_book_detail_update.png │ ├── ic_book_down.png │ ├── ic_book_download.png │ ├── ic_book_download_black.png │ ├── ic_book_help.png │ ├── ic_book_light_left.png │ ├── ic_book_light_right.png │ ├── ic_book_light_select.png │ ├── ic_book_light_unselect.png │ ├── ic_book_list_default.png │ ├── ic_book_menu_select.png │ ├── ic_book_menu_unselect.png │ ├── ic_book_progress_select.png │ ├── ic_book_progress_unselect.png │ ├── ic_book_rolate.png │ ├── ic_book_set_left.png │ ├── ic_book_set_right.png │ ├── ic_book_set_select.png │ ├── ic_book_set_unselect.png │ ├── ic_book_up.png │ ├── ic_book_update.png │ ├── ic_browser_close.png │ ├── ic_browser_reload.png │ ├── ic_bs_type_1.png │ ├── ic_button_back.png │ ├── ic_button_reload_thin.png │ ├── ic_categories_first.png │ ├── ic_categories_search.png │ ├── ic_faxian_bangdan.png │ ├── ic_faxian_wanben.png │ ├── ic_faxian_zhuanti.png │ ├── ic_female.png │ ├── ic_findindex_item_title_icon.png │ ├── ic_img_num1.png │ ├── ic_img_num2.png │ ├── ic_img_num3.png │ ├── ic_infor_popshare_copylink_nor.png │ ├── ic_infor_popshare_qq_nor.png │ ├── ic_infor_popshare_weixing_nor.png │ ├── ic_launcher.png │ ├── ic_left_arrow.png │ ├── ic_libraby_jianbian.png │ ├── ic_library_search.png │ ├── ic_light_process_point.png │ ├── ic_male.png │ ├── ic_page_indicator.png │ ├── ic_page_indicator_focused.png │ ├── ic_remove_bookshelf.png │ ├── ic_right_arrow.png │ ├── ic_tab_xc_normal.png │ ├── ic_tab_xc_selected.png │ ├── ic_theme1_border.png │ ├── ic_theme1_read_bg.png │ ├── ic_theme2_border.png │ ├── ic_theme2_read_bg.png │ ├── ic_theme3_border.png │ ├── ic_theme3_read_bg.png │ ├── ic_theme4_border.png │ ├── ic_theme4_read_bg.png │ ├── ic_theme5_border.png │ ├── ic_theme5_read_bg.png │ ├── ic_theme_eye.png │ ├── ic_theme_moon.png │ ├── ic_title_back.png │ ├── ic_wode_about.png │ ├── ic_wode_favor.png │ ├── ic_wode_fqa.png │ ├── ic_wode_help.png │ ├── ic_wode_history.png │ ├── ic_wode_share.png │ ├── im_maintab_topline.png │ ├── index_search.png │ ├── kaoyan_maintab_btn_topline.png │ ├── library_search_crude.png │ ├── normal_loading.png │ ├── splash1_bg.png │ ├── splash2_bg.png │ ├── splash3_bg.png │ ├── tab_bookcity_select.png │ ├── tab_bookcity_unselect.png │ ├── tab_bookshelf_select.png │ ├── tab_bookshelf_unselect.png │ ├── tab_find_select.png │ ├── tab_find_unselect.png │ ├── tab_myinfo_select.png │ └── tab_myinfo_unselect.png │ ├── mipmap-xxhdpi │ └── ic_launcher.png │ ├── mipmap-xxxhdpi │ └── ic_launcher.png │ ├── values-v19 │ └── styles.xml │ ├── values-v21 │ └── styles.xml │ └── values │ ├── colors.xml │ ├── strings.xml │ ├── strings_activity.xml │ ├── styles.xml │ └── widget_strings.xml ├── build.gradle ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── resource ├── 1.png ├── 2.png ├── 3.png ├── 4.png └── qrcode.png └── settings.gradle /.gitignore: -------------------------------------------------------------------------------- 1 | # Built application files 2 | *.apk 3 | *.ap_ 4 | *.aab 5 | 6 | # Files for the ART/Dalvik VM 7 | *.dex 8 | 9 | # Java class files 10 | *.class 11 | 12 | # Generated files 13 | bin/ 14 | gen/ 15 | out/ 16 | # Uncomment the following line in case you need and you don't have the release build type files in your app 17 | # release/ 18 | 19 | # Gradle files 20 | .gradle/ 21 | build/ 22 | 23 | # Local configuration file (sdk path, etc) 24 | local.properties 25 | 26 | # Proguard folder generated by Eclipse 27 | proguard/ 28 | 29 | # Log Files 30 | *.log 31 | 32 | # Android Studio Navigation editor temp files 33 | .navigation/ 34 | 35 | # Android Studio captures folder 36 | captures/ 37 | 38 | # IntelliJ 39 | *.iml 40 | .idea/workspace.xml 41 | .idea/tasks.xml 42 | .idea/gradle.xml 43 | .idea/assetWizardSettings.xml 44 | .idea/dictionaries 45 | .idea/libraries 46 | # Android Studio 3 in .gitignore file. 47 | .idea/caches 48 | .idea/modules.xml 49 | # Comment next line if keeping position of elements in Navigation Editor is relevant for you 50 | .idea/navEditor.xml 51 | 52 | # Keystore files 53 | # Uncomment the following lines if you do not want to check your keystore files in. 54 | #*.jks 55 | #*.keystore 56 | 57 | # External native build folder generated in Android Studio 2.2 and later 58 | .externalNativeBuild 59 | .cxx/ 60 | 61 | # Google Services (e.g. APIs or Firebase) 62 | # google-services.json 63 | 64 | # Freeline 65 | freeline.py 66 | freeline/ 67 | freeline_project_description.json 68 | 69 | # fastlane 70 | fastlane/report.xml 71 | fastlane/Preview.html 72 | fastlane/screenshots 73 | fastlane/test_output 74 | fastlane/readme.md 75 | 76 | # Version control 77 | vcs.xml 78 | 79 | # lint 80 | lint/intermediates/ 81 | lint/generated/ 82 | lint/outputs/ 83 | lint/tmp/ 84 | # lint/reports/ 85 | 86 | /local.properties 87 | /.idea/caches 88 | /.idea/libraries 89 | /.idea/modules.xml 90 | /.idea/workspace.xml 91 | /.idea/navEditor.xml 92 | /.idea/assetWizardSettings.xml 93 | .DS_Store 94 | /build 95 | /captures 96 | .externalNativeBuild 97 | .cxx 98 | -------------------------------------------------------------------------------- /.idea/.name: -------------------------------------------------------------------------------- 1 | book3 -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 9 | 10 | 11 | 12 | 13 | 1.8 14 | 15 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /.idea/runConfigurations.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 11 | 12 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 阅小说 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 阅小说Android客户端 2 | 3 | Android客户端使用的是阅小说开源免费的API: 4 | 5 | [阅小说接口文档](https://github.com/yuenov/reader-api) 6 | 7 | 阅小说App已经上线[App Store](https://apps.apple.com/cn/app/id1505061125)和[Google Play](https://play.google.com/store/apps/details?id=com.books.yuenov),也可以通过下面的链接下载: 8 | 9 | **阅小说下载地址** 10 | 11 | **[http://yuenov.com](http://yuenov.com?ch=g)** 12 | 13 | 14 | 15 | 16 | **欢迎对我们产品提出任何的意见与反馈** 17 | 18 | *Telegram*: [https://t.me/yuenov](https://t.me/yuenov) 19 | 20 | *Gmail*: 21 | 22 | 相关链接: 23 | 24 | [阅小说iOS客户端源码](https://github.com/yuenov/reader-ios) 25 | 26 | [阅小说接口文档](https://github.com/yuenov/reader-api) 27 | 28 | --- 29 | 30 | ## 部分界面预览 31 | 32 | 33 | 34 | ## 声明 35 | 36 | **服务器只提供搜索以及在线转码的计算能力,没有存储任何小说内容。如有任何疑问请通过上面提供的联系方式联系我们。** 37 | -------------------------------------------------------------------------------- /app/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /app/libs/Android-SpinKit140.aar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/libs/Android-SpinKit140.aar -------------------------------------------------------------------------------- /app/libs/SQLiteStudioRemote.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/libs/SQLiteStudioRemote.jar -------------------------------------------------------------------------------- /app/libs/roundedimageview-release.aar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/libs/roundedimageview-release.aar -------------------------------------------------------------------------------- /app/libs/toasty-142.aar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/libs/toasty-142.aar -------------------------------------------------------------------------------- /app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile 22 | -------------------------------------------------------------------------------- /app/release/output.json: -------------------------------------------------------------------------------- 1 | [{"outputType":{"type":"APK"},"apkData":{"type":"MAIN","splits":[],"versionCode":5,"versionName":"1.0.0.6","enabled":true,"outputFile":"app-release.apk","fullName":"release","baseName":"release"},"path":"app-release.apk","properties":{}}] -------------------------------------------------------------------------------- /app/src/main/java/com/yuenov/open/activitys/FirstActivity.java: -------------------------------------------------------------------------------- 1 | package com.yuenov.open.activitys; 2 | 3 | import android.content.Intent; 4 | 5 | import com.yuenov.open.R; 6 | import com.yuenov.open.activitys.baseInfo.BaseActivity; 7 | import com.yuenov.open.constant.ConstantSetting; 8 | import com.yuenov.open.utils.UtilityAppConfig; 9 | import com.yuenov.open.utils.UtilityException; 10 | import com.yuenov.open.widget.TimeView; 11 | import com.renrui.libraries.util.LibUtility; 12 | 13 | public class FirstActivity extends BaseActivity implements TimeView.ITime { 14 | 15 | private TimeView timeView; 16 | 17 | @Override 18 | protected int getLayoutId() { 19 | return R.layout.activity_first; 20 | } 21 | 22 | @Override 23 | protected void initExtra() { 24 | 25 | } 26 | 27 | @Override 28 | protected void initListener() { 29 | } 30 | 31 | @Override 32 | protected void initData() { 33 | timeView = new TimeView(); 34 | timeView.setInterval(ConstantSetting.first_WaitTime); 35 | timeView.setListener(this); 36 | timeView.start(); 37 | 38 | LibUtility.initStatusHeight(this); 39 | 40 | // 更新配置信息 41 | UtilityAppConfig.updateConfigInfo(); 42 | } 43 | 44 | @Override 45 | public void timeCycle(int counts) { 46 | 47 | try { 48 | timeView.stop(); 49 | finish(); 50 | 51 | Intent intent = new Intent(this, MainActivity.class); 52 | startActivity(intent); 53 | } catch (Exception ex) { 54 | UtilityException.catchException(ex); 55 | } 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /app/src/main/java/com/yuenov/open/adapters/BangDanListAdapter.java: -------------------------------------------------------------------------------- 1 | package com.yuenov.open.adapters; 2 | 3 | import androidx.annotation.NonNull; 4 | 5 | import com.yuenov.open.R; 6 | import com.yuenov.open.model.standard.CategoryMenuItem; 7 | import com.yuenov.open.utils.images.UtilityImage; 8 | import com.chad.library.adapter.base.BaseQuickAdapter; 9 | import com.chad.library.adapter.base.BaseViewHolder; 10 | import com.renrui.libraries.util.UtilitySecurity; 11 | 12 | import java.util.List; 13 | 14 | public class BangDanListAdapter extends BaseQuickAdapter { 15 | 16 | public BangDanListAdapter(List inviteList) { 17 | super(R.layout.view_adapter_bangdan_item, inviteList); 18 | } 19 | 20 | @Override 21 | protected void convert(@NonNull BaseViewHolder helper, CategoryMenuItem item) { 22 | 23 | UtilitySecurity.resetVisibility(helper.getView(R.id.viewAccLine), helper.getAdapterPosition() > 0); 24 | 25 | com.makeramen.roundedimageview.RoundedImageView rivAccCoverImg = helper.getView(R.id.rivAccCoverImg); 26 | UtilityImage.setImage(rivAccCoverImg, item.coverImg, R.mipmap.ic_book_list_default); 27 | 28 | helper.setText(R.id.tvAccCategoryName, item.categoryName); 29 | 30 | helper.addOnClickListener(R.id.rivClCoverImg); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /app/src/main/java/com/yuenov/open/adapters/BookMenuListAdapter.java: -------------------------------------------------------------------------------- 1 | package com.yuenov.open.adapters; 2 | 3 | import android.view.View; 4 | import android.view.ViewGroup; 5 | import android.widget.BaseAdapter; 6 | import android.widget.TextView; 7 | 8 | import com.yuenov.open.R; 9 | import com.yuenov.open.application.MyApplication; 10 | import com.yuenov.open.database.tb.TbBookChapter; 11 | import com.renrui.libraries.util.UtilitySecurity; 12 | 13 | import java.util.ArrayList; 14 | import java.util.List; 15 | 16 | /** 17 | * 目录列表 18 | */ 19 | public class BookMenuListAdapter extends BaseAdapter { 20 | 21 | private List list; 22 | 23 | public BookMenuListAdapter(List lisValue) { 24 | if (UtilitySecurity.isEmpty(lisValue)) 25 | list = new ArrayList<>(); 26 | else 27 | this.list = lisValue; 28 | } 29 | 30 | @Override 31 | public int getCount() { 32 | return list.size(); 33 | } 34 | 35 | @Override 36 | public Object getItem(int i) { 37 | return null; 38 | } 39 | 40 | @Override 41 | public long getItemId(int i) { 42 | return 0; 43 | } 44 | 45 | @Override 46 | public View getView(int i, View view, ViewGroup viewGroup) { 47 | 48 | ViewHolder viewHolder; 49 | if (view == null) { 50 | viewHolder = new ViewHolder(); 51 | view = View.inflate(MyApplication.getAppContext(), R.layout.view_adapter_item_bookmenu, null); 52 | viewHolder.tvAibmName = view.findViewById(R.id.tvAibmName); 53 | view.setTag(viewHolder); 54 | } else { 55 | viewHolder = (ViewHolder) view.getTag(); 56 | } 57 | 58 | UtilitySecurity.setText(viewHolder.tvAibmName, list.get(i).chapterName); 59 | UtilitySecurity.setTextColor(viewHolder.tvAibmName, UtilitySecurity.isEmpty(list.get(i).content) ? R.color.gray_9999 : R.color.gray_3333); 60 | 61 | return view; 62 | } 63 | 64 | class ViewHolder { 65 | TextView tvAibmName; 66 | } 67 | } 68 | -------------------------------------------------------------------------------- /app/src/main/java/com/yuenov/open/adapters/BookPreviewItemAdapter.java: -------------------------------------------------------------------------------- 1 | package com.yuenov.open.adapters; 2 | 3 | import android.view.View; 4 | 5 | import androidx.annotation.NonNull; 6 | 7 | import com.yuenov.open.R; 8 | import com.yuenov.open.model.standard.CategoriesListItem; 9 | import com.yuenov.open.utils.UtilityData; 10 | import com.yuenov.open.utils.images.UtilityImage; 11 | import com.chad.library.adapter.base.BaseQuickAdapter; 12 | import com.chad.library.adapter.base.BaseViewHolder; 13 | 14 | import java.util.List; 15 | 16 | /** 17 | * 目录列表item 18 | */ 19 | public class BookPreviewItemAdapter extends BaseQuickAdapter implements View.OnClickListener { 20 | 21 | public BookPreviewItemAdapter(List inviteList) { 22 | super(R.layout.view_adapter_item_category_list, inviteList); 23 | } 24 | 25 | @Override 26 | protected void convert(@NonNull BaseViewHolder helper, CategoriesListItem item) { 27 | 28 | com.makeramen.roundedimageview.RoundedImageView rivBciCoverImg = helper.getView(R.id.rivBciCoverImg); 29 | UtilityImage.setImage(rivBciCoverImg, item.coverImg,R.mipmap.ic_book_list_default); 30 | 31 | helper.setText(R.id.tvBciTitle,item.title); 32 | helper.setText(R.id.tvBciAuthor,item.author); 33 | helper.setText(R.id.tvBciDesc,UtilityData.deleteStartAndEndNewLine( item.desc)); 34 | 35 | helper.addOnClickListener(R.id.llBciBaseInfo,R.id.tvBciTitle,R.id.tvBciAuthor,R.id.tvBciDesc,R.id.llBciShowDetail); 36 | } 37 | 38 | @Override 39 | public void onClick(View view) { 40 | 41 | } 42 | } -------------------------------------------------------------------------------- /app/src/main/java/com/yuenov/open/adapters/BookSelectDownloadMenuListAdapter.java: -------------------------------------------------------------------------------- 1 | package com.yuenov.open.adapters; 2 | 3 | import android.view.View; 4 | import android.view.ViewGroup; 5 | import android.widget.BaseAdapter; 6 | import android.widget.TextView; 7 | 8 | import com.yuenov.open.R; 9 | import com.yuenov.open.application.MyApplication; 10 | import com.renrui.libraries.util.UtilitySecurity; 11 | 12 | import java.util.ArrayList; 13 | import java.util.List; 14 | 15 | /** 16 | * 下载列表 17 | */ 18 | public class BookSelectDownloadMenuListAdapter extends BaseAdapter { 19 | 20 | private List list; 21 | 22 | public BookSelectDownloadMenuListAdapter(List value) { 23 | if (UtilitySecurity.isEmpty(value)) 24 | list = new ArrayList<>(); 25 | else 26 | this.list = value; 27 | } 28 | 29 | @Override 30 | public int getCount() { 31 | return list.size(); 32 | } 33 | 34 | @Override 35 | public Object getItem(int i) { 36 | return null; 37 | } 38 | 39 | @Override 40 | public long getItemId(int i) { 41 | return 0; 42 | } 43 | 44 | @Override 45 | public View getView(int i, View view, ViewGroup viewGroup) { 46 | 47 | ViewHolder viewHolder; 48 | if (view == null) { 49 | viewHolder = new ViewHolder(); 50 | view = View.inflate(MyApplication.getAppContext(), R.layout.view_adapter_item_selectdownloadmenu, null); 51 | viewHolder.tvAisdName = view.findViewById(R.id.tvAisdName); 52 | view.setTag(viewHolder); 53 | } else { 54 | viewHolder = (ViewHolder) view.getTag(); 55 | } 56 | 57 | UtilitySecurity.setText(viewHolder.tvAisdName, list.get(i)); 58 | 59 | return view; 60 | } 61 | 62 | class ViewHolder { 63 | TextView tvAisdName; 64 | } 65 | } 66 | -------------------------------------------------------------------------------- /app/src/main/java/com/yuenov/open/adapters/RankListAdapter.java: -------------------------------------------------------------------------------- 1 | package com.yuenov.open.adapters; 2 | 3 | import androidx.annotation.NonNull; 4 | 5 | import com.yuenov.open.R; 6 | import com.yuenov.open.model.standard.RankItemInfo; 7 | import com.yuenov.open.widget.RankItemImageView; 8 | import com.chad.library.adapter.base.BaseQuickAdapter; 9 | import com.chad.library.adapter.base.BaseViewHolder; 10 | import com.renrui.libraries.util.UtilitySecurity; 11 | 12 | import java.util.List; 13 | 14 | /** 15 | * 榜单 16 | */ 17 | public class RankListAdapter extends BaseQuickAdapter { 18 | 19 | public RankListAdapter(List inviteList) { 20 | super(R.layout.view_adapter_ranklist_item, inviteList); 21 | } 22 | 23 | @Override 24 | protected void convert(@NonNull BaseViewHolder helper, RankItemInfo item) { 25 | 26 | UtilitySecurity.resetVisibility(helper.getView(R.id.viewAiRkLine), helper.getAdapterPosition() > 0); 27 | 28 | RankItemImageView riAiRkImg = helper.getView(R.id.riAiRkImg); 29 | riAiRkImg.setData(item.coverImgs); 30 | helper.setText(R.id.tvAiRkName, item.rankName); 31 | 32 | // 点击事件 33 | helper.addOnClickListener(R.id.rlAiRkContent, R.id.riAiRkImg, R.id.tvAiRkName); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /app/src/main/java/com/yuenov/open/adapters/SearchBookDefaultListAdapter.java: -------------------------------------------------------------------------------- 1 | package com.yuenov.open.adapters; 2 | 3 | import android.widget.TextView; 4 | 5 | import androidx.annotation.NonNull; 6 | 7 | import com.yuenov.open.R; 8 | import com.yuenov.open.model.standard.CategoriesListItem; 9 | import com.yuenov.open.utils.images.UtilityImage; 10 | import com.chad.library.adapter.base.BaseQuickAdapter; 11 | import com.chad.library.adapter.base.BaseViewHolder; 12 | import com.renrui.libraries.util.UtilitySecurity; 13 | 14 | import java.util.List; 15 | 16 | /** 17 | * 搜索图书页 默认列表 18 | */ 19 | public class SearchBookDefaultListAdapter extends BaseQuickAdapter { 20 | 21 | public SearchBookDefaultListAdapter(List inviteList) { 22 | super(R.layout.view_adapter_searchdefault_book, inviteList); 23 | } 24 | 25 | @Override 26 | protected void convert(@NonNull BaseViewHolder helper, CategoriesListItem item) { 27 | 28 | TextView tvApSiPosition = helper.getView(R.id.tvApSiPosition); 29 | UtilitySecurity.setText(tvApSiPosition, (helper.getAdapterPosition()) + ""); 30 | UtilitySecurity.setTextColor(tvApSiPosition, helper.getAdapterPosition() <= 3 ? R.color.red_3f42 : R.color.gray_9999); 31 | 32 | com.makeramen.roundedimageview.RoundedImageView rivApSiCoverImg = helper.getView(R.id.rivApSiCoverImg); 33 | UtilityImage.setImage(rivApSiCoverImg, item.coverImg, R.mipmap.ic_book_list_default); 34 | 35 | helper.setText(R.id.tvApSiTitle, item.title); 36 | helper.setText(R.id.tvApSiDesc, item.desc); 37 | 38 | // 点击事件 39 | helper.addOnClickListener( 40 | R.id.tvApSiPosition, R.id.rlApSiContent, 41 | R.id.rivApSiCoverImg, R.id.tvApSiTitle, R.id.tvApSiDesc); 42 | } 43 | } -------------------------------------------------------------------------------- /app/src/main/java/com/yuenov/open/application/MyApplication.java: -------------------------------------------------------------------------------- 1 | package com.yuenov.open.application; 2 | 3 | import android.app.Application; 4 | import android.content.Context; 5 | 6 | import com.yuenov.open.constant.ConstantInterFace; 7 | import com.yuenov.open.utils.EditSharedPreferences; 8 | import com.yuenov.open.utils.UtilityException; 9 | import com.renrui.libraries.util.LibrariesCons; 10 | import com.renrui.libraries.util.UtilitySecurity; 11 | import com.renrui.libraries.util.mHttpClient; 12 | 13 | import pl.com.salsoft.sqlitestudioremote.SQLiteStudioService; 14 | 15 | public class MyApplication extends Application { 16 | 17 | private static Context mContext; 18 | 19 | public static Context getAppContext() { 20 | return mContext; 21 | } 22 | 23 | @Override 24 | public void onCreate() { 25 | super.onCreate(); 26 | 27 | mContext = this; 28 | 29 | SQLiteStudioService.instance().start(this); 30 | 31 | LibrariesCons.setContext(mContext); 32 | 33 | // temp 34 | // Logger.isDebug = true; 35 | 36 | initHttpInfo(); 37 | } 38 | 39 | public static void initHttpInfo() { 40 | try { 41 | // 域名端口 42 | int port = EditSharedPreferences.readIntFromConfig(EditSharedPreferences.INT_INTERFACEPORT, ConstantInterFace.getDomainPort()); 43 | ConstantInterFace.setDomainPort(port); 44 | 45 | mHttpClient.reInitAsyn(); 46 | 47 | String proxyIp = EditSharedPreferences.readStringFromConfig(EditSharedPreferences.STRING_STRING_PROXYIP); 48 | 49 | // temp 50 | // proxyIp = "172.18.5.166"; 51 | if (!UtilitySecurity.isEmpty(proxyIp)) 52 | mHttpClient.getAsyncHttpClient().setProxy(proxyIp, 8888); 53 | } catch (Exception ex) { 54 | UtilityException.catchException(ex); 55 | } 56 | } 57 | } -------------------------------------------------------------------------------- /app/src/main/java/com/yuenov/open/constant/AboutChapterStatus.java: -------------------------------------------------------------------------------- 1 | package com.yuenov.open.constant; 2 | 3 | public class AboutChapterStatus { 4 | 5 | /** 6 | * 完结 7 | */ 8 | public static final String END = "END"; 9 | 10 | /** 11 | * 连载 12 | */ 13 | public static final String SERIALIZE = "SERIALIZE"; 14 | } 15 | -------------------------------------------------------------------------------- /app/src/main/java/com/yuenov/open/constant/ConstantPageInfo.java: -------------------------------------------------------------------------------- 1 | package com.yuenov.open.constant; 2 | 3 | import com.yuenov.open.R; 4 | 5 | public class ConstantPageInfo { 6 | 7 | /** 8 | * 默认字体大小 9 | */ 10 | public static int lightType = ConstantSetting.LIGHTTYPE_1; 11 | 12 | /** 13 | * 默认字体大小 14 | */ 15 | public static float textSize = 18; 16 | 17 | /** 18 | * 顶部标题默认字体大小 19 | */ 20 | public static float tipTextSize = 13; 21 | /** 22 | * 时间默认字体大小 23 | */ 24 | public static float timeTextSize = 13; 25 | /** 26 | * 进度默认字体大小 27 | */ 28 | public static float processTextSize = 13; 29 | 30 | /** 31 | * 默认字体颜色 32 | */ 33 | public static int textColor = R.color.black; 34 | } 35 | -------------------------------------------------------------------------------- /app/src/main/java/com/yuenov/open/constant/ConstantSetting.java: -------------------------------------------------------------------------------- 1 | package com.yuenov.open.constant; 2 | 3 | public class ConstantSetting { 4 | 5 | // 查看多少章展示广告 6 | public static final int adShowChapterCounts = 10; 7 | 8 | /** 9 | * 最大字体 10 | */ 11 | public static final int MAX_FRONT = 8; 12 | 13 | public static int frontSize = 16; 14 | 15 | public static final int first_WaitTime = 500; 16 | 17 | public static final int LIGHTTYPE_1 = 1; 18 | public static final int LIGHTTYPE_2 = 2; 19 | public static final int LIGHTTYPE_3 = 3; 20 | public static final int LIGHTTYPE_4 = 4; 21 | public static final int LIGHTTYPE_5 = 5; 22 | } 23 | -------------------------------------------------------------------------------- /app/src/main/java/com/yuenov/open/constant/stat/TurnPageType.java: -------------------------------------------------------------------------------- 1 | package com.yuenov.open.constant.stat; 2 | 3 | /** 4 | * 翻页状态 5 | */ 6 | public enum TurnPageType { 7 | 8 | /** 9 | * 上一页 10 | */ 11 | PRE, 12 | 13 | /** 14 | * 下一页 15 | */ 16 | NEXT, 17 | 18 | /** 19 | * 未变更 20 | */ 21 | NONE; 22 | } 23 | -------------------------------------------------------------------------------- /app/src/main/java/com/yuenov/open/database/dao/CacheDao.java: -------------------------------------------------------------------------------- 1 | package com.yuenov.open.database.dao; 2 | 3 | import androidx.room.Dao; 4 | import androidx.room.Delete; 5 | import androidx.room.Insert; 6 | import androidx.room.Query; 7 | import androidx.room.Transaction; 8 | import androidx.room.Update; 9 | 10 | import com.yuenov.open.database.tb.TbCache; 11 | import com.yuenov.open.utils.UtilityException; 12 | import com.renrui.libraries.util.UtilitySecurity; 13 | 14 | @Dao 15 | public abstract class CacheDao { 16 | 17 | @Update 18 | public abstract void update(TbCache... entities); 19 | 20 | @Insert 21 | public abstract void insert(TbCache... entities); 22 | 23 | @Delete 24 | public abstract void delete(TbCache... entities); 25 | 26 | @Query("select * from TbCache where cType = :cType") 27 | public abstract TbCache getEntity(String cType); 28 | 29 | public boolean exists(String cType) { 30 | TbCache entity = getEntity(cType); 31 | return entity != null && !UtilitySecurity.isEmpty(entity.cContent); 32 | } 33 | 34 | @Transaction 35 | public void addOrUpdate(TbCache tbCache) { 36 | if (tbCache == null) 37 | return; 38 | 39 | try { 40 | TbCache entity = getEntity(tbCache.cType); 41 | if (entity == null) { 42 | insert(tbCache); 43 | } else { 44 | tbCache.id = entity.id; 45 | update(tbCache); 46 | } 47 | } catch (Exception ex) { 48 | UtilityException.catchException(ex); 49 | } 50 | } 51 | } -------------------------------------------------------------------------------- /app/src/main/java/com/yuenov/open/database/tb/TbBookChapter.java: -------------------------------------------------------------------------------- 1 | package com.yuenov.open.database.tb; 2 | 3 | import androidx.room.ColumnInfo; 4 | import androidx.room.Entity; 5 | import androidx.room.Index; 6 | import androidx.room.PrimaryKey; 7 | 8 | /** 9 | * 文章目录 10 | */ 11 | @Entity(indices = {@Index(value = {"id", "bookId", "chapterId"})}) 12 | public class TbBookChapter{ 13 | 14 | @PrimaryKey(autoGenerate = true) 15 | public int id; 16 | 17 | @ColumnInfo(name = "bookId") 18 | public int bookId; 19 | 20 | @ColumnInfo(name = "chapterId") 21 | public long chapterId; 22 | 23 | @ColumnInfo(name = "chapterName") 24 | public String chapterName; 25 | 26 | @ColumnInfo(name = "content") 27 | public String content; 28 | } -------------------------------------------------------------------------------- /app/src/main/java/com/yuenov/open/database/tb/TbBookShelf.java: -------------------------------------------------------------------------------- 1 | package com.yuenov.open.database.tb; 2 | 3 | import androidx.room.ColumnInfo; 4 | import androidx.room.Entity; 5 | import androidx.room.Index; 6 | import androidx.room.PrimaryKey; 7 | 8 | /** 9 | * 书架 10 | */ 11 | @Entity(indices = {@Index(value = {"id", "bookId"})}) 12 | public class TbBookShelf { 13 | 14 | @PrimaryKey(autoGenerate = true) 15 | public int id; 16 | 17 | @ColumnInfo(name = "bookId") 18 | public int bookId; 19 | 20 | @ColumnInfo(name = "title") 21 | public String title; 22 | 23 | /** 24 | * 图片地址 25 | */ 26 | @ColumnInfo(name = "coverImg") 27 | public String coverImg; 28 | 29 | /** 30 | * 作者 31 | */ 32 | @ColumnInfo(name = "author") 33 | public String author; 34 | 35 | /** 36 | * 需要更新 37 | */ 38 | @ColumnInfo(name = "hasUpdate") 39 | public boolean hasUpdate; 40 | 41 | /** 42 | * 加入时间 43 | */ 44 | @ColumnInfo(name = "addTime") 45 | public long addTime; 46 | } -------------------------------------------------------------------------------- /app/src/main/java/com/yuenov/open/database/tb/TbCache.java: -------------------------------------------------------------------------------- 1 | package com.yuenov.open.database.tb; 2 | 3 | import androidx.room.ColumnInfo; 4 | import androidx.room.Entity; 5 | import androidx.room.Index; 6 | import androidx.room.PrimaryKey; 7 | 8 | /** 9 | * 缓存 10 | */ 11 | @Entity(indices = {@Index(value = {"id", "cType"})}) 12 | public class TbCache { 13 | 14 | @PrimaryKey(autoGenerate = true) 15 | public int id; 16 | 17 | @ColumnInfo(name = "cType") 18 | public String cType; 19 | 20 | @ColumnInfo(name = "cContent") 21 | public String cContent; 22 | } -------------------------------------------------------------------------------- /app/src/main/java/com/yuenov/open/database/tb/TbReadHistory.java: -------------------------------------------------------------------------------- 1 | package com.yuenov.open.database.tb; 2 | 3 | import androidx.room.ColumnInfo; 4 | import androidx.room.Entity; 5 | import androidx.room.Index; 6 | import androidx.room.PrimaryKey; 7 | 8 | /** 9 | * 阅读记录 10 | */ 11 | @Entity(indices = {@Index(value = {"id","bookId"})}) 12 | public class TbReadHistory { 13 | 14 | @PrimaryKey(autoGenerate = true) 15 | public int id; 16 | 17 | @ColumnInfo(name = "bookId") 18 | public int bookId; 19 | 20 | @ColumnInfo(name = "title") 21 | public String title; 22 | 23 | @ColumnInfo(name = "chapterId") 24 | public long chapterId; 25 | 26 | @ColumnInfo(name = "page") 27 | public int page; 28 | 29 | /** 30 | * 图片地址 31 | */ 32 | @ColumnInfo(name = "coverImg") 33 | public String coverImg; 34 | 35 | /** 36 | * 作者 37 | */ 38 | @ColumnInfo(name = "author") 39 | public String author; 40 | 41 | /** 42 | * 是否加入书架 43 | */ 44 | @ColumnInfo(name = "addBookShelf") 45 | public boolean addBookShelf; 46 | 47 | /** 48 | * 最后阅读时间 49 | */ 50 | @ColumnInfo(name = "lastReadTime") 51 | public long lastReadTime; 52 | } -------------------------------------------------------------------------------- /app/src/main/java/com/yuenov/open/fragments/baseInfo/BaseFragment.java: -------------------------------------------------------------------------------- 1 | package com.yuenov.open.fragments.baseInfo; 2 | 3 | import android.os.Bundle; 4 | import android.view.LayoutInflater; 5 | import android.view.View; 6 | import android.view.ViewGroup; 7 | 8 | import androidx.annotation.NonNull; 9 | import androidx.annotation.Nullable; 10 | import androidx.fragment.app.Fragment; 11 | 12 | import butterknife.ButterKnife; 13 | 14 | public abstract class BaseFragment extends Fragment { 15 | 16 | public View viewContent; 17 | 18 | @Nullable 19 | @Override 20 | public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 21 | 22 | if (viewContent == null) { 23 | if (getLayoutId() > 0) 24 | viewContent = View.inflate(getContext(), getLayoutId(), null); 25 | 26 | ButterKnife.bind(this,viewContent); 27 | 28 | initExtra(); 29 | 30 | initLayout(); 31 | 32 | initListener(); 33 | 34 | initData(); 35 | } 36 | 37 | return viewContent; 38 | } 39 | 40 | protected abstract int getLayoutId(); 41 | 42 | protected abstract void initLayout(); 43 | 44 | protected abstract void initExtra(); 45 | 46 | protected abstract void initListener(); 47 | 48 | protected abstract void initData(); 49 | } 50 | -------------------------------------------------------------------------------- /app/src/main/java/com/yuenov/open/interfaces/IDownloadContentListener.java: -------------------------------------------------------------------------------- 1 | package com.yuenov.open.interfaces; 2 | 3 | import com.yuenov.open.model.standard.DownloadBookContentItemInfo; 4 | 5 | import java.util.List; 6 | 7 | /** 8 | * 下载文章 9 | */ 10 | public interface IDownloadContentListener { 11 | 12 | void onDownloadSuccess(List list); 13 | 14 | void onDownloadLoadFail(); 15 | } 16 | -------------------------------------------------------------------------------- /app/src/main/java/com/yuenov/open/interfaces/IDownloadMenuListListener.java: -------------------------------------------------------------------------------- 1 | package com.yuenov.open.interfaces; 2 | 3 | import com.yuenov.open.model.standard.BookMenuItemInfo; 4 | 5 | import java.util.List; 6 | 7 | /** 8 | * 下载目录 9 | */ 10 | public interface IDownloadMenuListListener { 11 | 12 | void onDownloadSuccess(List chapters); 13 | 14 | void onDownloadLoadFail(String s); 15 | } 16 | -------------------------------------------------------------------------------- /app/src/main/java/com/yuenov/open/interfaces/IGetCategoryListListener.java: -------------------------------------------------------------------------------- 1 | package com.yuenov.open.interfaces; 2 | 3 | import com.yuenov.open.model.standard.CategoriesListItem; 4 | 5 | import java.util.List; 6 | 7 | /** 8 | * 获取目录下的图书列表 9 | */ 10 | public interface IGetCategoryListListener { 11 | 12 | void onGetCategoryListSuccess(List list); 13 | 14 | void onGetCategoryListLoadFail(); 15 | } 16 | -------------------------------------------------------------------------------- /app/src/main/java/com/yuenov/open/model/ContentTextViewAttributeSet.java: -------------------------------------------------------------------------------- 1 | package com.yuenov.open.model; 2 | 3 | import com.yuenov.open.constant.ConstantPageInfo; 4 | 5 | public class ContentTextViewAttributeSet { 6 | 7 | /** 8 | * 字体大小(sp) 9 | */ 10 | public float textSize = ConstantPageInfo.textSize; 11 | 12 | /** 13 | * 字体颜色(ColorResourceID) 14 | */ 15 | public int textColor = ConstantPageInfo.textColor; 16 | 17 | /** 18 | * 上下行间距 19 | */ 20 | public int lineSpacingExtra; 21 | } 22 | -------------------------------------------------------------------------------- /app/src/main/java/com/yuenov/open/model/ImageModel.java: -------------------------------------------------------------------------------- 1 | package com.yuenov.open.model; 2 | 3 | public class ImageModel { 4 | public String image; 5 | public String url; 6 | } 7 | -------------------------------------------------------------------------------- /app/src/main/java/com/yuenov/open/model/PageInfoModel.java: -------------------------------------------------------------------------------- 1 | package com.yuenov.open.model; 2 | 3 | import java.util.ArrayList; 4 | import java.util.List; 5 | 6 | public class PageInfoModel { 7 | 8 | public int pages; 9 | public String title; 10 | public List lisText = new ArrayList<>(); 11 | } -------------------------------------------------------------------------------- /app/src/main/java/com/yuenov/open/model/TextModel.java: -------------------------------------------------------------------------------- 1 | package com.yuenov.open.model; 2 | 3 | public class TextModel { 4 | 5 | /** 6 | * 内容 7 | */ 8 | public String text; 9 | 10 | /** 11 | * 字体大小(sp) 12 | */ 13 | public float textSize; 14 | 15 | /** 16 | * 字体是否加粗 17 | */ 18 | public boolean fakeBoldText; 19 | 20 | /** 21 | * 内容长度 22 | */ 23 | public int textLength; 24 | 25 | /** 26 | * 内容高度 27 | */ 28 | public int height; 29 | 30 | /** 31 | * 是否顶部标题 32 | */ 33 | public boolean isChapter; 34 | 35 | /** 36 | * 是否标题 37 | */ 38 | public boolean isTitle; 39 | 40 | /** 41 | * 段落首行 42 | */ 43 | public boolean partFirstLine; 44 | } -------------------------------------------------------------------------------- /app/src/main/java/com/yuenov/open/model/eventBus/OnAppActiveChangeEvent.java: -------------------------------------------------------------------------------- 1 | package com.yuenov.open.model.eventBus; 2 | 3 | /** 4 | * App从后台切换到前台 5 | */ 6 | public class OnAppActiveChangeEvent { 7 | } 8 | -------------------------------------------------------------------------------- /app/src/main/java/com/yuenov/open/model/eventBus/OnBookShelfChangeEvent.java: -------------------------------------------------------------------------------- 1 | package com.yuenov.open.model.eventBus; 2 | 3 | import com.yuenov.open.database.tb.TbBookShelf; 4 | 5 | /** 6 | * 添加或移除书架 7 | */ 8 | public class OnBookShelfChangeEvent { 9 | 10 | public TbBookShelf addTbBookShelf; 11 | 12 | public int removeBookId; 13 | } 14 | -------------------------------------------------------------------------------- /app/src/main/java/com/yuenov/open/model/eventBus/OnDownloadBackUpChangeEvent.java: -------------------------------------------------------------------------------- 1 | package com.yuenov.open.model.eventBus; 2 | 3 | // 下载切换到后台 4 | public class OnDownloadBackUpChangeEvent { 5 | } 6 | -------------------------------------------------------------------------------- /app/src/main/java/com/yuenov/open/model/eventBus/OnDownloadMenuFinishChangeEvent.java: -------------------------------------------------------------------------------- 1 | package com.yuenov.open.model.eventBus; 2 | 3 | // 下载目录完成 4 | public class OnDownloadMenuFinishChangeEvent { 5 | public int bookId; 6 | } 7 | -------------------------------------------------------------------------------- /app/src/main/java/com/yuenov/open/model/httpModel/BookCheckUpdateHttpModel.java: -------------------------------------------------------------------------------- 1 | package com.yuenov.open.model.httpModel; 2 | 3 | /** 4 | * 检查图书更新标志 5 | */ 6 | public class BookCheckUpdateHttpModel extends InterFaceBaseHttpModel { 7 | @Override 8 | public String getUrl() { 9 | return getInterFaceStart() + "book/checkUpdate"; 10 | } 11 | } -------------------------------------------------------------------------------- /app/src/main/java/com/yuenov/open/model/httpModel/BookGetRecommendHttpModel.java: -------------------------------------------------------------------------------- 1 | package com.yuenov.open.model.httpModel; 2 | 3 | import com.yuenov.open.constant.ConstantInterFace; 4 | 5 | /** 6 | * 预览页换一批 && 预览页热门推荐-查看更多 7 | */ 8 | public class BookGetRecommendHttpModel extends InterFaceBaseHttpModel { 9 | 10 | public int bookId; 11 | public int pageNum; 12 | public int pageSize = ConstantInterFace.pageSize; 13 | 14 | @Override 15 | public String getUrl() { 16 | return getInterFaceStart() + "book/getRecommend"; 17 | } 18 | } -------------------------------------------------------------------------------- /app/src/main/java/com/yuenov/open/model/httpModel/BookPreviewHttpModel.java: -------------------------------------------------------------------------------- 1 | package com.yuenov.open.model.httpModel; 2 | 3 | /** 4 | * 预览 5 | */ 6 | public class BookPreviewHttpModel extends InterFaceBaseHttpModel { 7 | 8 | public int bookId; 9 | 10 | @Override 11 | public String getUrl() { 12 | return getInterFaceStart() + "book/getDetail"; 13 | } 14 | } -------------------------------------------------------------------------------- /app/src/main/java/com/yuenov/open/model/httpModel/BookProblemHttpModel.java: -------------------------------------------------------------------------------- 1 | package com.yuenov.open.model.httpModel; 2 | 3 | /** 4 | * 书籍问题反馈 5 | */ 6 | public class BookProblemHttpModel extends InterFaceBaseHttpModel { 7 | 8 | public int bookId; 9 | public Long chapterId; 10 | public String correctType; 11 | 12 | @Override 13 | public String getUrl() { 14 | return getInterFaceStart() + "problem/saveBookCorrect"; 15 | } 16 | } -------------------------------------------------------------------------------- /app/src/main/java/com/yuenov/open/model/httpModel/CategoriesListHttpModel.java: -------------------------------------------------------------------------------- 1 | package com.yuenov.open.model.httpModel; 2 | 3 | import com.yuenov.open.constant.ConstantInterFace; 4 | 5 | /** 6 | * 目录列表 7 | */ 8 | public class CategoriesListHttpModel extends InterFaceBaseHttpModel { 9 | 10 | public int categoryId; 11 | 12 | /** 13 | * 渠道 14 | */ 15 | public Integer channelId; 16 | 17 | public String filter; 18 | 19 | public String orderBy; 20 | 21 | public int pageNum; 22 | public int pageSize = ConstantInterFace.pageSize; 23 | 24 | @Override 25 | public String getUrl() { 26 | return getInterFaceStart() + "book/getCategoryId"; 27 | } 28 | } -------------------------------------------------------------------------------- /app/src/main/java/com/yuenov/open/model/httpModel/CategoryDiscoveryAllListHttpModel.java: -------------------------------------------------------------------------------- 1 | package com.yuenov.open.model.httpModel; 2 | 3 | import com.yuenov.open.constant.ConstantInterFace; 4 | 5 | /** 6 | * 换一批 7 | */ 8 | public class CategoryDiscoveryAllListHttpModel extends InterFaceBaseHttpModel { 9 | 10 | public int categoryId; 11 | public int pageNum; 12 | public int pageSize = ConstantInterFace.pageSize; 13 | 14 | public String type; 15 | 16 | @Override 17 | public String getUrl() { 18 | return getInterFaceStart() + "category/discoveryAll"; 19 | } 20 | } -------------------------------------------------------------------------------- /app/src/main/java/com/yuenov/open/model/httpModel/CategoryDiscoveryHttpModel.java: -------------------------------------------------------------------------------- 1 | package com.yuenov.open.model.httpModel; 2 | 3 | /** 4 | * 发现 5 | */ 6 | public class CategoryDiscoveryHttpModel extends InterFaceBaseHttpModel { 7 | 8 | public int pageNum; 9 | public int pageSize; 10 | 11 | @Override 12 | public String getUrl() { 13 | return getInterFaceStart() + "category/discovery"; 14 | } 15 | } -------------------------------------------------------------------------------- /app/src/main/java/com/yuenov/open/model/httpModel/ChapterUpdateForceHttpModel.java: -------------------------------------------------------------------------------- 1 | package com.yuenov.open.model.httpModel; 2 | 3 | /** 4 | * 更新当前章节内容 5 | */ 6 | public class ChapterUpdateForceHttpModel extends InterFaceBaseHttpModel { 7 | 8 | @Override 9 | public String getUrl() { 10 | return getInterFaceStart() + "chapter/updateForce"; 11 | } 12 | } -------------------------------------------------------------------------------- /app/src/main/java/com/yuenov/open/model/httpModel/DownloadChapterHttpModel.java: -------------------------------------------------------------------------------- 1 | package com.yuenov.open.model.httpModel; 2 | 3 | /** 4 | * 下载 5 | */ 6 | public class DownloadChapterHttpModel extends InterFaceBaseHttpModel { 7 | 8 | @Override 9 | public String getUrl() { 10 | return getInterFaceStart() + "chapter/get"; 11 | } 12 | } -------------------------------------------------------------------------------- /app/src/main/java/com/yuenov/open/model/httpModel/GetAppConfigHttpModel.java: -------------------------------------------------------------------------------- 1 | package com.yuenov.open.model.httpModel; 2 | 3 | /** 4 | * 获取配置信息 5 | */ 6 | public class GetAppConfigHttpModel extends InterFaceBaseHttpModel { 7 | 8 | @Override 9 | public String getUrl() { 10 | return getInterFaceStart() + "system/getAppConfig"; 11 | } 12 | } -------------------------------------------------------------------------------- /app/src/main/java/com/yuenov/open/model/httpModel/GetBookMenuListHttpModel.java: -------------------------------------------------------------------------------- 1 | package com.yuenov.open.model.httpModel; 2 | 3 | /** 4 | * 获取目录列表 5 | */ 6 | public class GetBookMenuListHttpModel extends InterFaceBaseHttpModel { 7 | 8 | public int bookId; 9 | public Long chapterId; 10 | 11 | @Override 12 | public String getUrl() { 13 | return getInterFaceStart() + "chapter/getByBookId"; 14 | } 15 | } -------------------------------------------------------------------------------- /app/src/main/java/com/yuenov/open/model/httpModel/GetCategoryChannelHttpModel.java: -------------------------------------------------------------------------------- 1 | package com.yuenov.open.model.httpModel; 2 | 3 | public class GetCategoryChannelHttpModel extends InterFaceBaseHttpModel { 4 | 5 | public String getUrl() { 6 | return getInterFaceStart() + "category/getCategoryChannel"; 7 | } 8 | } -------------------------------------------------------------------------------- /app/src/main/java/com/yuenov/open/model/httpModel/GetCategoryEndHttpModel.java: -------------------------------------------------------------------------------- 1 | package com.yuenov.open.model.httpModel; 2 | 3 | import com.yuenov.open.constant.ConstantInterFace; 4 | 5 | /** 6 | * 完本 7 | */ 8 | public class GetCategoryEndHttpModel extends InterFaceBaseHttpModel { 9 | 10 | public int pageNum; 11 | public int pageSize = ConstantInterFace.pageSize; 12 | 13 | @Override 14 | public String getUrl() { 15 | return getInterFaceStart() + "category/getCategoryEnd"; 16 | } 17 | } -------------------------------------------------------------------------------- /app/src/main/java/com/yuenov/open/model/httpModel/GetRankListHttpModel.java: -------------------------------------------------------------------------------- 1 | package com.yuenov.open.model.httpModel; 2 | 3 | /** 4 | * 榜单 5 | */ 6 | public class GetRankListHttpModel extends InterFaceBaseHttpModel { 7 | 8 | public String getUrl() { 9 | return getInterFaceStart() + "rank/getList"; 10 | } 11 | } -------------------------------------------------------------------------------- /app/src/main/java/com/yuenov/open/model/httpModel/GetRankPageListHttpModel.java: -------------------------------------------------------------------------------- 1 | package com.yuenov.open.model.httpModel; 2 | 3 | /** 4 | * 5 | */ 6 | public class GetRankPageListHttpModel extends InterFaceBaseHttpModel { 7 | 8 | public int channelId; 9 | 10 | public int pageNum; 11 | 12 | public int pageSize; 13 | 14 | public int rankId; 15 | 16 | public String getUrl() { 17 | return getInterFaceStart() + "rank/getPage"; 18 | } 19 | } -------------------------------------------------------------------------------- /app/src/main/java/com/yuenov/open/model/httpModel/GetSpecialHttpModel.java: -------------------------------------------------------------------------------- 1 | package com.yuenov.open.model.httpModel; 2 | 3 | import com.yuenov.open.constant.ConstantInterFace; 4 | 5 | /** 6 | * 专题 7 | */ 8 | public class GetSpecialHttpModel extends InterFaceBaseHttpModel { 9 | 10 | public int pageNum; 11 | public int pageSize = ConstantInterFace.pageSize; 12 | 13 | @Override 14 | public String getUrl() { 15 | return getInterFaceStart() + "book/getSpecialList"; 16 | } 17 | } -------------------------------------------------------------------------------- /app/src/main/java/com/yuenov/open/model/httpModel/GetSpecialPageListHttpModel.java: -------------------------------------------------------------------------------- 1 | package com.yuenov.open.model.httpModel; 2 | 3 | import com.yuenov.open.constant.ConstantInterFace; 4 | 5 | /** 6 | * 专题:换一匹 && 查看全部 7 | */ 8 | public class GetSpecialPageListHttpModel extends InterFaceBaseHttpModel { 9 | 10 | public int id; 11 | public int pageNum; 12 | public int pageSize = ConstantInterFace.pageSize; 13 | 14 | @Override 15 | public String getUrl() { 16 | return getInterFaceStart() + "book/getSpecialPage"; 17 | } 18 | } -------------------------------------------------------------------------------- /app/src/main/java/com/yuenov/open/model/httpModel/InterFaceBaseHttpModel.java: -------------------------------------------------------------------------------- 1 | package com.yuenov.open.model.httpModel; 2 | 3 | import com.yuenov.open.constant.ConstantInterFace; 4 | import com.renrui.libraries.model.baseObject.BaseHttpModel; 5 | 6 | public class InterFaceBaseHttpModel extends BaseHttpModel { 7 | 8 | @Override 9 | public String getUrl() { 10 | return ""; 11 | } 12 | 13 | public String getInterFaceStart() { 14 | return ConstantInterFace.getInterfaceDomain() + "open/api/"; 15 | } 16 | } -------------------------------------------------------------------------------- /app/src/main/java/com/yuenov/open/model/httpModel/PrivacyPolicyHttpModel.java: -------------------------------------------------------------------------------- 1 | package com.yuenov.open.model.httpModel; 2 | 3 | // 隐私政策 4 | public class PrivacyPolicyHttpModel extends InterFaceBaseHttpModel { 5 | 6 | @Override 7 | public String getUrl() { 8 | return getInterFaceStart() + "privacy/privacyPolicy"; 9 | } 10 | } -------------------------------------------------------------------------------- /app/src/main/java/com/yuenov/open/model/httpModel/PrivacyUseragreementHttpModel.java: -------------------------------------------------------------------------------- 1 | package com.yuenov.open.model.httpModel; 2 | 3 | // 用户服务协议 4 | public class PrivacyUseragreementHttpModel extends InterFaceBaseHttpModel { 5 | 6 | @Override 7 | public String getUrl() { 8 | return getInterFaceStart() + "privacy/useragreement"; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /app/src/main/java/com/yuenov/open/model/httpModel/SaveBookReportHttpModel.java: -------------------------------------------------------------------------------- 1 | package com.yuenov.open.model.httpModel; 2 | 3 | /** 4 | * 意见反馈-缺少书籍 5 | */ 6 | public class SaveBookReportHttpModel extends InterFaceBaseHttpModel { 7 | 8 | public String author; 9 | public String title; 10 | public Integer bookId; 11 | 12 | @Override 13 | public String getUrl() { 14 | return getInterFaceStart() + "problem/saveBookReport"; 15 | } 16 | } -------------------------------------------------------------------------------- /app/src/main/java/com/yuenov/open/model/httpModel/SaveProductProblemHttpModel.java: -------------------------------------------------------------------------------- 1 | package com.yuenov.open.model.httpModel; 2 | 3 | /** 4 | * 意见反馈-产品问题 5 | */ 6 | public class SaveProductProblemHttpModel extends InterFaceBaseHttpModel { 7 | 8 | @Override 9 | public String getUrl() { 10 | return getInterFaceStart() + "problem/saveProductProblem"; 11 | } 12 | } -------------------------------------------------------------------------------- /app/src/main/java/com/yuenov/open/model/httpModel/SearchBookHttpModel.java: -------------------------------------------------------------------------------- 1 | package com.yuenov.open.model.httpModel; 2 | 3 | import com.yuenov.open.constant.ConstantInterFace; 4 | 5 | /** 6 | * 搜索 7 | */ 8 | public class SearchBookHttpModel extends InterFaceBaseHttpModel { 9 | public String keyWord; 10 | public int pageNum; 11 | public int pageSize = ConstantInterFace.pageSize; 12 | 13 | @Override 14 | public String getUrl() { 15 | return getInterFaceStart() + "book/search"; 16 | } 17 | } -------------------------------------------------------------------------------- /app/src/main/java/com/yuenov/open/model/httpModel/UserUpdateHttpModel.java: -------------------------------------------------------------------------------- 1 | package com.yuenov.open.model.httpModel; 2 | 3 | /** 4 | * 保存用户信息 5 | */ 6 | public class UserUpdateHttpModel extends InterFaceBaseHttpModel { 7 | 8 | @Override 9 | public String getUrl() { 10 | return getInterFaceStart() + "user/update"; 11 | } 12 | } -------------------------------------------------------------------------------- /app/src/main/java/com/yuenov/open/model/responseModel/BookCheckUpdateResponse.java: -------------------------------------------------------------------------------- 1 | package com.yuenov.open.model.responseModel; 2 | 3 | import com.yuenov.open.model.standard.CheckUpdateItemInfo; 4 | 5 | import java.util.List; 6 | 7 | public class BookCheckUpdateResponse { 8 | public List updateList; 9 | } 10 | -------------------------------------------------------------------------------- /app/src/main/java/com/yuenov/open/model/responseModel/CategoriesListResponse.java: -------------------------------------------------------------------------------- 1 | package com.yuenov.open.model.responseModel; 2 | 3 | import com.yuenov.open.model.standard.CategoriesListItem; 4 | import com.renrui.libraries.model.baseObject.BaseResponseModel; 5 | 6 | import java.util.List; 7 | 8 | /** 9 | * 目录 10 | */ 11 | public class CategoriesListResponse extends BaseResponseModel { 12 | 13 | public int total; 14 | public int page; 15 | public int page_size; 16 | 17 | public List list; 18 | } 19 | -------------------------------------------------------------------------------- /app/src/main/java/com/yuenov/open/model/responseModel/CategoryChannelListResponse.java: -------------------------------------------------------------------------------- 1 | package com.yuenov.open.model.responseModel; 2 | 3 | import com.yuenov.open.model.standard.CategoryChannelItemInfo; 4 | import com.renrui.libraries.model.baseObject.BaseResponseModel; 5 | 6 | import java.util.ArrayList; 7 | 8 | /** 9 | * 分类 10 | */ 11 | public class CategoryChannelListResponse extends BaseResponseModel { 12 | 13 | public ArrayList channels = new ArrayList<>(); 14 | } 15 | -------------------------------------------------------------------------------- /app/src/main/java/com/yuenov/open/model/responseModel/DownloadListResponse.java: -------------------------------------------------------------------------------- 1 | package com.yuenov.open.model.responseModel; 2 | 3 | import com.yuenov.open.model.standard.DownloadBookContentItemInfo; 4 | import com.renrui.libraries.model.baseObject.BaseResponseModel; 5 | 6 | import java.util.List; 7 | 8 | /** 9 | * 下载 10 | */ 11 | public class DownloadListResponse extends BaseResponseModel { 12 | 13 | public List list; 14 | } 15 | -------------------------------------------------------------------------------- /app/src/main/java/com/yuenov/open/model/responseModel/FindIndexInfoResponse.java: -------------------------------------------------------------------------------- 1 | package com.yuenov.open.model.responseModel; 2 | 3 | import com.yuenov.open.model.standard.FindItemBookItemModel; 4 | import com.renrui.libraries.model.baseObject.BaseResponseModel; 5 | 6 | import java.util.ArrayList; 7 | import java.util.List; 8 | 9 | /** 10 | * 发现首页 11 | */ 12 | public class FindIndexInfoResponse extends BaseResponseModel { 13 | 14 | public List list = new ArrayList<>(); 15 | 16 | public int total; 17 | public int pageNum; 18 | public int pageSize; 19 | } 20 | -------------------------------------------------------------------------------- /app/src/main/java/com/yuenov/open/model/responseModel/IndexSpecialListResponse.java: -------------------------------------------------------------------------------- 1 | package com.yuenov.open.model.responseModel; 2 | 3 | import com.yuenov.open.model.standard.SpecialItemModel; 4 | import com.renrui.libraries.model.baseObject.BaseResponseModel; 5 | 6 | import java.util.ArrayList; 7 | import java.util.List; 8 | 9 | /** 10 | * 专题首页 11 | */ 12 | public class IndexSpecialListResponse extends BaseResponseModel { 13 | 14 | public List specialList = new ArrayList<>(); 15 | } 16 | -------------------------------------------------------------------------------- /app/src/main/java/com/yuenov/open/model/responseModel/MenuListResponse.java: -------------------------------------------------------------------------------- 1 | package com.yuenov.open.model.responseModel; 2 | 3 | import com.yuenov.open.model.standard.BookMenuItemInfo; 4 | import com.renrui.libraries.model.baseObject.BaseResponseModel; 5 | 6 | import java.util.List; 7 | 8 | /** 9 | * 目录 10 | */ 11 | public class MenuListResponse extends BaseResponseModel { 12 | 13 | public int id; 14 | public String title; 15 | public String author; 16 | public String desc; 17 | public String word; 18 | public String coverImg; 19 | 20 | public List chapters; 21 | } -------------------------------------------------------------------------------- /app/src/main/java/com/yuenov/open/model/responseModel/RankItemResponse.java: -------------------------------------------------------------------------------- 1 | package com.yuenov.open.model.responseModel; 2 | 3 | import com.yuenov.open.model.standard.RankListInfo; 4 | 5 | import java.util.ArrayList; 6 | 7 | /** 8 | * 榜单 9 | */ 10 | public class RankItemResponse { 11 | public ArrayList channels; 12 | } 13 | -------------------------------------------------------------------------------- /app/src/main/java/com/yuenov/open/model/standard/AppConfigInfo.java: -------------------------------------------------------------------------------- 1 | package com.yuenov.open.model.standard; 2 | 3 | import java.util.List; 4 | 5 | /** 6 | * 配置信息 7 | */ 8 | public class AppConfigInfo { 9 | public List categories; 10 | 11 | public List hotSearch; 12 | 13 | /** 14 | * 端口 15 | */ 16 | public List ports; 17 | } -------------------------------------------------------------------------------- /app/src/main/java/com/yuenov/open/model/standard/BPreviewUpdateInfo.java: -------------------------------------------------------------------------------- 1 | package com.yuenov.open.model.standard; 2 | 3 | public class BPreviewUpdateInfo { 4 | 5 | public long chapterId; 6 | 7 | public String chapterName; 8 | 9 | public long time; 10 | 11 | /** 12 | * 状态 13 | */ 14 | public String chapterStatus; 15 | } 16 | -------------------------------------------------------------------------------- /app/src/main/java/com/yuenov/open/model/standard/BookBaseInfo.java: -------------------------------------------------------------------------------- 1 | package com.yuenov.open.model.standard; 2 | 3 | import com.renrui.libraries.model.baseObject.BaseDataProvider; 4 | 5 | /** 6 | * 图书基本信息(打开阅读详情基本参数) 7 | */ 8 | public class BookBaseInfo extends BaseDataProvider { 9 | 10 | public int bookId; 11 | public String title; 12 | 13 | public String author; 14 | 15 | public String coverImg; 16 | 17 | public String chapterStatus; 18 | } 19 | -------------------------------------------------------------------------------- /app/src/main/java/com/yuenov/open/model/standard/BookMenuItemInfo.java: -------------------------------------------------------------------------------- 1 | package com.yuenov.open.model.standard; 2 | 3 | /** 4 | * 目录item 5 | */ 6 | public class BookMenuItemInfo { 7 | public long id; 8 | public String name; 9 | } 10 | -------------------------------------------------------------------------------- /app/src/main/java/com/yuenov/open/model/standard/BookMenuListInfo.java: -------------------------------------------------------------------------------- 1 | package com.yuenov.open.model.standard; 2 | 3 | import java.util.List; 4 | 5 | /** 6 | * 目录item 7 | */ 8 | public class BookMenuListInfo { 9 | public List list; 10 | } 11 | -------------------------------------------------------------------------------- /app/src/main/java/com/yuenov/open/model/standard/BookPreviewInfo.java: -------------------------------------------------------------------------------- 1 | package com.yuenov.open.model.standard; 2 | 3 | import java.util.List; 4 | 5 | /** 6 | * 预览信息 7 | */ 8 | public class BookPreviewInfo { 9 | 10 | public String word; 11 | 12 | public String title; 13 | 14 | public String desc; 15 | 16 | public String categoryName; 17 | 18 | public String author; 19 | 20 | public int bookId; 21 | 22 | public String coverImg; 23 | 24 | public int chapterNum; 25 | 26 | /** 27 | * 更新信息 28 | */ 29 | public BPreviewUpdateInfo update; 30 | 31 | /** 32 | * 推荐信息 33 | */ 34 | public List recommend; 35 | } 36 | -------------------------------------------------------------------------------- /app/src/main/java/com/yuenov/open/model/standard/CategoriesListItem.java: -------------------------------------------------------------------------------- 1 | package com.yuenov.open.model.standard; 2 | 3 | import com.renrui.libraries.model.baseObject.BaseDataProvider; 4 | 5 | public class CategoriesListItem extends BaseDataProvider { 6 | 7 | public String categoryName; 8 | 9 | public int bookId; 10 | 11 | public String title; 12 | 13 | public String author; 14 | 15 | public String coverImg; 16 | 17 | public String word; 18 | 19 | public String desc; 20 | 21 | // 状态 AboutChapterStatus 22 | public String chapterStatus; 23 | } 24 | -------------------------------------------------------------------------------- /app/src/main/java/com/yuenov/open/model/standard/CategoryChannelItemInfo.java: -------------------------------------------------------------------------------- 1 | package com.yuenov.open.model.standard; 2 | 3 | import com.renrui.libraries.model.baseObject.BaseDataProvider; 4 | 5 | import java.util.ArrayList; 6 | 7 | public class CategoryChannelItemInfo extends BaseDataProvider { 8 | 9 | public int channelId; 10 | public String channelName; 11 | 12 | public ArrayList categories = new ArrayList<>(); 13 | } -------------------------------------------------------------------------------- /app/src/main/java/com/yuenov/open/model/standard/CategoryMenuItem.java: -------------------------------------------------------------------------------- 1 | package com.yuenov.open.model.standard; 2 | 3 | import com.renrui.libraries.model.baseObject.BaseDataProvider; 4 | 5 | import java.util.List; 6 | 7 | public class CategoryMenuItem extends BaseDataProvider { 8 | 9 | public int categoryId; 10 | public String categoryName; 11 | public String coverImg; 12 | 13 | public List coverImgs; 14 | } 15 | -------------------------------------------------------------------------------- /app/src/main/java/com/yuenov/open/model/standard/CategoryMenuListItem.java: -------------------------------------------------------------------------------- 1 | package com.yuenov.open.model.standard; 2 | 3 | import com.renrui.libraries.model.baseObject.BaseDataProvider; 4 | 5 | import java.util.ArrayList; 6 | 7 | public class CategoryMenuListItem extends BaseDataProvider { 8 | public ArrayList list = new ArrayList<>(); 9 | } 10 | -------------------------------------------------------------------------------- /app/src/main/java/com/yuenov/open/model/standard/ChapterUpdateForceInfo.java: -------------------------------------------------------------------------------- 1 | package com.yuenov.open.model.standard; 2 | 3 | import java.util.ArrayList; 4 | 5 | /** 6 | * 更新章节详情model 7 | */ 8 | public class ChapterUpdateForceInfo { 9 | public int bookId; 10 | public ArrayList chapterIdList; 11 | } -------------------------------------------------------------------------------- /app/src/main/java/com/yuenov/open/model/standard/CheckUpdateItemInfo.java: -------------------------------------------------------------------------------- 1 | package com.yuenov.open.model.standard; 2 | 3 | public class CheckUpdateItemInfo { 4 | public int bookId; 5 | public long chapterId; 6 | } 7 | -------------------------------------------------------------------------------- /app/src/main/java/com/yuenov/open/model/standard/DownloadBookContentItemInfo.java: -------------------------------------------------------------------------------- 1 | package com.yuenov.open.model.standard; 2 | 3 | /** 4 | * 下载章节内容 5 | */ 6 | public class DownloadBookContentItemInfo { 7 | public long id; 8 | public String name; 9 | public String content; 10 | } 11 | -------------------------------------------------------------------------------- /app/src/main/java/com/yuenov/open/model/standard/DownloadChapterRequestInfo.java: -------------------------------------------------------------------------------- 1 | package com.yuenov.open.model.standard; 2 | 3 | import java.util.ArrayList; 4 | import java.util.List; 5 | 6 | public class DownloadChapterRequestInfo { 7 | public int bookId; 8 | public List chapterIdList = new ArrayList<>(); 9 | } -------------------------------------------------------------------------------- /app/src/main/java/com/yuenov/open/model/standard/FindItemBookItemModel.java: -------------------------------------------------------------------------------- 1 | package com.yuenov.open.model.standard; 2 | 3 | import java.util.ArrayList; 4 | import java.util.List; 5 | 6 | /** 7 | * 发现首页item中书的item 8 | */ 9 | public class FindItemBookItemModel { 10 | 11 | public int categoryId; 12 | public String categoryName; 13 | public String type; 14 | 15 | public int page = 1 ; 16 | 17 | public List bookList = new ArrayList<>(); 18 | } 19 | -------------------------------------------------------------------------------- /app/src/main/java/com/yuenov/open/model/standard/RankItemInfo.java: -------------------------------------------------------------------------------- 1 | package com.yuenov.open.model.standard; 2 | 3 | import com.renrui.libraries.model.baseObject.BaseDataProvider; 4 | 5 | import java.util.List; 6 | 7 | /** 8 | * 榜单 9 | */ 10 | public class RankItemInfo extends BaseDataProvider { 11 | public int rankId; 12 | public String rankName; 13 | 14 | public List coverImgs; 15 | } 16 | -------------------------------------------------------------------------------- /app/src/main/java/com/yuenov/open/model/standard/RankListInfo.java: -------------------------------------------------------------------------------- 1 | package com.yuenov.open.model.standard; 2 | 3 | import com.renrui.libraries.model.baseObject.BaseDataProvider; 4 | 5 | import java.util.List; 6 | 7 | /** 8 | * 榜单列表 9 | */ 10 | public class RankListInfo extends BaseDataProvider { 11 | public int channelId; 12 | public String channelName; 13 | 14 | public List ranks; 15 | } 16 | -------------------------------------------------------------------------------- /app/src/main/java/com/yuenov/open/model/standard/ReadBookInfo.java: -------------------------------------------------------------------------------- 1 | //package com.books.xl.model.standard; 2 | // 3 | //public class ReadBookInfo { 4 | // 5 | // public int bookId; 6 | // 7 | // public long chapterId; 8 | // 9 | // public int page; 10 | //} -------------------------------------------------------------------------------- /app/src/main/java/com/yuenov/open/model/standard/ReadSettingInfo.java: -------------------------------------------------------------------------------- 1 | package com.yuenov.open.model.standard; 2 | 3 | import com.yuenov.open.constant.ConstantPageInfo; 4 | import com.yuenov.open.utils.UtilityMeasure; 5 | import com.yuenov.open.widget.page.PageMode; 6 | 7 | /** 8 | * 设计信息 9 | */ 10 | public class ReadSettingInfo { 11 | 12 | /** 13 | * 亮度背景 14 | */ 15 | public int lightType = ConstantPageInfo.lightType; 16 | 17 | /** 18 | * 亮度值 19 | */ 20 | public int lightValue; 21 | 22 | /** 23 | * 字体大小 24 | */ 25 | public float frontSize = ConstantPageInfo.textSize; 26 | /** 27 | * 字体颜色 28 | */ 29 | public int frontColor = ConstantPageInfo.textColor; 30 | /** 31 | * 字体上下行间距 32 | */ 33 | public int lineSpacingExtra = UtilityMeasure.getLineSpacingExtra(frontSize); 34 | 35 | /** 36 | * 翻页动画类型 37 | */ 38 | public PageMode pageAnimType = PageMode.SIMULATION; 39 | } 40 | -------------------------------------------------------------------------------- /app/src/main/java/com/yuenov/open/model/standard/ReadingPreferencesModel.java: -------------------------------------------------------------------------------- 1 | package com.yuenov.open.model.standard; 2 | 3 | // 阅读偏好 4 | public class ReadingPreferencesModel { 5 | public String gender; 6 | } 7 | -------------------------------------------------------------------------------- /app/src/main/java/com/yuenov/open/model/standard/RequestBookCheckUpdateInfo.java: -------------------------------------------------------------------------------- 1 | package com.yuenov.open.model.standard; 2 | 3 | import java.util.List; 4 | 5 | public class RequestBookCheckUpdateInfo { 6 | 7 | public List books; 8 | } -------------------------------------------------------------------------------- /app/src/main/java/com/yuenov/open/model/standard/SpecialItemModel.java: -------------------------------------------------------------------------------- 1 | package com.yuenov.open.model.standard; 2 | 3 | import java.util.ArrayList; 4 | import java.util.List; 5 | 6 | /** 7 | * 发现首页item中书的item 8 | */ 9 | public class SpecialItemModel { 10 | 11 | public int id; 12 | public String name; 13 | 14 | public int page = 1; 15 | 16 | public List bookList = new ArrayList<>(); 17 | } 18 | -------------------------------------------------------------------------------- /app/src/main/java/com/yuenov/open/model/standard/SubmitSaveProductProblemInfo.java: -------------------------------------------------------------------------------- 1 | package com.yuenov.open.model.standard; 2 | 3 | // 提交产品问题 4 | public class SubmitSaveProductProblemInfo { 5 | public String desc; 6 | 7 | public String contact; 8 | } 9 | -------------------------------------------------------------------------------- /app/src/main/java/com/yuenov/open/model/standard/TbReadHistoryLeftJoinBookChapterInfo.java: -------------------------------------------------------------------------------- 1 | package com.yuenov.open.model.standard; 2 | 3 | import com.yuenov.open.database.tb.TbBookChapter; 4 | 5 | public class TbReadHistoryLeftJoinBookChapterInfo extends TbBookChapter { 6 | public long lastReadTime; 7 | } 8 | -------------------------------------------------------------------------------- /app/src/main/java/com/yuenov/open/utils/UtilityBrightness.java: -------------------------------------------------------------------------------- 1 | package com.yuenov.open.utils; 2 | 3 | import android.app.Activity; 4 | import android.content.ContentResolver; 5 | import android.content.Context; 6 | import android.provider.Settings; 7 | import android.view.Window; 8 | import android.view.WindowManager; 9 | 10 | public class UtilityBrightness { 11 | 12 | /** 13 | * 获取系统默认屏幕亮度值 屏幕亮度值范围(0-255) 14 | **/ 15 | public static int getScreenBrightness(Context context) { 16 | ContentResolver contentResolver = context.getContentResolver(); 17 | int defVal = 50; 18 | return Settings.System.getInt(contentResolver, 19 | Settings.System.SCREEN_BRIGHTNESS, defVal); 20 | } 21 | 22 | /** 23 | * 设置 APP界面屏幕亮度值方法 24 | **/ 25 | public static void setAppScreenBrightness(Activity activity, int birghtessValue) { 26 | try { 27 | Window window = activity.getWindow(); 28 | WindowManager.LayoutParams lp = window.getAttributes(); 29 | lp.screenBrightness = birghtessValue / 255f; 30 | window.setAttributes(lp); 31 | } catch (Exception ex) { 32 | UtilityException.catchException(ex); 33 | } 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /app/src/main/java/com/yuenov/open/utils/UtilityCache.java: -------------------------------------------------------------------------------- 1 | package com.yuenov.open.utils; 2 | 3 | import com.yuenov.open.database.AppDatabase; 4 | import com.yuenov.open.database.tb.TbCache; 5 | import com.renrui.libraries.util.UtilitySecurity; 6 | 7 | public class UtilityCache { 8 | 9 | /** 10 | * 发现页 11 | */ 12 | public static final String FINDINDEX = "findIndex"; 13 | /** 14 | * 书城 15 | */ 16 | public static final String BOOKCITY_START = "bookCity_"; 17 | 18 | public static void saveContent(String type, String content) { 19 | if (UtilitySecurity.isEmpty(type) || UtilitySecurity.isEmpty(content)) 20 | return; 21 | 22 | try { 23 | TbCache tbCache = new TbCache(); 24 | tbCache.cType = type; 25 | tbCache.cContent = content; 26 | AppDatabase.getInstance().CacheDao().addOrUpdate(tbCache); 27 | } catch (Exception ex) { 28 | UtilityException.catchException(ex); 29 | } 30 | } 31 | 32 | public static String getContent(String type) { 33 | 34 | String findIndex = ""; 35 | try { 36 | TbCache tbCache = AppDatabase.getInstance().CacheDao().getEntity(type); 37 | if (tbCache != null && !UtilitySecurity.isEmpty(tbCache.cContent)) { 38 | findIndex = tbCache.cContent; 39 | } 40 | } catch (Exception ex) { 41 | UtilityException.catchException(ex); 42 | } 43 | 44 | return findIndex; 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /app/src/main/java/com/yuenov/open/utils/UtilityReadInfo.java: -------------------------------------------------------------------------------- 1 | package com.yuenov.open.utils; 2 | 3 | import com.yuenov.open.model.standard.ReadSettingInfo; 4 | 5 | public class UtilityReadInfo { 6 | 7 | private static ReadSettingInfo readSettingInfo; 8 | 9 | public static ReadSettingInfo getReadSettingInfo() { 10 | if (readSettingInfo == null) 11 | readSettingInfo = EditSharedPreferences.getReadSettingInfo(); 12 | 13 | return readSettingInfo; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /app/src/main/java/com/yuenov/open/utils/UtilityToasty.java: -------------------------------------------------------------------------------- 1 | package com.yuenov.open.utils; 2 | 3 | import android.widget.Toast; 4 | 5 | import com.yuenov.open.application.MyApplication; 6 | import com.renrui.libraries.util.UtilitySecurity; 7 | 8 | import es.dmoral.toasty.Toasty; 9 | 10 | public class UtilityToasty { 11 | 12 | public static void success(String content, boolean showIcon) { 13 | if (UtilitySecurity.isEmpty(content)) 14 | return; 15 | 16 | Toasty.success(MyApplication.getAppContext(), content, Toast.LENGTH_SHORT, showIcon).show(); 17 | } 18 | 19 | public static void success(String content) { 20 | success(content, true); 21 | } 22 | 23 | public static void success(int strSourceId) { 24 | success(MyApplication.getAppContext().getString(strSourceId), true); 25 | } 26 | 27 | public static void warning(String content, boolean showIcon) { 28 | if (UtilitySecurity.isEmpty(content)) 29 | return; 30 | 31 | Toasty.warning(MyApplication.getAppContext(), content, Toast.LENGTH_SHORT, showIcon).show(); 32 | } 33 | 34 | public static void warning(String content) { 35 | warning(content, true); 36 | } 37 | 38 | public static void warning(int strSourceId) { 39 | warning(MyApplication.getAppContext().getString(strSourceId), true); 40 | } 41 | 42 | public static void error(String content, boolean showIcon) { 43 | if (UtilitySecurity.isEmpty(content)) 44 | return; 45 | 46 | Toasty.error(MyApplication.getAppContext(), content, Toast.LENGTH_SHORT, showIcon).show(); 47 | } 48 | 49 | public static void error(String content) { 50 | error(content, true); 51 | } 52 | 53 | public static void error(int strSourceId) { 54 | error(MyApplication.getAppContext().getString(strSourceId), true); 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /app/src/main/java/com/yuenov/open/utils/images/BannerGlideImageLoader.java: -------------------------------------------------------------------------------- 1 | package com.yuenov.open.utils.images; 2 | 3 | import android.content.Context; 4 | import android.widget.ImageView; 5 | 6 | import com.yuenov.open.R; 7 | import com.yuenov.open.application.MyApplication; 8 | import com.yuenov.open.model.ImageModel; 9 | import com.yuenov.open.utils.UtilityException; 10 | import com.bumptech.glide.Glide; 11 | import com.youth.banner.loader.ImageLoader; 12 | 13 | /** 14 | * banner 15 | */ 16 | public class BannerGlideImageLoader extends ImageLoader { 17 | 18 | @Override 19 | public void displayImage(Context context, Object path, ImageView imageView) { 20 | try { 21 | ImageModel itemModel = (ImageModel) path; 22 | 23 | Glide.with(MyApplication.getAppContext()) 24 | .load(itemModel.image) 25 | .apply(UtilityImage.getFilletGildeOptions(R.mipmap.detailinfo_default_bg, 10, true, true, true, true)) 26 | .into(imageView); 27 | } catch (Exception ex) { 28 | UtilityException.catchException(ex); 29 | } 30 | } 31 | } -------------------------------------------------------------------------------- /app/src/main/java/com/yuenov/open/widget/MyListView.java: -------------------------------------------------------------------------------- 1 | package com.yuenov.open.widget; 2 | 3 | import android.content.Context; 4 | import android.content.res.TypedArray; 5 | import android.util.AttributeSet; 6 | import android.widget.ListView; 7 | 8 | import com.yuenov.open.R; 9 | 10 | public class MyListView extends ListView { 11 | private float mMaxHeight = 100; 12 | 13 | public MyListView(Context context) { 14 | super(context); 15 | } 16 | 17 | public MyListView(Context context, AttributeSet attrs) { 18 | super(context, attrs); 19 | 20 | TypedArray array = context.obtainStyledAttributes(attrs, R.styleable.MyListView, 0, 0); 21 | int count = array.getIndexCount(); 22 | for (int i = 0; i < count; i++) { 23 | int type = array.getIndex(i); 24 | if (type == R.styleable.MyListView_maxHeight) { 25 | //获得布局中限制的最大高度 26 | mMaxHeight = array.getDimension(type, -1); 27 | } 28 | } 29 | array.recycle(); 30 | } 31 | 32 | protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { 33 | //获取lv本身高度 34 | int specSize = MeasureSpec.getSize(heightMeasureSpec); 35 | //限制高度小于lv高度,设置为限制高度 36 | if (mMaxHeight <= specSize && mMaxHeight > -1) { 37 | heightMeasureSpec = MeasureSpec.makeMeasureSpec(Float.valueOf(mMaxHeight).intValue(), 38 | MeasureSpec.AT_MOST); 39 | } 40 | super.onMeasure(widthMeasureSpec, heightMeasureSpec); 41 | } 42 | 43 | public void setMaxHeight(int maxHeight) 44 | { 45 | this.mMaxHeight = maxHeight; 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /app/src/main/java/com/yuenov/open/widget/OrderConfirmGridView.java: -------------------------------------------------------------------------------- 1 | package com.yuenov.open.widget; 2 | 3 | import android.content.Context; 4 | import android.util.AttributeSet; 5 | import android.widget.GridView; 6 | 7 | /** 8 | * 解决嵌套中只显示一行的问题 9 | */ 10 | public class OrderConfirmGridView extends GridView { 11 | 12 | public OrderConfirmGridView(Context context) { 13 | super(context); 14 | } 15 | 16 | public OrderConfirmGridView(Context context, AttributeSet attrs) { 17 | super(context, attrs); 18 | } 19 | 20 | public OrderConfirmGridView(Context context, AttributeSet attrs, int defStyleAttr) { 21 | super(context, attrs, defStyleAttr); 22 | } 23 | 24 | /** 25 | * 改写gridview高度 26 | * 27 | * @param widthMeasureSpec 28 | * @param heightMeasureSpec 29 | */ 30 | @Override 31 | protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { 32 | int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST); 33 | super.onMeasure(widthMeasureSpec, expandSpec); 34 | } 35 | } -------------------------------------------------------------------------------- /app/src/main/java/com/yuenov/open/widget/TimeView.java: -------------------------------------------------------------------------------- 1 | package com.yuenov.open.widget; 2 | 3 | import android.os.Handler; 4 | 5 | public class TimeView { 6 | 7 | public interface ITime { 8 | void timeCycle(int counts); 9 | } 10 | 11 | /** 12 | * 递归间隔 13 | */ 14 | private long interval = 1000; 15 | 16 | private ITime listener = null; 17 | 18 | /** 19 | * 递归次数 20 | */ 21 | private int cycleCounts = 0; 22 | 23 | private Handler mhandle = new Handler(); 24 | private boolean isActiveCycle = false; 25 | private Runnable runnable = new Runnable() { 26 | @Override 27 | public void run() { 28 | if (isActiveCycle) { 29 | cycleCounts++; 30 | 31 | mhandle.postDelayed(this, interval); 32 | 33 | if (listener != null) 34 | listener.timeCycle(cycleCounts); 35 | } 36 | } 37 | }; 38 | 39 | /** 40 | * 设置间隔 41 | */ 42 | public void setInterval(long value) { 43 | this.interval = value; 44 | } 45 | 46 | public void setListener(ITime listener) { 47 | this.listener = listener; 48 | } 49 | 50 | public void start() { 51 | try { 52 | // 已开始,不再重复 53 | if (isActiveCycle) { 54 | return; 55 | } 56 | 57 | isActiveCycle = true; 58 | 59 | // 首次也要等待 再回调 60 | mhandle.postDelayed(runnable, interval); 61 | } catch (Exception ex) { 62 | ex.printStackTrace(); 63 | } 64 | } 65 | 66 | public void stop() { 67 | isActiveCycle = false; 68 | } 69 | } 70 | -------------------------------------------------------------------------------- /app/src/main/java/com/yuenov/open/widget/WrapHeightGridView.java: -------------------------------------------------------------------------------- 1 | package com.yuenov.open.widget; 2 | 3 | import android.content.Context; 4 | import android.util.AttributeSet; 5 | import android.widget.GridView; 6 | 7 | public class WrapHeightGridView extends GridView { 8 | public WrapHeightGridView(Context context) { 9 | this(context, null); 10 | } 11 | 12 | public WrapHeightGridView(Context context, AttributeSet attrs) { 13 | this(context, attrs, 0); 14 | } 15 | 16 | public WrapHeightGridView(Context context, AttributeSet attrs, int defStyleAttr) { 17 | super(context, attrs, defStyleAttr); 18 | } 19 | 20 | @Override 21 | protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { 22 | int heightSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST); 23 | super.onMeasure(widthMeasureSpec, heightSpec); 24 | } 25 | } -------------------------------------------------------------------------------- /app/src/main/java/com/yuenov/open/widget/page/IPagerLoader.java: -------------------------------------------------------------------------------- 1 | package com.yuenov.open.widget.page; 2 | 3 | import com.yuenov.open.database.tb.TbBookChapter; 4 | 5 | public interface IPagerLoader { 6 | 7 | void onPreChapter(TbBookChapter newBookChapter); 8 | 9 | void onNextChapter(TbBookChapter newBookChapter); 10 | 11 | /** 12 | * 翻页 13 | */ 14 | void onTurnPage(); 15 | 16 | void showAd(); 17 | } 18 | -------------------------------------------------------------------------------- /app/src/main/java/com/yuenov/open/widget/page/PageMode.java: -------------------------------------------------------------------------------- 1 | package com.yuenov.open.widget.page; 2 | 3 | /** 4 | * Created by newbiechen on 2018/2/5. 5 | * 作用:翻页动画的模式 6 | */ 7 | 8 | public enum PageMode { 9 | SIMULATION, COVER, SLIDE, NONE, SCROLL 10 | } 11 | -------------------------------------------------------------------------------- /app/src/main/java/com/yuenov/open/widget/page/PageStyle.java: -------------------------------------------------------------------------------- 1 | package com.yuenov.open.widget.page; 2 | 3 | 4 | import androidx.annotation.ColorRes; 5 | 6 | import com.yuenov.open.R; 7 | 8 | /** 9 | * Created by newbiechen on 2018/2/5. 10 | * 作用:页面的展示风格。 11 | */ 12 | 13 | public enum PageStyle { 14 | BG_0(R.color.nb_read_font_1, R.color.nb_read_bg_1), 15 | BG_1(R.color.nb_read_font_2, R.color.nb_read_bg_2), 16 | BG_2(R.color.nb_read_font_3, R.color.nb_read_bg_3), 17 | BG_3(R.color.nb_read_font_4, R.color.nb_read_bg_4), 18 | BG_4(R.color.nb_read_font_5, R.color.nb_read_bg_5), 19 | NIGHT(R.color.nb_read_font_night, R.color.nb_read_bg_night),; 20 | 21 | private int fontColor; 22 | private int bgColor; 23 | 24 | PageStyle(@ColorRes int fontColor, @ColorRes int bgColor) { 25 | this.fontColor = fontColor; 26 | this.bgColor = bgColor; 27 | } 28 | 29 | public int getFontColor() { 30 | return fontColor; 31 | } 32 | 33 | public int getBgColor() { 34 | return bgColor; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /app/src/main/java/com/yuenov/open/widget/page/TxtChapter.java: -------------------------------------------------------------------------------- 1 | package com.yuenov.open.widget.page; 2 | 3 | /** 4 | * Created by newbiechen on 17-7-1. 5 | */ 6 | 7 | public class TxtChapter{ 8 | 9 | //章节所属的小说(网络) 10 | int bookId; 11 | //章节的链接(网络) 12 | String link; 13 | 14 | //章节名(共用) 15 | String title; 16 | 17 | //章节内容在文章中的起始位置(本地) 18 | long start; 19 | //章节内容在文章中的终止位置(本地) 20 | long end; 21 | 22 | public int getBookId() { 23 | return bookId; 24 | } 25 | 26 | public void setBookId(int id) { 27 | this.bookId = id; 28 | } 29 | 30 | public String getLink() { 31 | return link; 32 | } 33 | 34 | public void setLink(String link) { 35 | this.link = link; 36 | } 37 | 38 | public String getTitle() { 39 | return title; 40 | } 41 | 42 | public void setTitle(String title) { 43 | this.title = title; 44 | } 45 | 46 | public long getStart() { 47 | return start; 48 | } 49 | 50 | public void setStart(long start) { 51 | this.start = start; 52 | } 53 | 54 | public long getEnd() { 55 | return end; 56 | } 57 | 58 | public void setEnd(long end) { 59 | this.end = end; 60 | } 61 | 62 | @Override 63 | public String toString() { 64 | return "TxtChapter{" + 65 | "title='" + title + '\'' + 66 | ", start=" + start + 67 | ", end=" + end + 68 | '}'; 69 | } 70 | } 71 | -------------------------------------------------------------------------------- /app/src/main/java/com/yuenov/open/widget/page/TxtPage.java: -------------------------------------------------------------------------------- 1 | package com.yuenov.open.widget.page; 2 | 3 | import java.util.List; 4 | 5 | /** 6 | * Created by newbiechen on 17-7-1. 7 | */ 8 | 9 | public class TxtPage { 10 | int position; 11 | String title; 12 | int titleLines; //当前 lines 中为 title 的行数。 13 | List lines; 14 | } 15 | -------------------------------------------------------------------------------- /app/src/main/res/anim/activity_enter.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/anim/activity_exit.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/anim/anim_alpha_hide.xml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/src/main/res/anim/anim_alpha_show.xml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/src/main/res/anim/anim_bookdetail_bottomhide.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/anim/anim_bookdetail_bottomshow.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/anim/anim_bookdetail_tophide.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/anim/anim_bookdetail_topshow.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/anim/anim_fade_in.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/anim/anim_fade_out.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/anim/anim_pop_alpha.xml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/src/main/res/anim/anim_pop_close.xml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/src/main/res/anim/anim_pop_opaque.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/anim/anim_pop_show.xml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/src/main/res/anim/anim_widget_bookdetail_bottomhide.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/anim/anim_widget_bookdetail_bottomshow.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/anim/anim_widget_rotate.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/anim/dialog_push_in.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/anim/dialog_push_out.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/anim/slide_bottom_in.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/anim/slide_bottom_out.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/anim/slide_left_in.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/anim/slide_left_out.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/anim/slide_right_in.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/anim/slide_right_out.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/anim/slide_top_in.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/anim/slide_top_out.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/color/bg_myapp_right_text_color_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/aaa_test.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/bg_bookshelf_find.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/bg_category_item_stat_categoryname.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/bg_category_item_stat_lz.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/bg_category_item_stat_wj.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/bg_findindex_item_title_left.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/bg_loading_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/bg_loading_2.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/bg_productquestion_desc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/bg_productquestion_submit.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/bg_productquestion_unsubmit.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/bg_readhistory_addshelf.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/bg_readhistory_inshelf.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/bg_readingpreferences_select.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/bg_search_inputarea.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/bg_search_list_tag.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/bg_searchhistory_item.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/bg_searchlist_add.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/bg_searchlist_read.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/bg_shareapp_success.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/bg_shareapp_success_bottom.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/bg_shareapp_success_top.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/bg_tab_bookcity_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/bg_tab_bookshelf_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/bg_tab_find_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/bg_tab_myinfo_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/bg_tab_xc_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/bg_title_back_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/bg_widget_bd_op_select.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/bg_widget_bd_op_unselect.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/bg_widget_edittext.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/book_menu_list.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/button_book_read.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/button_download_back.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/categorieslist_item_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/feedback_checkbox.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/feedback_cursor.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_launcher_foreground.xml: -------------------------------------------------------------------------------- 1 | 7 | 12 | 13 | 19 | 22 | 25 | 26 | 27 | 28 | 34 | 35 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/loading.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/normal_loading.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/drawable/normal_loading.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/progressbar_color.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/seekbar_progress_drawable.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /app/src/main/res/layout/aaa_activity_test.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 18 | 19 | 30 | 31 | -------------------------------------------------------------------------------- /app/src/main/res/layout/aaa_view_test.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_book_recommend_more.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 12 | 13 | 18 | 19 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_bookmenulist.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 12 | 13 | 21 | 22 | 28 | 29 | 37 | 38 | 39 | 40 | 51 | 52 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_categorychannel.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 12 | 13 | 17 | 22 | 23 | 24 | 39 | 40 | 41 | 45 | 46 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_categoryend.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 12 | 13 | 18 | 19 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_categoryend_alllist.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 12 | 13 | 18 | 19 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_feedback.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 13 | 14 | 29 | 30 | 34 | 35 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_findalllist.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 12 | 13 | 18 | 19 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_rank.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 12 | 13 | 17 | 22 | 23 | 24 | 39 | 40 | 41 | 45 | 46 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_ranklist.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 12 | 13 | 18 | 19 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_readhistory.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 12 | 13 | 17 | 18 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_selectdownload.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 12 | 13 | 25 | 26 | 37 | 38 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_special_alllist.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 12 | 13 | 18 | 19 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_speciallist.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 12 | 13 | 18 | 19 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /app/src/main/res/layout/fragment_bc.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 12 | 13 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /app/src/main/res/layout/fragment_categorychannel_item.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/layout/fragment_categorychannel_item_list.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 13 | 14 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /app/src/main/res/layout/fragment_lackbook.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 16 | 17 | 23 | 24 | 35 | 36 | -------------------------------------------------------------------------------- /app/src/main/res/layout/fragment_productquestion.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 25 | 26 | 32 | 33 | 44 | 45 | -------------------------------------------------------------------------------- /app/src/main/res/layout/fragment_rank_list.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/layout/view_adapter_bs_type.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 14 | 15 | 22 | 23 | -------------------------------------------------------------------------------- /app/src/main/res/layout/view_adapter_find_item_item.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 20 | 21 | 33 | 34 | 45 | 46 | -------------------------------------------------------------------------------- /app/src/main/res/layout/view_adapter_item_bookmenu.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 17 | 18 | -------------------------------------------------------------------------------- /app/src/main/res/layout/view_adapter_item_bookshelf.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 21 | 22 | 30 | 31 | 44 | 45 | -------------------------------------------------------------------------------- /app/src/main/res/layout/view_adapter_item_detailoperation_bottom_menu.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 16 | 17 | -------------------------------------------------------------------------------- /app/src/main/res/layout/view_adapter_item_detailpewview_recommend.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 20 | 21 | 32 | 33 | 45 | 46 | -------------------------------------------------------------------------------- /app/src/main/res/layout/view_adapter_item_selectdownloadmenu.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 17 | 18 | -------------------------------------------------------------------------------- /app/src/main/res/layout/view_adapter_ranklist_item.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 12 | 13 | 23 | 24 | 28 | 29 | 37 | 38 | 44 | 45 | 46 | 47 | 48 | 49 | -------------------------------------------------------------------------------- /app/src/main/res/layout/view_bookshelf_empty.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 17 | 18 | 19 | 27 | 28 | 40 | 41 | -------------------------------------------------------------------------------- /app/src/main/res/layout/view_bs_banner.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 15 | 16 | -------------------------------------------------------------------------------- /app/src/main/res/layout/view_bs_empty.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 12 | 13 | -------------------------------------------------------------------------------- /app/src/main/res/layout/view_categorychannel_filter_item.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/layout/view_item_search_history.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 19 | 20 | -------------------------------------------------------------------------------- /app/src/main/res/layout/view_item_search_list_tag.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 19 | 20 | -------------------------------------------------------------------------------- /app/src/main/res/layout/view_loading_2.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 14 | 15 | 22 | 23 | 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /app/src/main/res/layout/view_menu_bookcity_tablayout_title.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 16 | 17 | -------------------------------------------------------------------------------- /app/src/main/res/layout/view_menu_tablayout_title.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 15 | 16 | -------------------------------------------------------------------------------- /app/src/main/res/layout/view_popwindow_deletebookshelf.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 13 | 14 | 23 | 24 | 28 | 29 | 38 | 39 | 43 | 44 | 48 | 49 | 58 | 59 | -------------------------------------------------------------------------------- /app/src/main/res/layout/view_pub_loading.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 14 | 15 | -------------------------------------------------------------------------------- /app/src/main/res/layout/view_search_hotlist_header.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 14 | 15 | -------------------------------------------------------------------------------- /app/src/main/res/layout/view_search_searchhistory.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 13 | 14 | 21 | 22 | 32 | 33 | 34 | 35 | 41 | 42 | -------------------------------------------------------------------------------- /app/src/main/res/layout/view_tablayout_menu_category_title.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 15 | 16 | -------------------------------------------------------------------------------- /app/src/main/res/layout/view_tablayout_menu_checked.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 14 | 15 | -------------------------------------------------------------------------------- /app/src/main/res/layout/view_tablayout_menu_unchecked.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 14 | 15 | -------------------------------------------------------------------------------- /app/src/main/res/layout/view_widget_categoryitem_image.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 13 | 14 | 23 | 24 | 32 | 33 | -------------------------------------------------------------------------------- /app/src/main/res/layout/view_widget_edittextview.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 20 | 21 | 30 | 31 | -------------------------------------------------------------------------------- /app/src/main/res/layout/view_widget_light.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 18 | 19 | 24 | 25 | 35 | 36 | -------------------------------------------------------------------------------- /app/src/main/res/layout/view_widget_myinfo_item.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 14 | 15 | 26 | 27 | 34 | 35 | -------------------------------------------------------------------------------- /app/src/main/res/layout/view_widget_rankitem_image.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 15 | 16 | 24 | 25 | 31 | 32 | -------------------------------------------------------------------------------- /app/src/main/res/layout/view_widget_readdetail_timeview.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 14 | 15 | -------------------------------------------------------------------------------- /app/src/main/res/menu/detail_menu_menu.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 8 | 9 | 10 | 11 | 15 | 16 | 17 | 18 | 22 | 23 | 24 | 25 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/aaatest.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-xhdpi/aaatest.jpg -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/bg_theme1_read_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-xhdpi/bg_theme1_read_bg.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/bg_theme2_read_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-xhdpi/bg_theme2_read_bg.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/bg_theme3_read_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-xhdpi/bg_theme3_read_bg.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/bg_theme4_read_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-xhdpi/bg_theme4_read_bg.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/bg_theme5_read_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-xhdpi/bg_theme5_read_bg.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/clear_input_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-xhdpi/clear_input_icon.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/detailinfo_default_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-xhdpi/detailinfo_default_bg.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/feedback_checkbox_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-xhdpi/feedback_checkbox_select.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/feedback_checkbox_unselect.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-xhdpi/feedback_checkbox_unselect.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_adapter_ba_item_showall.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-xhdpi/ic_adapter_ba_item_showall.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_add_bookshelf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-xhdpi/ic_add_bookshelf.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_app_icon_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-xhdpi/ic_app_icon_white.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_avatar_default.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-xhdpi/ic_avatar_default.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_book_add_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-xhdpi/ic_book_add_black.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_book_detail_menu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-xhdpi/ic_book_detail_menu.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_book_detail_update.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-xhdpi/ic_book_detail_update.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_book_down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-xhdpi/ic_book_down.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_book_download.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-xhdpi/ic_book_download.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_book_download_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-xhdpi/ic_book_download_black.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_book_help.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-xhdpi/ic_book_help.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_book_light_left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-xhdpi/ic_book_light_left.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_book_light_right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-xhdpi/ic_book_light_right.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_book_light_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-xhdpi/ic_book_light_select.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_book_light_unselect.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-xhdpi/ic_book_light_unselect.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_book_list_default.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-xhdpi/ic_book_list_default.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_book_menu_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-xhdpi/ic_book_menu_select.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_book_menu_unselect.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-xhdpi/ic_book_menu_unselect.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_book_progress_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-xhdpi/ic_book_progress_select.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_book_progress_unselect.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-xhdpi/ic_book_progress_unselect.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_book_rolate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-xhdpi/ic_book_rolate.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_book_set_left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-xhdpi/ic_book_set_left.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_book_set_right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-xhdpi/ic_book_set_right.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_book_set_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-xhdpi/ic_book_set_select.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_book_set_unselect.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-xhdpi/ic_book_set_unselect.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_book_up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-xhdpi/ic_book_up.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_book_update.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-xhdpi/ic_book_update.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_browser_close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-xhdpi/ic_browser_close.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_browser_reload.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-xhdpi/ic_browser_reload.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_bs_type_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-xhdpi/ic_bs_type_1.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_button_back.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-xhdpi/ic_button_back.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_button_reload_thin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-xhdpi/ic_button_reload_thin.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_categories_first.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-xhdpi/ic_categories_first.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_categories_search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-xhdpi/ic_categories_search.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_faxian_bangdan.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-xhdpi/ic_faxian_bangdan.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_faxian_wanben.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-xhdpi/ic_faxian_wanben.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_faxian_zhuanti.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-xhdpi/ic_faxian_zhuanti.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_female.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-xhdpi/ic_female.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_findindex_item_title_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-xhdpi/ic_findindex_item_title_icon.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_img_num1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-xhdpi/ic_img_num1.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_img_num2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-xhdpi/ic_img_num2.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_img_num3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-xhdpi/ic_img_num3.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_infor_popshare_copylink_nor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-xhdpi/ic_infor_popshare_copylink_nor.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_infor_popshare_qq_nor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-xhdpi/ic_infor_popshare_qq_nor.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_infor_popshare_weixing_nor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-xhdpi/ic_infor_popshare_weixing_nor.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_left_arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-xhdpi/ic_left_arrow.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_libraby_jianbian.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-xhdpi/ic_libraby_jianbian.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_library_search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-xhdpi/ic_library_search.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_light_process_point.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-xhdpi/ic_light_process_point.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_male.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-xhdpi/ic_male.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_page_indicator.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-xhdpi/ic_page_indicator.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_page_indicator_focused.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-xhdpi/ic_page_indicator_focused.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_remove_bookshelf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-xhdpi/ic_remove_bookshelf.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_right_arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-xhdpi/ic_right_arrow.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_tab_xc_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-xhdpi/ic_tab_xc_normal.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_tab_xc_selected.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-xhdpi/ic_tab_xc_selected.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_theme1_border.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-xhdpi/ic_theme1_border.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_theme1_read_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-xhdpi/ic_theme1_read_bg.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_theme2_border.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-xhdpi/ic_theme2_border.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_theme2_read_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-xhdpi/ic_theme2_read_bg.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_theme3_border.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-xhdpi/ic_theme3_border.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_theme3_read_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-xhdpi/ic_theme3_read_bg.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_theme4_border.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-xhdpi/ic_theme4_border.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_theme4_read_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-xhdpi/ic_theme4_read_bg.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_theme5_border.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-xhdpi/ic_theme5_border.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_theme5_read_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-xhdpi/ic_theme5_read_bg.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_theme_eye.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-xhdpi/ic_theme_eye.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_theme_moon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-xhdpi/ic_theme_moon.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_title_back.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-xhdpi/ic_title_back.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_wode_about.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-xhdpi/ic_wode_about.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_wode_favor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-xhdpi/ic_wode_favor.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_wode_fqa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-xhdpi/ic_wode_fqa.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_wode_help.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-xhdpi/ic_wode_help.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_wode_history.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-xhdpi/ic_wode_history.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_wode_share.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-xhdpi/ic_wode_share.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/im_maintab_topline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-xhdpi/im_maintab_topline.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/index_search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-xhdpi/index_search.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/kaoyan_maintab_btn_topline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-xhdpi/kaoyan_maintab_btn_topline.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/library_search_crude.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-xhdpi/library_search_crude.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/normal_loading.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-xhdpi/normal_loading.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/splash1_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-xhdpi/splash1_bg.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/splash2_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-xhdpi/splash2_bg.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/splash3_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-xhdpi/splash3_bg.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/tab_bookcity_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-xhdpi/tab_bookcity_select.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/tab_bookcity_unselect.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-xhdpi/tab_bookcity_unselect.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/tab_bookshelf_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-xhdpi/tab_bookshelf_select.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/tab_bookshelf_unselect.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-xhdpi/tab_bookshelf_unselect.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/tab_find_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-xhdpi/tab_find_select.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/tab_find_unselect.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-xhdpi/tab_find_unselect.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/tab_myinfo_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-xhdpi/tab_myinfo_select.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/tab_myinfo_unselect.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-xhdpi/tab_myinfo_unselect.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/values-v19/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/values-v21/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 阅小说 3 | 要看的 在这里 4 | 5 | 6 | 保存成功 7 | 已添加到书架 8 | 切换网络成功 9 | 10 | 已完结 11 | 连载中 12 | 13 | -------------------------------------------------------------------------------- /app/src/main/res/values/widget_strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 查看全部 4 | 换一批 5 | 6 | 连载 7 | 完结 8 | 分类 9 | 10 | 男生 11 | 女生 12 | MALE 13 | FEMALE 14 | 15 | 16 | 书籍纠错 17 | 产品问题 18 | 缺少书籍 19 | 20 | 完结 21 | 连载 22 | 23 | 加书架 24 | 已加书架 25 | 开始阅读 26 | 27 | 加载中... 28 | 后台下载 29 | 30 | 已完结 31 | 32 | -------------------------------------------------------------------------------- /build.gradle: -------------------------------------------------------------------------------- 1 | // Top-level build file where you can add configuration options common to all sub-projects/modules. 2 | 3 | buildscript { 4 | 5 | repositories { 6 | google() 7 | jcenter() 8 | 9 | maven { url 'https://jitpack.io' } 10 | } 11 | 12 | dependencies { 13 | classpath 'com.android.tools.build:gradle:3.6.3' 14 | classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.31" 15 | classpath 'com.jakewharton:butterknife-gradle-plugin:10.2.0' 16 | classpath 'com.novoda:bintray-release:0.9.1' 17 | } 18 | } 19 | 20 | allprojects { 21 | repositories { 22 | google() 23 | jcenter() 24 | maven { url "https://jitpack.io" } 25 | maven { url 'https://dl.bintray.com/umsdk/release' } 26 | 27 | maven { url 'https://maven.aliyun.com/repository/public/' } 28 | maven { url 'http://maven.aliyun.com/nexus/content/repositories/jcenter' } 29 | maven { url 'http://maven.aliyun.com/nexus/content/repositories/google' } 30 | maven { url 'http://maven.aliyun.com/nexus/content/repositories/gradle-plugin' } 31 | } 32 | 33 | //中文注释 34 | tasks.withType(Javadoc) { 35 | options{ encoding "UTF-8" 36 | charSet 'UTF-8' 37 | links "http://docs.oracle.com/javase/7/docs/api" 38 | } 39 | } 40 | } 41 | 42 | task clean(type: Delete) { 43 | delete rootProject.buildDir 44 | } 45 | -------------------------------------------------------------------------------- /gradle.properties: -------------------------------------------------------------------------------- 1 | # Project-wide Gradle settings. 2 | # IDE (e.g. Android Studio) users: 3 | # Gradle settings configured through the IDE *will override* 4 | # any settings specified in this file. 5 | # For more details on how to configure your build environment visit 6 | # http://www.gradle.org/docs/current/userguide/build_environment.html 7 | # Specifies the JVM arguments used for the daemon process. 8 | # The setting is particularly useful for tweaking memory settings. 9 | org.gradle.jvmargs=-Xmx1536m 10 | # When configured, Gradle will run in incubating parallel mode. 11 | # This option should only be used with decoupled projects. More details, visit 12 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects 13 | # org.gradle.parallel=true 14 | # AndroidX package structure to make it clearer which packages are bundled with the 15 | # Android operating system, and which are packaged with your app's APK 16 | # https://developer.android.com/topic/libraries/support-library/androidx-rn 17 | android.useAndroidX=true 18 | # Automatically convert third-party libraries to use AndroidX 19 | android.enableJetifier=true -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Thu Apr 23 20:36:44 CST 2020 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.4-all.zip 7 | -------------------------------------------------------------------------------- /resource/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/resource/1.png -------------------------------------------------------------------------------- /resource/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/resource/2.png -------------------------------------------------------------------------------- /resource/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/resource/3.png -------------------------------------------------------------------------------- /resource/4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/resource/4.png -------------------------------------------------------------------------------- /resource/qrcode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuenov/reader-android/ad18e934dafd4fb249092d72ab0f18f1681c242f/resource/qrcode.png -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app', ':updateapputils' 2 | rootProject.name='book3' 3 | --------------------------------------------------------------------------------