├── .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 |
8 |
9 |
10 |
11 |
12 |
13 | 1.8
14 |
15 |
20 |
21 |
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/.idea/runConfigurations.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
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 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------