¿ CUESTION HISTÓRICA Y ESO ES LO QUE TODOS SABEMOS ?
Si quieres recompensarme con el código que usa el amor para generar electricidad, puedes hacer clic en este enlace para ayudarme a recargar ❤️:
¡La aplicación轻小说文库
estilo Material Design es completamente de código abierto! Si desea practicar Material Design, puede consultar el código fuente de este proyecto. Si no está claro o tiene varios temas relacionados, puede enviar issue
para comunicarse ~.
Este proyecto es la primera vez que escribo una aplicación para Android. Primero leí un libro introductorio, 《第一行代码Android》
proporcionado por chinapub como reseña de un libro, y luego comencé a escribir esta aplicación. Comencé a escribir en octubre de 2014 y todo estaba en un tiempo disperso. A finales de diciembre, se escribió la versión 0.5.2.0. En ese momento, básicamente no sabía nada y el código que escribí era terrible. Más tarde, un diseñador del grupo de usuarios beta interno propuso diseñar una aplicación de estilo Material Design (en lo sucesivo, MD
), por lo que planeó volver a desarrollarla. Fue postergar y postergar, y no fue hasta finales de julio que se completó la nueva aplicación. Si hubiera contado con ello, habría tomado un mes entero y habría ascendido a más de 20.000 líneas de código escrito a mano.
Esta aplicación es puramente por interés y experiencia como proyecto, por lo que完全无偿
y el código fuente también es完全开源
. Todos son bienvenidos a comunicarse. He sido reacio a abrir nuevos MD
de código abierto. Por un lado , siento que es demasiado difícil escribir. Busqué información en varios Google y contribuí con docenas al complemento Hongxing_(:3」∠)_En el. Por otro lado, se usa oficialmente. En cuanto a la administración de git, el webmaster de Wenku8 también prohíbe hacer pública la API, por lo que es muy problemático administrar las dos versiones. Por otro lado, el código es muy desordenado y no está organizado.
** Nota: ** Parte del código fuente de la versión 1.x se copia de 0520 y el estilo de 0520 es muy malo. Por ejemplo, isLoading
de AsyncTask
se define fuera de la clase. Por lo tanto, el estilo de codificación será inconsistente. Estoy bastante satisfecho con el código recién escrito. El código antiguo tampoco necesita modificaciones, por lo que no es necesario refactorizarlo. También se aceptan sugerencias sobre el estilo de codificación ~
¿Por qué la aplicación dice que almacene en caché las novelas de interés lo antes posible? ¿Por qué existe tanta urgencia por abrir el código fuente ahora?
Consulte开发者的碎碎念
al final del documento.
Puede consultar las representaciones de producción de la aplicación proporcionadas por el diseñador ~
El código fuente de la versión 0.5.1.0030 (versión eclipse
+ ADT
), este código fuente castra la parte API, por lo que los datos no se pueden obtener normalmente después de la compilación.
El código fuente de la典藏版
0.5.2.1 (versión Android Studio
) se copia completamente de la biblioteca privada. La dirección de lanzamiento de la versión de lanzamiento es la misma que la de la versión oficial.
La versión antigua del archivo fuente del dibujo la creé yo en ese momento y era completamente aleatoria y desorganizada =. =
¡Todo el almacenamiento del código fuente de la versión oficial 1.x, el código fuente completo de la aplicación estilo MD
, se puede compilar y ejecutar normalmente! (Versión de Android Studio
)
Para la nueva versión de la aplicación MD
style, los dibujos de diseño están en design-source/
y los archivos del proyecto están en studio-android/
.
Todas las referencias a bibliotecas de terceros utilizan la dependencia de Gradle, que se ignorará directamente en términos de ofuscación. La potencia del cifrado es baja, pero es conveniente para el desarrollo ~.
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/
| ... 略
La versión anterior de la aplicación se inicia y funciona mejor que la versión MD
y se mantiene para los modelos antiguos. El código fuente de la versión Eclipse
se puede encontrar en eclipse-android/
(no es el más reciente). El código fuente de Android Studio
se puede encontrar en el directorio eclipse-android-old/
(la versión del recopilador es la más reciente). ). Los recursos de imágenes de la versión anterior están hechos con Fireworks. Los archivos fuente se pueden encontrar en graph-source/
Aquí se han introducido muchas bibliotecas de terceros, pero el método es torpe. Utiliza principalmente copiar y fusionar código fuente, por lo que el directorio de archivos estará desordenado. Sin embargo, la potencia del cifrado es alta_(:3 ∠)_ Todavía se recomienda hacer esto cuando se cree software comercial en el futuro. Aunque es problemático, será muy molesto después de la confusión ~.
eclipse-android-oldLightNovelLibrarysrc
+---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
El número de usuarios de la nueva versión de la aplicación ha aumentado a 10.000 en 10 días, todo gracias a wenku8. Según la tasa de crecimiento actual, se estima que el número máximo de usuarios es de aproximadamente 3 W.
También hay algunos gráficos estadísticos interesantes para compartir:
Se pueden descargar y ver ejemplos de archivos comprimidos en el área release
~
sdcard/wenku8
+---cache 完全由UIL接管的图片缓存文件夹
+---custom 用户自定义文件夹,可以放入自定义侧栏壁纸、自定义阅读字体、自定义阅读背景
| .nomedia
|
+---imgs 小说封面
| .nomedia
| *.jpg
|
---saves 存档文件夹
| avatar.jpg 登陆后的头像
| bookshelf_local.wk8 本地书架
| cert.wk8 简单加密的登陆用户名和密码
| read_saves.wk8 旧版的上下滑动阅读进度存档
| read_saves_v1.wk8 新版的左右滑动阅读进度存档
| search_history.wk8 搜索历史存档
| settings.wk8 设置存档
|
+---imgs 小说插图
| .nomedia
| *.jpg
|
+---intro 小说信息
| *.xml
|
---novel 小说正文
*.xml
cache目录
de caché;settings.wk8
se lee cuando se inicia la aplicación y cada vez que se cambia la configuración, la configuración se guardará inmediatamente;imgs目录
;收藏
de la novela escribirá ayuda en saves/bookshelf_local.wk8
, y cancelar la colección cancelará la escritura y eliminará el contenido xml local relevante (la imagen no se eliminará);saves/intro
, 3 archivos para cada novela, y actualice la Actividad después de la actualización.saves/intro
y luego descargue el contenido específico de la novela (almacenado en saves/novel
) de acuerdo con la información en aid-volume.xml
. Después de cada descarga, verifique si el archivo está disponible. xml contiene imágenes. Si hay una imagen, inserte la tarea de descargar la imagen** (es por eso que la barra de progreso saltará a 2331 durante la descarga)**;saves/read_saves_v1.wk8
al ingresar y guarde el progreso al salir;saves/read_saves.wk8
al ingresar y guarde el progreso al salir;saves/search_history.wk8
y se guardará el último registro de búsqueda cada vez que se busque;saves/cert.wk8
y saves/avatar.jpg
, y iniciará sesión automáticamente cada vez que inicie la aplicación, si no está conectado a Internet, iniciará sesión automáticamente cuando inicie sesión; haga clic en el avatar o cuando haya una solicitud de acceso, si el inicio de sesión falla, estas dos credenciales se eliminarán; Principalmente la implementación del archivo y la especificación del archivo compatible.
Ejemplo de contenido de archivo:
1098||1939||1924||1749||278
Reglas para guardar archivos:
||
Al leer, llame a str.split("\|\|");
saves/intro
: aid-intro.xml
, aid-introfull.xml
检查更新
aid-volume.xml
. Si falta un archivo, se ignorará el libro correspondiente a la ayuda.检查更新
(Desplegue hacia abajo la casilla de verificación de actualizaciones en la estantería y en la interfaz de información novedosa) para corregir este error;Ejemplo de contenido de archivo:
66761,,23799,,25575||66752,,134,,15090||63125,,1139,,3059||
63126,,904,,2824||63127,,11299,,157217
Reglas para guardar archivos:
cid,,position,,height
:saves/novel
;||
y se llama a str.split("\|\|");
;Ejemplo de contenido de archivo:
1863:65378:65380:10:0||1922:67426:67427:0:0||1656:56193:56194:38:0||
1244:38825:38827:0:0||1163:35537:35538:0:0||1151:35126:35128:0:0||
1247:38920:38922:230:0||1759:60160:60161:159:0||1886:66259:66261:0:0||
1016:51951:51952:0:0||1749:59813:59814:0:0||1575:52853:52855:0:0||
278:10165:10166:36:0||1213:37499:37503:0:0||1928:67584:67585:0:0||
1446:47586:47588:90:0||1755:60043:60044:0:0||1519:50813:50814:0:0||
1932:67774:67782:255:55||1701:57929:57935:0:0
Reglas para guardar archivos:
aid:cid:vid:paraid:wordid
:||
y se llama a str.split("\|\|");
;一个起始字符(wordid)
一个段落(paraid)
y luego paginar dinámicamente;Ejemplo de contenido de archivo:
[田中][1到][音][刀剑][1日日日][进击的巨人][光还在][人类衰退][古][寒蝉]
Reglas para guardar archivos:
[]
, UTF-8 no tiene codificación BOM;0520
agregará un número al principio:[0田中]
[1到]
GlobalConfig.java
;Ejemplo de contenido de archivo:
reader_line_distance::::10||||
menu_bg_path::::/storage/emulated/0/tencent/QQ_Images/5699e514d0bb9779.png||||
reader_background_path::::0||||
version::::1||||
reader_paragraph_distance::::14||||
language::::SC||||
menu_bg_id::::0||||
reader_font_size::::18||||
reader_font_path::::0
Fragmento de código para la clave:
public enum SettingItems {
version, // (int) 1
language,
menu_bg_id, // (int) 1-5 by system, 0 for user
menu_bg_path, // (String) for user custom
reader_font_path, // (String) path to ttf, "0" means default
reader_font_size, // (int) sp (8 - 32)
reader_line_distance, // (int) dp (0 - 32)
reader_paragraph_distance, // (int) dp (0 - 48)
reader_paragraph_edge_distance, // (int) dp (0 - 16)
reader_background_path, // (String) path to an image, day mode only, "0" means default
}
Reglas para guardar archivos:
ContentValue
en el código;::::
y los pares clave-valor están separados por ||||
enum.toString()
para obtenerlas y evitar errores de bajo nivel causados por la codificación rígida;Ejemplo de contenido de archivo:
Z0M5a0daRXBsZG5SMFZpaFhlPT0K
|b1FQOUVXYjFja1d1SlRkazVtV3BSWGI9Cg==
Reglas para guardar archivos:用户名|密码
, los saltos de línea son generados automáticamente por las funciones del sistema y no afectan la lectura.
加密流程:
1. 原文: str
2. 一遍加密: base64(str)
3. 大小写互转: switch(base64(str))
4. 两遍加密: base64(switch(base64(str)))
5. 除了等号外,前后字符交换: swap(base64(switch(base64(str))))
6. 三次加密: base64(swap(base64(switch(base64(str)))))
解密流程:
同理
Esta App ha decidido suspender el mantenimiento...
Por un lado, la razón es que los propios desarrolladores tienen que prepararse para los exámenes de posgrado de fin de año, por otro lado, y el aspecto más importante , Goose Factory ha comprado derechos de autor de novelas ligeras a gran escala; Hay algunas razones que no se pueden revelar por el momento. En resumen, esta aplicación de terceros tiene que llegar a su fin; para más detalles, puede leer开发者的碎碎念
.
Hace unos días, usé HTTrack para rastrear la base de datos de lknovel.cn
. El tamaño total es 20G, lo cual es demasiado grande. La cantidad de archivos es 20W. Sin embargo, dado que el servidor está en el país, la velocidad es bastante buena y tarda de 1 a 2 días en completarse.
Más tarde, intenté capturar wenku8.com
. El servidor está en los Estados Unidos y la velocidad aquí es demasiado lenta . Me tomó un día entero capturar solo 1G. Calculo que el volumen de datos de wenku8 es de aproximadamente 30G. Realmente no puedo aguantarlo.
所以尽管API开源了,但是因为内陆速度实在太慢,我都没有兴趣抓取了,所以劝大家去抓其他站:
linovel.com 可以用HTTrack设置总目录页面为入口,深度5,然后设定MAX 10000000,图片采用探索模式即可(一般的扒站工具抓不下来图片),服务器没有防护;
lknovel.cn 可以用HTTrack设置章节页面及小说信息界面为入口(excel生成url即可),深度2,设定MAX 10000000,服务器没有防护。
wenku8.com 速度太慢了,数据量还大,插图还在文末,没啥性价比,别抓了。
En otras palabras, esta aplicación no tendrá fuente de datos en el futuro. Si desea continuar creando la aplicación, solo puede rastrear y purificar el archivo html si algún desarrollador está interesado y desea continuar rastreando la aplicación (por ejemplo). : Los datos de lknovel, linovel y wenku8 se pueden capturar al mismo tiempo y mostrarse al usuario), puede leer la siguiente parte:
En la actualidad, wenku8
tiene menos de 2000 libros, lo que significa que la ayuda es de 4 dígitos. Las ayudas de linovel
y lknovel
también son de 4 dígitos, y no son tan grandes como wenku8
, entonces:
在aid方面,可以采取aid+10000000的方式,比如linovel的aid是+1000万,lknovel的aid是+2000万,这样本地书架的内容就错开了。
En términos de archivo:
aid-intro.xml 可以采取两种文件格式:
最小文件体:
<?xml version="1.0" encoding="utf-8"?>
<metadata>
<data name="Title" aid="1749"><![CDATA[残酷童话]]></data>
<data name="Author" value="仓桥由美子"/>
<data name="BookStatus" value="已完成"/>
<data name="LastUpdate" value="2015-08-01"/>
<data name="IntroPreview"><![CDATA[ 现实残酷,童话幻灭
在现实生活中,王子与...]]></data>
</metadata>
扩展文件体(可以自定义字段)但是已定义的字段有这些:
<?xml version="1.0" encoding="utf-8"?>
<metadata>
<data name="Title" aid="5"><![CDATA[狼与香辛料(狼与辛香料)]]></data>
<data name="Author" value="支仓冻砂"/>
<data name="DayHitsCount" value="14"/>
<data name="TotalHitsCount" value="394148"/>
<data name="PushCount" value="22940"/>
<data name="FavCount" value="6003"/>
<data name="PressId" value="电击文库" sid="1"/>
<data name="BookStatus" value="已完成"/>
<data name="BookLength" value="2004567"/>
<data name="LastUpdate" value="2012-02-08"/>
<data name="LatestSection" cid="36097"><![CDATA[第十七卷 插图]]></data>
</metadata>
aid-introfull.xml 的文件内容示例:
旅行于各地贩卖并收购物品的商人克拉福·罗伦斯,拜访帕斯罗村并离开后,在自己的马车上发现了不知从哪里跑来的东西。
拨开从帕斯罗村购买的小麦束后,竟然发现一位拥有兽耳与尾巴的美少女。
少女自称为贤狼赫萝,是带给帕斯罗村长期丰收的少女。
“虽然咱长久以来被尊为神,不过,咱就是咱,咱是赫萝。”见到少女的一只手变化成狼脚的罗伦斯,虽然一边怀疑赫萝的身份,但一边也答应让想回到出生遥远北方的少女一同旅行。
aid-volume.xml 文件内容示例:
<?xml version="1.0" encoding="utf-8"?>
<package>
<volume vid="55995"><![CDATA[第一卷]]>
<chapter cid="55996"><![CDATA[序章 Prologue]]></chapter>
<chapter cid="55997"><![CDATA[第一话 A-part 死与不死]]></chapter>
<chapter cid="55998"><![CDATA[第一话 B-part 死与不死]]></chapter>
<chapter cid="55999"><![CDATA[第二话 A-part 杀人与异能]]></chapter>
<chapter cid="56000"><![CDATA[第二话 B-part 杀人与异能]]></chapter>
<chapter cid="56001"><![CDATA[第三话 A-part 命与心]]></chapter>
<chapter cid="56002"><![CDATA[第三话 B-part 命与心]]></chapter>
<chapter cid="56003"><![CDATA[插曲 Interlude]]></chapter>
<chapter cid="56004"><![CDATA[终章 Epilogue]]></chapter>
<chapter cid="56005"><![CDATA[后记]]></chapter>
<chapter cid="56006"><![CDATA[插图]]></chapter>
</volume>
<volume vid="68031"><![CDATA[第二卷]]>
<chapter cid="68032"><![CDATA[【序章】Prologue]]></chapter>
<chapter cid="68033"><![CDATA[【第一话】First Story 别墅与杀人事件]]></chapter>
<chapter cid="68034"><![CDATA[【插曲】~Interlude~ 梦与心的夹缝间]]></chapter>
<chapter cid="68035"><![CDATA[【第二话】Second Story 内心与创伤]]></chapter>
<chapter cid="68036"><![CDATA[【插曲】~Interlude~ 某人的黑暗]]></chapter>
<chapter cid="68037"><![CDATA[【第三话】Third Story 紧张局势与众人目的]]></chapter>
<chapter cid="68038"><![CDATA[【插曲】~Interlude~ 黑暗之中]]></chapter>
<chapter cid="68039"><![CDATA[【第四话】Fourth Story 白天与夜晚]]></chapter>
<chapter cid="68040"><![CDATA[【插曲】~Interlude~ 黑夜与白昼的夹缝间]]></chapter>
<chapter cid="68041"><![CDATA[【终章】Epilogue]]></chapter>
<chapter cid="68042"><![CDATA[后记]]></chapter>
<chapter cid="68255"><![CDATA[插图]]></chapter>
</volume>
<volume vid="68043"><![CDATA[第三卷]]>
<chapter cid="68044"><![CDATA[【序章】Prologue]]></chapter>
<chapter cid="68045"><![CDATA[【第一话·前篇】First Story*First part 妹妹和传说]]></chapter>
<chapter cid="68046"><![CDATA[【第一话·后篇】First Story*Latter part 妹妹和传说]]></chapter>
<chapter cid="68047"><![CDATA[【插曲】~Interlude~ 她所身处的黑暗]]></chapter>
<chapter cid="68048"><![CDATA[【第二话·前篇】Second Story*First part 真实与冒牌货]]></chapter>
<chapter cid="68049"><![CDATA[【第二话·后篇】Second Story*Latter part 真实与冒牌货]]></chapter>
<chapter cid="68050"><![CDATA[【插曲】~Interlude~ 她所身处的黑暗]]></chapter>
<chapter cid="68051"><![CDATA[【终章】~Story of End~ 于是来到她的生日]]></chapter>
<chapter cid="68052"><![CDATA[【章外篇】~Epilogue~]]></chapter>
<chapter cid="68053"><![CDATA[后记]]></chapter>
<chapter cid="68256"><![CDATA[插图]]></chapter>
</volume>
</package>
vid.xml 小说内容示例(目前版本支持图文混排,自动提纯多余换行和前导空格):
一场死亡游戏
即将揭开序幕
SAO玩家·桐人,以完全攻略为目标,
在游戏舞台「艾恩葛朗特」城堡里展开一连串严酷的冒险。
途中与女剑士·亚丝娜的相遇,也为桐人带来命中注定的契机——
川原砾
出身于光之国度,居住在亚兹罗斯。人生就是独行剑士。
虽然嘴里一直逞强说自己不需要一起组队的伙伴,但是最近因为许多任务的难易度提高而感到相当棘手。虽然一辈子都没办法单独去唱KTV,但希望至少能升级到独自去吃烧肉的等级。
<!--image-->http://pic.wenku8.com/pictures/0/471/17513/3213.jpg<!--image-->
<!--image-->http://pic.wenku8.com/pictures/0/471/17513/3214.jpg<!--image-->
<!--image-->http://pic.wenku8.com/pictures/0/471/17513/3215.jpg<!--image-->
<!--image-->http://pic.wenku8.com/pictures/0/471/17513/3216.jpg<!--image-->
Siempre que el contenido capturado se pase a través de正则表达式
o scripts lua
actualizables, se puede lograr la captura de paquetes. Luego, la interfaz principal de la biblioteca se puede cambiar a esto:
文库入口(Material Card):
轻国文库
轻之文库
轻小说文库
etc
Haga clic para ingresar a la interfaz de búsqueda, luego búsquelo, descárguelo y conviértalo a un formato reconocible. ¡Lo que he oído hasta ahora es que la biblioteca nacional seguirá manteniéndose de forma gratuita!
Si algún estudiante o desarrollador está interesado, puede contactarme ~
- jgilfelt / SystemBarTint (Apache License 2.0)
用于设置Kitkat以上版本StatusBar和NavigationBar颜色透明度等。
- nostra13 / Android-Universal-Image-Loader (Apache License 2.0)
著名的UIL,用于管理图片缓存和加载的库,非常方便,不会OOM。
- astuetz / PagerSlidingTabStrip (Apache License 2.0)
-> branch: jpardogo / PagerSlidingTabStrip
Material风格的标签及页面库,jpardogo的分支在自定制方面功能更强。
- jpardogo / GoogleProgressBar (Apache License 2.0)
-> branch: MewX / google-progress-bar
谷歌风格的加载动画,我的分支添加了Google Doodle-notifier的样式。
原版的样式是圆角矩形,这边间距细节什么的模仿的不是很完美。
- Google / Volley (Apache License 2.0)
Google发布的大规模并发加载库。原版不支持byte返回值,我这边稍加修改了。
- afollestad / material-dialogs (MIT License)
完美的Material Dialog兼容库!
- futuresimple / android-floating-action-button (Apache License 2.0)
可以展开的FAB,动画效果很自然,但是不支持ripple比较遗憾,而且阴影会截断。
- vinc3m1 / RoundedImageView (Apache License 2.0)
圆形ImageView,显示头像用的。
- chrisbanes / SmoothProgressBar (BEER-WARE LICENSE)
平滑进度条,这里用在小说信息、搜索结果页面的ActionBar下部。
- davemorrissey / subsampling-scale-image-view (Apache License 2.0)
支持局部加载的ImageView,用于小说查看大图,用一般的ImageView容易OOM。
- martiansutdio / SlidingLayout (Unknown License)
针对电子书的划屏库,非常省内存,只有3页,自由度不高,但是毕竟拿来主义 =。=
- AnderWeb / discreteSeekBar (Apache License 2.0)
动画效果不错的SeekBar,用在小说阅读的设置和跳转页面中。
Originalmente, la aplicación no estaba pensada para ser de código abierto. Por ejemplo, el código no estaba bien escrito y, si fuera de código abierto, habría que mantener dos versiones...
La razón principal es que tomé muchos desvíos en el aprendizaje del material, y se pueden ver muchos intentos en el impulso histórico que Google lanzó en el diseño del sistema, y la aplicación oficial también se desarrolló muy bien, pero lo que los desarrolladores realmente necesitan usar. Además de soporte, las bibliotecas de diseño son solo bibliotecas de terceros. Sin embargo, todavía no es tan buena como la aplicación Google Play Store en todos los aspectos. No quiero desprenderme del código, no quiero que copien la aplicación =. = Sin embargo, resulta que pensé demasiado...
Sin embargo, recientemente recibí varios死亡预告
, por lo que esta aplicación está a punto寿终正寝
. 233 ahora es completamente de código abierto, incluida APPKEY, API, etc. Bienvenidos a todos a comunicarse y aprender ~.
Esta vez compartamos经验教训
al desarrollar la aplicación:
Las aplicaciones que dependen de sitios web deben garantizar que el sitio web no influya en el desarrollo de la aplicación.
La situación actual es que la estrategia del sitio web ha cambiado, lo que ha provocado que el servicio de interfaz de esta aplicación se detenga y se reemplace por otra aplicación cooperativa (no de terceros). Lo que dije antes es que todos deberían darse prisa y descargar抓紧缓存
mientras aún esté disponible. Es posible que tengas que pagar por él en el futuro. ¡Simplemente sigue el ejemplo de Goose Factory!
Por lo tanto, creo que al crear su propia aplicación, es mejor crear un sitio web de servicio, como空之文库
, que tiene una imagen de servidor, para que los problemas con LK no afecten a Kongwen.
Tenga cuidado al desarrollar tipos de aplicaciones.
También está escrito en la publicación del blog aquí que el mercado版权敏感的软件
no lo aceptará fácilmente y que se deben proporcionar pruebas de derechos de autor. Por lo tanto, no se ha podido colocar en los estantes aquí.轻文
se puede colocar en los estantes porque tiene elementos originales. Hoy en día, la censura interna es cada vez más estricta...
La orientación del usuario es importante.
Hay muchas funciones pequeñas ocultas en esta aplicación. Por ejemplo, los usuarios no pueden encontrar la función de búsqueda. Al presionar prolongadamente un capítulo, pueden elegir左右翻页
hacia la derecha o上下滑动
para leer. registro. Otro ejemplo: las teclas de volumen pueden pasar páginas, hacer clic para pasar páginas y también puedes cambiar de capítulo, etc. Incluso los usuarios que ven imágenes no saben cómo hacerlo. Aquí, el botón se coloca en la barra de acción para evitar conflictos con la operación de cambio de página, pero el usuario dice que no se puede encontrar la imagen =. = Por ejemplo, se dice que no se pueden usar fuentes personalizadas, imágenes, etc. en la tarjeta SD externa, pero el usuario aún no puede operar según lo requerido.
Por lo tanto, al ingresar a la interfaz, debe ser fácil de usar y debe aparecer un mensaje de operación, ¡para que este aspecto se pierda!
La rigidez original del usuario requiere una ventaja muy fuerte para romperse.
Originalmente, había una aplicación para novelas ligeras llamada空之文库
. Después de que salió mi aplicación, el número de usuarios aumentó mucho. Sin embargo, las ilustraciones al final del artículo son de hecho la mayor debilidad, porque hay muchos usuarios de novelas ligeras. Las novelas son estudiantes de secundaria. Algunos usuarios dicen que suena incómodo, pero para aumentar el número de usuarios, las aplicaciones que se consideran替代品
deben satisfacer funcionalmente las necesidades de la gran mayoría de los usuarios. Entonces, después de que salió轻文
, la cantidad de usuarios aquí perdió mucho.
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc., <http://fsf.org/>
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
......
Gracias a estas maravillosas personas (tecla emoji):
Pimiento bebé | Jack Liu |
Este proyecto sigue la especificación de todos los contribuyentes. ¡Se aceptan contribuciones de cualquier tipo!