? HISTORISCHES PROBLEM UND DAS WISSEN WIR ALLE ?
Wenn Sie mich mit dem Code belohnen möchten, der Liebe zur Stromerzeugung nutzt, können Sie auf diesen Link klicken, um mir beim Aufladen zu helfen ❤️:
Die轻小说文库
App im Material Design-Stil ist vollständig Open Source! Wenn Sie Material Design üben möchten, können Sie auf den Quellcode dieses Projekts verweisen. Wenn Sie unklar sind oder verschiedene verwandte Themen haben, können Sie issue
zur Kommunikation senden
Bei diesem Projekt schreibe ich zum ersten Mal eine Android-App. Ich habe zuerst das Einführungsbuch 《第一行代码Android》
gelesen, das mir als Buchrezension zur Verfügung gestellt wurde, und dann mit dem Schreiben dieser App begonnen. Ich habe im Oktober 2014 mit dem Schreiben begonnen und Ende Dezember war Version 0.5.2.0 geschrieben. Zu diesem Zeitpunkt wusste ich im Grunde nichts und der Code, den ich schrieb, war schrecklich. Später schlug ein Designer in der internen Beta-Benutzergruppe vor, eine App im Material Design-Stil (im Folgenden als MD
bezeichnet) zu entwerfen, und plante daher, sie neu zu entwickeln. Es war langwierig und zögerlich, und erst Ende Juli war die neue App fertig, wenn ich damit gerechnet hätte, hätte es einen ganzen Monat gedauert und mehr als 20.000 Zeilen handgeschriebenen Codes umfasst.
Diese App ist rein aus Interesse und Erfahrung als Projekt entstanden, daher完全无偿
und der Quellcode ist auch完全开源
! Jeder ist willkommen, sich zu verständigen. Ich hatte bisher Bedenken, neue MD
zu öffnen. Einerseits habe ich das Gefühl, dass es zu schwierig ist, bei verschiedenen Googles nach Informationen zu suchen und Dutzende zum Hongxing-Plug-in beizutragen Andererseits wird es offiziell verwendet. In Bezug auf die Git-Verwaltung verbietet der Webmaster von Wenku8 auch die Veröffentlichung der API, sodass die Verwaltung der beiden Versionen sehr mühsam ist. Andererseits ist der Code sehr chaotisch und nicht organisiert.
**Hinweis: **Ein Teil des Quellcodes der Version 1.x wurde von 0520 kopiert und der Stil von 0520 ist sehr schlecht. Beispielsweise ist isLoading
von AsyncTask
außerhalb der Klasse definiert. Daher wird der Codierungsstil mit dem neu geschriebenen Code recht zufrieden sein. Auch der alte Code muss kaum geändert werden, sodass keine Umgestaltung erforderlich ist. Gerne können auch Vorschläge zum Codierungsstil eingereicht werden~
Warum sagt die App, dass interessante Romane so schnell wie möglich zwischengespeichert werden sollen? Warum ist Open Source jetzt so dringlich?
Bitte beachten Sie开发者的碎碎念
am Ende des Dokuments.
Sie können sich auf die vom Designer bereitgestellten Renderings für die App-Produktion beziehen~
Der Quellcode ist Version 0.5.1.0030 ( eclipse
+ ADT
Version). Dieser Quellcode kastriert den API-Teil, sodass die Daten nach der Kompilierung nicht normal abgerufen werden können.
Der Quellcode der 0.5.2.1典藏版
( Android Studio
Version) ist vollständig aus der privaten Bibliothek kopiert. Die Veröffentlichungsadresse der Release-Version ist dieselbe wie die der offiziellen Version.
Die alte Version der Zeichnungsquelldatei wurde damals von mir selbst erstellt und war völlig zufällig und unorganisiert =. =
Der gesamte Quellcodespeicher der offiziellen Version 1.x, der vollständige Quellcode der MD
Stil-App, kann kompiliert und normal ausgeführt werden! ( Android Studio
Version)
Für die neue Version der MD
Style App befinden sich die Entwurfszeichnungen in design-source/
und die Projektdateien in studio-android/
.
Alle Verweise auf Bibliotheken von Drittanbietern verwenden Gradle-Abhängigkeiten, die im Hinblick auf die Verschleierung direkt ignoriert werden. Die Verschlüsselungsstärke ist gering, aber für die Entwicklung praktisch
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/
| ... 略
Die alte Version der App startet und läuft flüssiger als die MD
Version und bleibt für alte Modelle erhalten. Der Quellcode der Eclipse
-Version befindet sich im Verzeichnis eclipse-android/
(nicht die neueste). Der Quellcode Android Studio
Version befindet sich im Verzeichnis eclipse-android-old/
(die Collector-Version ist die neueste). ). Die Bildressourcen der alten Version wurden alle mit Fireworks erstellt. Die Quelldateien finden Sie in graph-source/
Hier wurden viele Bibliotheken von Drittanbietern eingeführt, aber die Methode ist umständlich. Sie verwendet hauptsächlich das Kopieren und Zusammenführen von Quellcode, sodass das Dateiverzeichnis unübersichtlich wird. Allerdings ist die Verschlüsselungsstärke hoch_(:3 ∠)_ Es wird immer noch empfohlen, dies zu tun, wenn man in Zukunft kommerzielle Software erstellt, obwohl es mühsam ist, wird es nach Verwirrung sehr ärgerlich sein~
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
Dank wenku8 ist die Zahl der Nutzer der neuen Version der App innerhalb von 10 Tagen auf 10.000 gestiegen. Basierend auf der aktuellen Wachstumsrate wird geschätzt, dass die Spitzenzahl der Benutzer etwa 3 W beträgt.
Es gibt auch ein paar interessante statistische Diagramme zum Teilen:
Beispiele für Archivdateien können im release
-Bereich heruntergeladen und angezeigt werden
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目录
generiert.settings.wk8
wird beim Start der App gelesen und jedes Mal, wenn die Einstellungen geändert werden, werden die Einstellungen sofort gespeichert;imgs目录
gespeichert.收藏
des Romans schreibt Hilfe in saves/bookshelf_local.wk8
. Durch Abbrechen der Sammlung wird das Schreiben abgebrochen und der relevante lokale XML-Inhalt gelöscht (das Bild wird nicht gelöscht).saves/intro
, 3 Dateien für jeden Roman, und aktualisieren Sie die Aktivität nach der Aktualisierung.saves/intro
und laden Sie dann den spezifischen Inhalt des Romans (gespeichert in saves/novel
) gemäß den Informationen in aid-volume.xml
herunter. Überprüfen Sie nach jedem Download, ob xml enthält Bilder. Wenn ein Bild vorhanden ist, fügen Sie die Aufgabe zum Herunterladen des Bildes ein** (aus diesem Grund springt der Fortschrittsbalken während des Herunterladens auf 2331)**;saves/read_saves_v1.wk8
beim Betreten und speichern Sie den Fortschritt beim Verlassen.saves/read_saves.wk8
lesen und beim Verlassen den Fortschritt speichern;saves/search_history.wk8
automatisch gelesen und der neueste Suchdatensatz wird bei jeder Suche gespeichert.saves/cert.wk8
und saves/avatar.jpg
generiert. Wenn er nicht mit dem Internet verbunden ist, meldet er sich automatisch an, wenn er die App startet Klicken Sie auf den Avatar oder wenn eine Zugriffsanfrage vorliegt. Wenn die Anmeldung fehlschlägt, werden diese beiden Anmeldeinformationen gelöscht. Hauptsächlich die Implementierung der Archivierung und die Spezifikation der kompatiblen Archivierung.
Beispiel für Dateiinhalt:
1098||1939||1924||1749||278
Regeln zum Speichern von Dateien:
||
Rufen Sie beim Lesen str.split("\|\|");
auf.saves/intro
: aid-intro.xml
, aid-introfull.xml
und aid-volume.xml
检查更新
Wenn eine Datei fehlt, wird das zu der Hilfe gehörende Buch ignoriert Beheben Sie diesen Fehler,检查更新
die Option „Nach Aktualisierungen im Bücherregal und in der Benutzeroberfläche für Romane suchen“ auswählen.Beispiel für Dateiinhalt:
66761,,23799,,25575||66752,,134,,15090||63125,,1139,,3059||
63126,,904,,2824||63127,,11299,,157217
Regeln zum Speichern von Dateien:
cid,,position,,height
:saves/novel
;||
getrennt und str.split("\|\|");
Beispiel für Dateiinhalt:
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
Regeln zum Speichern von Dateien:
aid:cid:vid:paraid:wordid
:||
getrennt und str.split("\|\|");
一个起始字符(wordid)
一个段落(paraid)
anzugeben und dann dynamisch zu paginieren.Beispiel für Dateiinhalt:
[田中][1到][音][刀剑][1日日日][进击的巨人][光还在][人类衰退][古][寒蝉]
Regeln zum Speichern von Dateien:
[]
getrennt. UTF-8 hat keine BOM-Kodierung.0520
Version fügt am Anfang eine Nummer hinzu:[0田中]
[1到]
GlobalConfig.java
gespeichert und aufgezeichnet;Beispiel für Dateiinhalt:
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
Codeausschnitt für Schlüssel:
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
}
Regeln zum Speichern von Dateien:
ContentValue
im Code gespeichert.::::
und Schlüssel-Wert-Paare durch ||||
getrennt.enum.toString()
verwendet, um diese abzurufen, um durch harte Codierung verursachte Fehler auf niedriger Ebene zu vermeiden;Beispiel für Dateiinhalt:
Z0M5a0daRXBsZG5SMFZpaFhlPT0K
|b1FQOUVXYjFja1d1SlRkazVtV3BSWGI9Cg==
Regeln zum Speichern von Dateien:用户名|密码
, Zeilenumbrüche werden automatisch von Systemfunktionen generiert und haben keinen Einfluss auf das Lesen.
加密流程:
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)))))
解密流程:
同理
Diese App hat beschlossen, die Wartung auszusetzen...
Der Grund liegt zum einen darin, dass sich die Entwickler selbst auf die Abschlussprüfungen am Ende des Jahres vorbereiten müssen, und zum anderen hat Goose Factory dort in großem Umfang Urheberrechte an Light Novels eingekauft Es gibt einige Gründe, die vorerst nicht bekannt gegeben werden können. Kurz gesagt, diese Drittanbieter-App muss eingestellt werden. Weitere Informationen finden Sie开发者的碎碎念
.
Vor ein paar Tagen habe ich HTTrack verwendet, um die Datenbank von lknovel.cn
zu crawlen. Die Gesamtgröße beträgt 20 W. Mein XP-Crawler steckt fest. Da sich der Server jedoch im Land befindet, ist die Geschwindigkeit ziemlich gut und die Fertigstellung dauert 1 bis 2 Tage.
Später habe ich versucht, wenku8.com
zu erfassen, und die Geschwindigkeit hier ist zu langsam . Ich schätze, dass das Datenvolumen von wenku8 etwa 30 G beträgt Ich kann es wirklich nicht halten.
所以尽管API开源了,但是因为内陆速度实在太慢,我都没有兴趣抓取了,所以劝大家去抓其他站:
linovel.com 可以用HTTrack设置总目录页面为入口,深度5,然后设定MAX 10000000,图片采用探索模式即可(一般的扒站工具抓不下来图片),服务器没有防护;
lknovel.cn 可以用HTTrack设置章节页面及小说信息界面为入口(excel生成url即可),深度2,设定MAX 10000000,服务器没有防护。
wenku8.com 速度太慢了,数据量还大,插图还在文末,没啥性价比,别抓了。
Mit anderen Worten, diese App wird in Zukunft keine Datenquelle mehr haben. Wenn Sie die App weiter erstellen möchten, können Sie den HTML-Code nur dann crawlen und bereinigen, wenn ein Entwickler Interesse hat und die App durch Crawlen fortsetzen möchte : Die Daten von lknovel, linovel und wenku8 können gleichzeitig erfasst und dem Benutzer angezeigt werden. Sie können den folgenden Teil lesen:
Derzeit hat wenku8
weniger als 2.000 Bücher, was bedeutet, dass die Hilfe von linovel
und lknovel
ebenfalls vierstellig ist und nicht so groß ist wie wenku8
, also:
在aid方面,可以采取aid+10000000的方式,比如linovel的aid是+1000万,lknovel的aid是+2000万,这样本地书架的内容就错开了。
Zur Archivierung:
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-->
Solange der erfasste Inhalt über正则表达式
oder aktualisierbare lua
Skripte weitergeleitet wird, kann die Paketerfassung erreicht werden. Anschließend kann die Hauptschnittstelle der Bibliothek wie folgt geändert werden:
文库入口(Material Card):
轻国文库
轻之文库
轻小说文库
etc
Klicken Sie, um die Suchoberfläche aufzurufen, und suchen Sie dann, laden Sie es herunter und konvertieren Sie es in ein erkennbares Format. Was ich bisher gehört habe, ist, dass die heimische Bibliothek weiterhin kostenlos unterhalten wird!
Wenn Studierende oder Entwickler Interesse haben, können Sie mich kontaktieren
- 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,用在小说阅读的设置和跳转页面中。
Ursprünglich war die App nicht als Open Source gedacht. Beispielsweise war der Code nicht gut geschrieben, und wenn es Open Source wäre, müssten zwei Versionen gepflegt werden ...
Der Hauptgrund ist, dass ich beim Lernen viele Umwege gemacht habe und viele Versuche im historischen Push-System von Google zu sehen sind Design, und die offizielle App wurde auch sehr gut entwickelt, aber was Entwickler wirklich nutzen müssen Darüber hinaus sind Designbibliotheken nur Bibliotheken von Drittanbietern. Allerdings ist sie immer noch nicht in allen Belangen so gut wie die Google Play Store App. Ich möchte mich nicht vom Code trennen, ich möchte nicht, dass die App kopiert wird =. = Es stellt sich jedoch heraus, dass ich zu viel nachgedacht habe ...
Ich habe jedoch寿终正寝
verschiedene死亡预告
erhalten, sodass diese App 233 jetzt vollständig Open Source ist, einschließlich APPKEY, API usw. Willkommen zum Kommunizieren und Lernen
Lassen Sie uns dieses Mal经验教训
aus der Entwicklung der App teilen:
Apps, die auf Websites basieren, müssen sicherstellen, dass die Website keinen Einfluss auf die Entwicklung der App hat.
Die aktuelle Situation ist, dass sich die Website-Strategie geändert hat, was dazu geführt hat, dass der Schnittstellendienst dieser App eingestellt und durch eine andere kooperative App (keine Drittanbieter-App) ersetzt wurde. Was ich bereits gesagt habe, ist, dass sich jeder beeilen sollte und抓紧缓存
herunterlädt, solange er noch verfügbar ist. Möglicherweise müssen Sie in Zukunft dafür bezahlen. Folgen Sie einfach dem Beispiel von Goose Factory!
Daher denke ich, dass es beim Erstellen einer eigenen App am besten ist, eine Service-Website wie空之文库
zu erstellen, die über ein Server-Image verfügt, damit Probleme mit LK keine Auswirkungen auf Kongwen haben.
Seien Sie vorsichtig bei der Entwicklung von App-Typen.
In dem Blogbeitrag hier steht auch, dass der Markt版权敏感的软件
dies nicht so einfach akzeptieren wird und ein Urheberrechtsnachweis erbracht werden muss. Daher konnte es hier nicht in die Regale gestellt werden, da轻文
über Originalelemente verfügt. Heutzutage wird die inländische Zensur immer strenger...
Benutzerführung ist wichtig.
In dieser App sind viele kleine Funktionen versteckt. Durch langes Drücken auf ein Kapitel können左右翻页
oder上下滑动
Drücken auf die Verlaufssuche gelöscht werden aufzeichnen. Ein weiteres Beispiel: Die Lautstärketasten können Seiten umblättern, klicken, um Seiten umzublättern, und Sie können auch Kapitel wechseln usw. Sogar Benutzer, die Bilder ansehen, wissen nicht, wie es geht. Hier wird die Schaltfläche auf der ActionBar platziert, um Konflikte mit dem Umblättern zu vermeiden, aber der Benutzer sagt, dass das Bild nicht gefunden werden kann =. = Beispielsweise heißt es, dass benutzerdefinierte Schriftarten, Bilder usw. nicht auf der externen SD-Karte verwendet werden können, der Benutzer sie aber trotzdem nicht wie erforderlich bedienen kann.
Daher sollte die Benutzeroberfläche beim Aufrufen benutzerfreundlich sein und eine Bedienaufforderung angezeigt werden, sodass dieser Aspekt verloren geht!
Um die ursprüngliche Benutzerklebrigkeit zu brechen, ist ein sehr starker Vorteil erforderlich.
Ursprünglich gab es eine App für Light Novels namens空之文库
. Nach dem Erscheinen meiner App stieg die Zahl der Nutzer allerdings stark an. Allerdings sind die Abbildungen am Ende des Artikels tatsächlich die größte Schwäche, da viele Light-Nutzer Romane sind Mittelschüler. Einige Benutzer sagen, dass es umständlich klingt, aber um die Anzahl der Benutzer zu erhöhen, müssen Apps, die als替代品
gedacht sind, die Bedürfnisse der überwiegenden Mehrheit der Benutzer funktional erfüllen. Nach der Veröffentlichung轻文
ist die Anzahl der Benutzer hier stark zurückgegangen.
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.
......
Der Dank geht an diese wunderbaren Menschen (Emoji-Taste):
Babypfeffer | Jack Liu |
Dieses Projekt folgt der All-Contributors-Spezifikation. Beiträge jeglicher Art sind willkommen!