? UN PROBLEME HISTORIQUE ET C'EST CE QUE NOUS SAVONS TOUS ?
Si vous souhaitez me récompenser avec le code pour utiliser l'amour pour produire de l'électricité, vous pouvez cliquer sur ce lien pour m'aider à recharger ❤️ :
L'application轻小说文库
de style Material Design est entièrement open source ! Si vous souhaitez pratiquer le Material Design, vous pouvez vous référer au code source de ce projet. Si vous n'êtes pas clair ou si vous avez divers sujets connexes, vous pouvez envoyer issue
pour communiquer ~.
Ce projet est la première fois que j'écris une application Android. J'ai d'abord lu un livre d'introduction, 《第一行代码Android》
donné par chinapub pour avoir rédigé une critique de livre, puis j'ai commencé à écrire cette application. J'ai commencé à écrire en octobre 2014, et tout s'est passé en un temps dispersé. Fin décembre, la version 0.5.2.0 était écrite. À cette époque, je ne savais pratiquement rien et le code que j'avais écrit était terrible. Plus tard, un concepteur du groupe d'utilisateurs bêta interne a proposé de concevoir une application de style Material Design (ci-après dénommée MD
), il a donc prévu de la redévelopper. C'était tergiverser et tergiverser, et ce n'est que fin juillet que la nouvelle application a été achevée. Si j'avais compté dessus, cela aurait pris un mois entier, et la quantité de code manuscrit serait supérieure à 20 000 lignes.
Cette application est complètement par intérêt et par expérience en tant que projet, elle完全无偿
et le code source est également完全开源
! Tout le monde est invité à communiquer. J'ai déjà été réticent à ouvrir un nouveau MD
en open source. D'une part , j'ai l'impression que c'est trop difficile à écrire. J'ai recherché des informations sur différents Google et j'en ai contribué des dizaines au plug-in Hongxing_(:3」∠)_On . Par contre, il est officiellement utilisé Concernant la gestion de git, le webmaster de Wenku8 interdit également de rendre l'API publique, il est donc très gênant de gérer les deux versions. Par contre, le code est très brouillon et peu organisé.
**Remarque : **Une partie du code source de la version 1.x est copiée à partir de 0520 et le style de 0520 est très mauvais. Par exemple, isLoading
d' AsyncTask
est défini en dehors de la classe. Par conséquent, le style de codage sera incohérent.Je suis assez satisfait du code nouvellement écrit et l'ancien code n'a également que peu besoin d'être modifié, il n'y a donc pas de refactorisation. Des suggestions sur le style de codage sont également les bienvenues ~
Pourquoi l'application demande-t-elle de mettre en cache les romans intéressants dès que possible ? Pourquoi y a-t-il une telle urgence à l’open source maintenant ?
Veuillez consulter开发者的碎碎念
à la fin du document.
Vous pouvez vous référer aux rendus de production de l'application fournis par le concepteur~
Le code source de la version 0.5.1.0030 (version eclipse
+ ADT
), ce code source castre la partie API, donc les données ne peuvent pas être obtenues normalement après compilation.
Le code source de l'典藏版
0.5.2.1 (version Android Studio
) est entièrement copié depuis la bibliothèque privée. L'adresse de publication de la version finale est la même que celle de la version officielle.
L'ancienne version du fichier source du dessin a été créée par moi-même à l'époque, et elle était complètement aléatoire et désorganisée =. =
Tout le stockage du code source de la version officielle 1.x, le code source complet de l'application de style MD
, peut être compilé et exécuté normalement ! (version Android Studio
)
Pour la nouvelle version de l'application de style MD
, les dessins de conception se trouvent dans design-source/
et les fichiers de projet sont dans studio-android/
.
Toutes les références à des bibliothèques tierces utilisent la dépendance Gradle, qui sera directement ignorée en termes d'obscurcissement. La force de cryptage est faible, mais elle est pratique pour le développement~.
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/
| ... 略
L'ancienne version de l'application démarre et fonctionne plus facilement que la version MD
et est conservée pour les anciens modèles. Le code source de la version Eclipse
se trouve dans eclipse-android/
(pas la dernière). Le code source de Android Studio
se trouve dans le répertoire eclipse-android-old/
(la version collector est la dernière). ). Les ressources d'images de l'ancienne version sont toutes réalisées avec Fireworks. Les fichiers sources se trouvent dans graph-source/
De nombreuses bibliothèques tierces ont été introduites ici, mais la méthode est maladroite. Elle utilise principalement la copie et la fusion du code source, donc le répertoire de fichiers sera compliqué. Cependant, la force de cryptage est élevée_(:3 ∠)_ Il est toujours recommandé de le faire lors de la création de logiciels commerciaux à l'avenir. Bien que cela soit gênant, ce sera très ennuyeux après confusion~.
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
Le nombre d'utilisateurs de la nouvelle version de l'application est passé à 10 000 en 10 jours, tout cela grâce à wenku8. Sur la base du taux de croissance actuel, on estime que le nombre maximal d'utilisateurs est d'environ 3W.
Il existe également quelques graphiques statistiques intéressants à partager :
Des exemples de fichiers d'archives peuvent être téléchargés et consultés dans la zone 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目录
cache est automatiquement généré ;settings.wk8
est lu au démarrage de l'application et chaque fois que les paramètres sont modifiés, les paramètres seront immédiatement enregistrés ;imgs目录
;收藏
du roman écrira l'aide dans saves/bookshelf_local.wk8
, et l'annulation de la collection annulera l'écriture et supprimera le contenu XML local pertinent (l'image ne sera pas supprimée) ;saves/intro
, 3 fichiers pour chaque roman, et actualisez l'activité après la mise à jour.saves/intro
, puis téléchargez le contenu spécifique du roman (stocké dans saves/novel
) en fonction des informations contenues dans aid-volume.xml
. xml contient des images. S'il y a une image, insérez la tâche de téléchargement de l'image** (c'est pourquoi la barre de progression passera à 2331 lors du téléchargement)** ;saves/read_saves_v1.wk8
en entrant et enregistrer la progression en sortant ;saves/read_saves.wk8
en entrant, et enregistrez la progression en sortant ;saves/search_history.wk8
sera automatiquement lu et le dernier enregistrement de recherche sera enregistré à chaque recherche ;saves/cert.wk8
et saves/avatar.jpg
seront générés, et il se connectera automatiquement à chaque fois qu'il démarrera l'application s'il n'est pas connecté à Internet, il se connectera automatiquement lorsqu'il se connectera ; cliquez sur l'avatar ou lors d'une demande d'accès ; si la connexion échoue, ces deux informations d'identification seront supprimées ; Principalement la mise en place de l'archivage et la spécification d'un archivage compatible.
Exemple de contenu de fichier :
1098||1939||1924||1749||278
Règles de sauvegarde des fichiers :
||
Lors de la lecture, appelez str.split("\|\|");
saves/intro
: aid-intro.xml
, aid-introfull.xml
, aid-volume.xml
. Si un fichier est manquant, le livre correspondant à l'aide sera ignoré. Vous pourrez检查更新
(déroulez la vérification des mises à jour dans la bibliothèque et dans l'interface d'informations nouvelle) pour corriger cette erreur ;Exemple de contenu de fichier :
66761,,23799,,25575||66752,,134,,15090||63125,,1139,,3059||
63126,,904,,2824||63127,,11299,,157217
Règles de sauvegarde des fichiers :
cid,,position,,height
:saves/novel
;||
et str.split("\|\|");
Exemple de contenu de fichier :
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
Règles de sauvegarde des fichiers :
aid:cid:vid:paraid:wordid
:||
et str.split("\|\|");
一个起始字符(wordid)
一个段落(paraid)
), puis à paginer dynamiquement ;Exemple de contenu de fichier :
[田中][1到][音][刀剑][1日日日][进击的巨人][光还在][人类衰退][古][寒蝉]
Règles de sauvegarde des fichiers :
[]
, UTF-8 n'a pas d'encodage BOM ;0520
ajoutera un numéro au début :[0田中]
[1到]
GlobalConfig.java
;Exemple de contenu de fichier :
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
Extrait de code pour la clé :
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
}
Règles de sauvegarde des fichiers :
ContentValue
dans le code ;::::
, et les paires clé-valeur sont séparées par ||||
;enum.toString()
est utilisée pour les obtenir afin d'éviter les erreurs de bas niveau causées par le codage en dur ;Exemple de contenu de fichier :
Z0M5a0daRXBsZG5SMFZpaFhlPT0K
|b1FQOUVXYjFja1d1SlRkazVtV3BSWGI9Cg==
Règles de sauvegarde des fichiers :用户名|密码
, les sauts de ligne sont automatiquement générés par les fonctions système et n'affectent pas la lecture.
加密流程:
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)))))
解密流程:
同理
Cette application a décidé de suspendre la maintenance...
D'une part, la raison est que les développeurs eux-mêmes doivent se préparer aux examens d'études supérieures de fin d'année, et d'autre part, et l'aspect le plus important , Goose Factory y a acheté à grande échelle les droits d'auteur des romans légers. sont quelques raisons qui ne peuvent pas être divulguées pour le moment. Bref, cette application tierce doit prendre fin, pour plus de détails, vous pouvez lire开发者的碎碎念
.
Il y a quelques jours, j'ai utilisé HTTrack pour explorer la base de données de lknovel.cn
. La taille totale est de 20 Go, ce qui est trop énorme. Le nombre de fichiers est de 20 W. Mon robot d'exploration XP est bloqué. Cependant, comme le serveur est dans le pays, la vitesse est plutôt bonne et cela prend 1 à 2 jours.
Plus tard, j'ai essayé de capturer wenku8.com
. Le serveur est aux États-Unis et la vitesse ici est trop lente . Il a fallu une journée entière pour capturer seulement 1G. J'estime que le volume de données de wenku8 est d'environ 30G. je ne peux vraiment pas le retenir.
所以尽管API开源了,但是因为内陆速度实在太慢,我都没有兴趣抓取了,所以劝大家去抓其他站:
linovel.com 可以用HTTrack设置总目录页面为入口,深度5,然后设定MAX 10000000,图片采用探索模式即可(一般的扒站工具抓不下来图片),服务器没有防护;
lknovel.cn 可以用HTTrack设置章节页面及小说信息界面为入口(excel生成url即可),深度2,设定MAX 10000000,服务器没有防护。
wenku8.com 速度太慢了,数据量还大,插图还在文末,没啥性价比,别抓了。
En d'autres termes, cette application n'aura plus de source de données à l'avenir. Si vous souhaitez continuer à créer l'application, vous ne pouvez explorer et purifier le code HTML que si un développeur est intéressé et souhaite continuer l'application en l'explorant (par exemple). : Les données de lknovel, linovel et wenku8 peuvent être capturées en même temps et affichées à l'utilisateur), vous pouvez lire la partie suivante :
À l'heure actuelle, wenku8
a moins de 2 000 livres, ce qui signifie que l'aide est à 4 chiffres ; les aides de linovel
et lknovel
sont également à 4 chiffres, et elles ne sont pas aussi grandes que wenku8
, donc :
在aid方面,可以采取aid+10000000的方式,比如linovel的aid是+1000万,lknovel的aid是+2000万,这样本地书架的内容就错开了。
En matière d'archivage :
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-->
Tant que le contenu capturé est transmis via正则表达式
ou des scripts lua
pouvant être mis à jour, la capture de paquets peut être réalisée. L'interface principale de la bibliothèque peut alors être modifiée comme suit :
文库入口(Material Card):
轻国文库
轻之文库
轻小说文库
etc
Cliquez pour accéder à l'interface de recherche, puis recherchez, téléchargez et convertissez-le dans un format reconnaissable. Ce que j’ai entendu jusqu’à présent, c’est que la bibliothèque nationale sera toujours entretenue gratuitement !
Si des étudiants ou des développeurs sont intéressés, vous pouvez me contacter~
- 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,用在小说阅读的设置和跳转页面中。
A l'origine, l'application n'était pas destinée à être open source. Par exemple, le code n'était pas bien écrit, et si elle était open source, il faudrait maintenir deux versions...
La raison principale est que j'ai fait beaucoup de détours dans l'apprentissage du matériel, et de nombreuses tentatives peuvent être vues dans la poussée historique de Google pour lancer la conception du système, et l'application officielle a également été très bien développée, mais ce que les développeurs ont vraiment besoin d'utiliser. est en plus du support - Les bibliothèques de conception ne sont que des bibliothèques tierces. Cependant, elle n’est toujours pas aussi performante que l’application Google Play Store à tous égards. Je ne veux pas me séparer du code, je ne veux pas que l'application soit copiée =. = Cependant, il s'avère que j'ai trop réfléchi...
Cependant, j'ai récemment reçu divers死亡预告
, donc cette application est sur le point寿终正寝
. 233 est désormais entièrement open source, y compris APPKEY, API, etc. Bienvenue à tous pour échanger et apprendre ~
Partageons经验教训
de ce développement d'application :
Les applications qui s'appuient sur des sites Web doivent garantir que le site Web n'influence pas le développement de l'application.
La situation actuelle est que la stratégie du site Web a changé, ce qui a entraîné l'arrêt du service d'interface de cette application et son remplacement par une autre application coopérative (non tierce). Ce que j'ai dit auparavant, c'est que tout le monde devrait se dépêcher et télécharger抓紧缓存
tant qu'il est encore disponible. Vous devrez peut-être payer pour cela à l'avenir. Suivez simplement l'exemple de Goose Factory !
Par conséquent, je pense que lorsque vous créez votre propre application, il est préférable de créer un site Web de service, tout comme空之文库
, qui a une image de serveur, afin que les problèmes avec LK n'affectent pas Kongwen.
Soyez prudent lorsque vous développez des types d'applications.
Il est également écrit dans le billet de blog ici que le marché版权敏感的软件
ne l'acceptera pas facilement et qu'une preuve du droit d'auteur doit être fournie. Par conséquent, il n'a pas pu être mis sur les étagères ici.轻文
peut être mis sur les étagères car il contient des éléments originaux. De nos jours, la censure nationale devient de plus en plus stricte...
Les instructions d'utilisation sont importantes.
Il existe de nombreuses petites fonctions cachées dans cette application. Par exemple, les utilisateurs ne peuvent pas trouver la fonction de recherche. Un appui long sur un chapitre peut choisir de左右翻页
ou la droite ou上下滑动
pour lire. un certain record. Autre exemple : les touches de volume permettent de tourner les pages, de cliquer pour tourner les pages, et on peut aussi changer de chapitre, etc. Même les utilisateurs qui visualisent des images ne savent pas comment faire. Ici, le bouton est placé sur l'ActionBar pour éviter tout conflit avec l'opération de rotation de page, mais l'utilisateur dit que l'image est introuvable =. = Par exemple, il est dit que les polices personnalisées, les images, etc. ne peuvent pas être utilisées sur la carte SD externe, mais l'utilisateur ne peut toujours pas opérer comme requis.
Par conséquent, lorsque vous entrez dans l’interface, elle doit être conviviale et une invite d’opération doit apparaître, donc cet aspect est perdu !
L'adhésivité de l'utilisateur d'origine nécessite un très fort avantage pour se briser.
À l'origine, il existait une application pour les romans légers appelée空之文库
. Après la sortie de mon application, le nombre d'utilisateurs a beaucoup augmenté. Cependant, les illustrations à la fin de l'article constituent effectivement la plus grande faiblesse, car de nombreux utilisateurs de light. Les romans sont des collégiens. Certains utilisateurs disent que cela semble gênant, mais pour augmenter le nombre d'utilisateurs, les applications ciblées comme替代品
doivent répondre fonctionnellement aux besoins de la grande majorité des utilisateurs. Ainsi, après la sortie轻文
, le nombre d'utilisateurs ici a beaucoup perdu.
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.
......
Merci à ces personnes merveilleuses (clé emoji) :
Bébé poivre | Jack Liu |
Ce projet suit la spécification de tous les contributeurs. Les contributions de toute nature sont bienvenues !