MewX/light-novel-library_Wenku8_Android
[CASUALLY MAINTAINED] 轻小说文库 (Wenku8.com) 安卓版第三方公益App,始于2014年的初版Material Design风格、非盈利、Play Store上安装包最小的轻小说阅读器 (light novel reader)。目前网站的API由于被大量滥用,已更新成我自己架的 Cloudflare Worker API
About MewX/light-novel-library_Wenku8_Android
MewX/light-novel-library_Wenku8_Android is an open-source project on GitHub, mainly written in Java. [CASUALLY MAINTAINED] 轻小说文库 (Wenku8.com) 安卓版第三方公益App,始于2014年的初版Material Design风格、非盈利、Play Store上安装包最小的轻小说阅读器 (light novel reader)。目前网站的API由于被大量滥用,已更新成我自己架的 It currently holds 3,324 stars and 398 forks with 49 open issues, and was last pushed on 2026-10-24 (repository created 2014-10-10).
Project Overview
Git Homed tracks it on the Today's Trending board, currently at rank #78 with 55 new stars today.
GitHub Repository Details
README
:point_left: HISTORICAL ISSUE AND THAT'S WHAT WE ALL KNOW :sob:
如果您想打赏我用爱发电的代码,可以点击这个链接帮我充电 ❤️:

如果你走失了,可以来TG群:https://t.me/wk8app
文档目录 ==========
- 写在前面
- Repo目录说明
- App程序结构简明
- 1.x 版本
- 主要视图
- 源代码结构
- 0.5.2.1 典藏版
- 预览图
- 源代码结构
- UMENG统计数据
- App存档文件结构
- 总览
- 存档流程
- 技术细节
- App二次开发指引
- 如何用其他文库的文档兼容本app
- 用到的开源库
- 开发者的碎碎念
- LICENSE
----
Material Design风格的轻小说文库App完全开源了!想实践Material Design的可以参考本项目的源代码,不清楚的、以及各种相关话题都可以发issue交流~
这个项目是我第一次写安卓App,首先看了一本入门书籍,是chinapub写书评赠送的《第一行代码 Android》,然后便开始着手写这个app了。从2014年10月份开始动手写,都是些零零散散的时间,写到12月底也就是0.5.2.0版本,那时基本上是啥都不会,写的代码也是烂的不行。后来内测用户群里面有个设计师提出来设计Material Design(后面简称MD)风格的app,于是就打算重新开发。也是拖啊拖,到7月底才完成新的app,如果满打满算的话,应该是历时一整个月,手写代码量2W行以上。
本app完全是出于兴趣以及作为一个项目经历,所以完全无偿开发、源代码也是完全开源!欢迎大家交流。之前迟迟不开源新的MD,一方面是觉得写得太不容易了,各种谷歌查资料,还为红杏插件贡献了好几十 \_(:3」∠)\_ 另一方面是正式用git管理,Wenku8的站长也禁止将API公开,所以分来两个版本管理也很麻烦,还有一方面是因为代码非常乱,没有整理。
注:1.x版本源代码有部分是拷贝0520的,而0520的风格非常糟糕,比如AsyncTask的isLoading定义在类外这样。所以编码风格会有不统一,新写的代码我还是比较满意的,老的代码也是因为修改的需求不大,所以也就没有重构了。编码风格的建议也欢迎发issue~
----
为什么App里面说要尽快缓存感兴趣的小说?为什么现在这么紧急地开放源代码?
请参阅文档末尾的开发者的碎碎念。
----
1. design-source/
设计师提供的app制作效果图,大家可以参考学习~
2. eclipse-android/
0.5.1.0030版本的源代码(eclipse+ADT版本),这份源代码阉割了API部分,所以编译后也无法正常获取数据。
3. eclipse-android-old/
0.5.2.1典藏版的源代码(Android Studio版本),完整从私有库里拷贝出来的。release版本和正式版发布地址一样。
4. graph-source/
老版的制图源文件,当时自己弄得,完全就是随性而无章法 =。=
5. studio-android/
1.x正式版的所有源代码存放处,MD风格的App完整源码,可编译通过并正常运行!(Android Studio版本)
----
1.x 版本
新版的MD风格App,设计图纸在design-source/,工程文件在studio-android/。
三方库的引用全部采用Gradle dependency,在混淆方面会直接忽略,加密强度低,不过开发起来各种方便~
主要视图
- App启动界面
Model & Controller: activity/WelcomeActivity.java View: layout/layout_welcome.xml
- 侧栏菜单栏
Model & Controller: fragment/NavigationDrawerFragment.java View: layout/layout_main_menu.xml
- 最近更新列表
Model & Controller: fragment/FavFragment.java Adapter: adapter/NovelItemAdapter.java View: layout/fragment_latest.xml
- 搜索界面
搜索界面 Model & Controller: activity/SearchActivity.java Adapter: adapter/SearchHistoryAdapter.java View: layout/layout_search.xml 搜索结果界面 Model & Controller: activity/SearchResultActivity.java Adapter: adapter/NovelItemAdapterUpdate.java View: layout/layout_search_result.xml
- 排行榜列表
Model & Controller: fragment/RKListFragment.java Adapter: adapter/NovelItemAdapterUpdate.java View: layout/fragment_rklist.xml + (layout/fragment_novel_item_list.xml)s
- 本地书架(收藏)列表
Model & Controller: fragment/FavFragment.java Adapter: adapter/NovelItemAdapterUpdate.java View: layout/fragment_novel_item_list.xml
- 小说详细信息
Model & Controller: activity/NovolInfoActivity.java View: layout/layout_novel_info.xml
- 小说章节选择
Model & Controller: activity/NovolChapterActivity.java View: layout/layout_novel_chapter.xml
- 左右滑动阅读引擎
Model & Controller: reader/activity/Wenku8ReaderActivityV1.java View: layout/layout_reader_swipe_temp.xml + (layout/layout_reader_swipe_page.xml)s
- 上下滑动阅读引擎
Model & Controller: activity/VerticalReaderActivity.java View: layout/layout_vertical_reader_temp.xml
- 设置界面
Model & Controller: fragment/ConfigFragment.java View: layout/fragment_config.xml
源代码结构
studio-android/LightNovelLibrary/app/src/main | AndroidManifest.xml | +---assets/fonts | fzss-gbk.ttf 方正书宋GBK字体 | +---java/org/mewx/wenku8 | | MyApp.java 自定义Application为了全局获取Context | | | +---activity | | AboutActivity.java 关于界面 | | MainActivity.java 主界面 | | MenuBackgroundSelectorActivity.java 侧栏菜单背景选择界面 | | NovelChapterActivity.java 章节选择界面 | | NovelInfoActivity.java 小说信息界面 | | SearchActivity.java 搜索界面 | | SearchResultActivity.java 搜索结果框架界面 | | UserInfoActivity.java 用户信息界面 | | UserLoginActivity.java 用户登录界面 | | VerticalReaderActivity.java 上下滑动界面 | | ViewImageDetailActivity.java 查看大图界面 | | WelcomeActivity.java 启动界面 | | | +---adapter | | NovelItemAdapter.java 老版的小说项Adapter,每10项更新一次 | | NovelItemAdapterUpdate.java 更新的小说项Adapter,动态更新每一项 | | SearchHistoryAdapter.java 搜索历史Adapter | | | +---component | | PagerSlidingTabStrip.java 排行榜自定义的标签类 | | ScrollViewNoFling.java 可控滑动阻尼的ScrollView | | | +---fragment | | ConfigFragment.java 设置界面 | | FavFragment.java 本地书架框架 | | LatestFragment.java 最近更新 | | NavigationDrawerFragment.java 侧栏菜单 | | NovelItemListFragment.java 通用的小说列表界面(嵌入框架中) | | RKListFragment.java 排行榜框架 | | | +---global | | | GlobalConfig.java 全局设置(糟糕向),其中inAlphaBuild控制内测版/正式版 | | | | | \---api | | ChapterInfo.java 章节信息类 | | NovelItemInfo.java 小说信息类 | | NovelItemInfoUpdate.java 更新的小说信息类 | | NovelItemList.java 小说项列表类 | | NovelItemMeta.java 小说完整信息类 | | OldNovelContentParser.java 旧的小说内容解析器,解析成text和image | | UserInfo.java 用户信息类 | | VolumeList.java 卷信息类 | | Wenku8API.java API类 | | Wenku8Error.java 错误信息类,后期的编码中定义的 | | Wenku8Parser.java 通用项目解析器 | | | +---listener | | MyItemClickListener.java RecyclerView的单击监听接口 | | MyItemLongClickListener.java RecyclerView的长按监听接口 | | | +---reader 这边准备封装成的UniversalReaderActivity库的 | | +---activity | | | Wenku8ReaderActivityV1.java 左右滑动阅读界面 | | | | | +---loader | | | WenkuReaderLoader.java 小说载入类的抽象类 | | | WenkuReaderLoaderXML.java XML格式小说载入类 | | | | | +---setting | | | WenkuReaderSettingV1.java 阅读设置类V1 | | | | | +---slider 三方划屏库 | | | | SlidingAdapter.java | | | | SlidingLayout.java | | | | | | | \---base | | | BaseSlider.java | | | OverlappedSlider.java | | | PageSlider.java | | | Slider.java | | | | | \---view | | WenkuReaderPageBatteryView.java 电池View(未使用) | | WenkuReaderPageView.java 单页小说View(效率低) | | | +---service | | HeartbeatSessionKeeper.java 心跳包保持session类(未使用) | | | \---util | LightBase64.java 轻量级base64封装库 | LightCache.java 轻量级文件操作库(容易OOM) | LightNetwork.java 轻量级网络通信库(容易OOM) | LightTool.java 轻量级工具集合类 | LightUserSession.java 轻量级用户Session管理(包括账号密码加解密) | Logger.java 轻量级日志类(未使用) | \---res/ | ... 略 \
----
0.5.2.1 典藏版
老版的App,启动和运行方面都比MD版本流畅,针对旧机型维护。Eclipse版本源码见eclipse-android/目录(非最新),Android Studio版本源码见eclipse-android-old/目录(典藏版最新),老版的图片资源都是用Fireworks做的,源文件见graph-source/目录。
预览图
源代码结构
这边引入了不少三方库,但是方法笨拙,主要采用复制、合并源代码的方式,所以文件目录会比较乱。但是加密强度高 \_(:3」∠)\_ 以后做商业软件还是建议这样操作,虽然麻烦,但是混淆之后烦的要命~
eclipse-android-old\LightNovelLibrary\src +---com | +---davemorrissey | | \---labs | | \---subscaleview 分部加载图片的库,查看大图防止OOM | | ImageViewState.java | | ScaleImageView.java | | SubsamplingScaleImageView.java | | | +---ecloud | | \---pulltozoomview 下拉放大的视图,设置界面用的小苹果~ | | IPullToZoom.java | | PullToZoomBase.java | | PullToZoomListView.java | | PullToZoomListViewEx.java | | PullToZoomScrollView.java | | PullToZoomScrollViewEx.java | | | +---facebook | | \---rebound 物理、动画库,用途忘记了 =。= 大半年没动了,好像是侧栏菜单用的 | | | AndroidSpringLooperFactory.java | | | BaseSpringSystem.java | | | OrigamiValueConverter.java | | | SimpleSpringListener.java | | | Spring.java | | | SpringConfig.java | | | SpringConfigRegistry.java | | | SpringListener.java | | | SpringLooper.java | | | SpringSystem.java | | | SpringSystemListener.java | | | SpringUtil.java | | | SteppingLooper.java | | | SynchronousLooper.java | | | | | \---ui | | SpringConfiguratorView.java | | Util.java | | | +---special | | \---ResideMenu 侧边滑动菜单iOS风格的 | | ResideMenu.java | | ResideMenuItem.java | | TouchDisableView.java | | | \---zcw | \---togglebutton iOS风格的切换按钮 | ToggleButton.java | +---me | \---imid | \---swipebacklayout 右滑返回layout | \---lib | | SwipeBackLayout.java | | Utils.java | | ViewDragHelper.java | | | \---app | SwipeBackActivity.java | SwipeBackActivityBase.java | SwipeBackActivityHelper.java | SwipeBackPreferenceActivity.java | +---org | \---mewx | \---lightnovellibrary | +---activity | | AboutActivity.java 关于界面 | | BookshelfFragment.java 本地书架 | | LibraryFragment.java 小说库(主界面入口) | | MainActivity.java 主界面 | | NovelImageActivity.java 看大图界面 | | NovelInfoActivity.java 小说信息界面 | | NovelListActivity.java 小说列表界面 | | NovelReaderActivity.java 阅读器界面(上下滑动) | | NovelSearchActivity.java 搜索界面 | | SettingFragment.java 设置 | | StartActivity.java 启动界面 | | Wenku8Fragment.java (未完成) | | | +---api | | Wenku8Interface.java 你懂的 | | | +---component | | | GlobalConfig.java 全局设置界面 | | | MyApp.java 用于获取Context的全局Application | | | NovelContentParser.java 小说内容解析器 | | | XMLParser.java XML解析器 | | | | | \---adapter | | EntryElement.java 书库分类项 | | EntryElementAdapter.java 书库分类项Adapter | | NovelContentAdapter.java 小说内容Adapter | | NovelElement.java 小说项 | | NovelElementAdapter.java 小说项Adapter | | NovelElementSearch.java 小说搜索项 | | NovelElementSearchAdapter.java 小说搜索项Adapter | | NovelIcon.java 小说封面 | | NovelIconAdapter.java 小说封面Adapter | | | \---util | LightBase64.java 轻量级Base64库 | LightCache.java 轻量级文件操作库 | LightNetwork.java 轻量级网络通信库 | \---uk \---co \---senab \---photoview 轻量级看图的View | Compat.java | DefaultOnDoubleTapListener.java | IPhotoView.java | PhotoView.java | PhotoViewAttacher.java | +---gestures | CupcakeGestureDetector.java | EclairGestureDetector.java | FroyoGestureDetector.java | GestureDetector.java | OnGestureListener.java | VersionedGestureDetector.java | +---log | Logger.java | LoggerDefault.java | LogManager.java | \---scrollerproxy GingerScroller.java IcsScroller.java PreGingerScroller.java ScrollerProxy.java
----
UMENG统计数据(2015/10/01残念)
新版的app用户量10天增长到了1W用户量,全是托wenku8的福。照现在的增长速度速度估计用户量峰值是3W左右。
还有几个有趣的统计图分享一下:
[
](https://raw.githubusercontent.com/MewX/light-novel-library
