قضية تاريخية وهذا ما نعرفه جميعا ؟
إذا كنت تريد مكافأتي بالكود الذي يستخدم الحب لتوليد الكهرباء، يمكنك الضغط على هذا الرابط لمساعدتي في إعادة الشحن ❤️:
تطبيق轻小说文库
بأسلوب تصميم المواد مفتوح المصدر تمامًا ! إذا كنت ترغب في ممارسة التصميم متعدد الأبعاد، فيمكنك الرجوع إلى الكود المصدري لهذا المشروع إذا لم تكن واضحًا أو لديك مواضيع مختلفة ذات صلة، فيمكنك إرسال issue
للتواصل ~
هذا المشروع هو أول مرة أقوم فيها بكتابة تطبيق Android، قرأت أولاً كتابًا تمهيديًا بعنوان 《第一行代码Android》
مقدم من موقع chinapub كمراجعة للكتاب، ثم بدأت في كتابة هذا التطبيق. بدأت الكتابة في أكتوبر 2014، وكان كل ذلك في وقت متقطع، وبحلول نهاية ديسمبر، تمت كتابة الإصدار 0.5.2.0، ولم أكن أعرف أي شيء في الأساس، وكان الكود الذي كتبته فظيعًا. لاحقًا، اقترح أحد المصممين في مجموعة مستخدمي الإصدار التجريبي الداخلي تصميم تطبيق بأسلوب التصميم متعدد الأبعاد (المشار إليه فيما بعد باسم MD
)، لذلك خطط لإعادة تطويره. لقد كان مماطلاً ومماطلة، ولم يكتمل التطبيق الجديد حتى نهاية شهر يوليو، ولو كنت أحسبه، لكان قد استغرق شهرًا كاملاً وبلغ أكثر من 20 ألف سطر من التعليمات البرمجية المكتوبة بخط اليد.
هذا التطبيق هو مجرد اهتمام وتجربة كمشروع، لذا فهو完全无偿
والكود المصدري完全开源
أيضًا! الجميع موضع ترحيب للتواصل. لقد كنت مترددًا من قبل في فتح MD
جديد، من ناحية ، أشعر أنه من الصعب جدًا الكتابة. لقد بحثت عن معلومات على العديد من مواقع Google وساهمت بالعشرات في البرنامج الإضافي Hongxing_(:3」∠)_On the . من ناحية أخرى، يتم استخدامه رسميًا فيما يتعلق بإدارة git، ويحظر مشرف موقع Wenku8 أيضًا جعل واجهة برمجة التطبيقات عامة، لذا فإن إدارة الإصدارين مزعجة للغاية، ومن ناحية أخرى، فإن الكود فوضوي للغاية وغير منظم.
**ملاحظة: **تم نسخ جزء من الكود المصدري للإصدار 1.x من 0520، والنمط 0520 سيء جدًا، على سبيل المثال، تم isLoading
AsyncTask
خارج الفصل. لذلك، سيكون أسلوب الترميز غير متسق، وأنا راضٍ تمامًا عن الكود المكتوب حديثًا، كما أن الكود القديم لا يحتاج إلى تعديل يذكر، لذلك لا توجد إعادة بناء. نرحب أيضًا بالاقتراحات المتعلقة بأسلوب الترميز في الإصدار ~
لماذا يطلب التطبيق تخزين الروايات التي تهمك في أسرع وقت ممكن؟ لماذا هناك حاجة ملحة لفتح المصدر الآن؟
يرجى الاطلاع على开发者的碎碎念
في نهاية الوثيقة.
يمكنك الرجوع إلى عروض إنتاج التطبيق المقدمة من المصمم ~
الكود المصدري للإصدار 0.5.1.0030 (إصدار eclipse
+ ADT
)، يقوم الكود المصدري هذا بإخصاء جزء API، لذلك لا يمكن الحصول على البيانات بشكل طبيعي بعد التجميع.
تم نسخ الكود المصدري للإصدار 0.5.2.1典藏版
(إصدار Android Studio
) بالكامل من المكتبة الخاصة. عنوان إصدار الإصدار هو نفس عنوان الإصدار الرسمي.
تم إنشاء الإصدار القديم من الملف المصدري للرسم بنفسي في ذلك الوقت، وكان عشوائيًا وغير منظم تمامًا =. =
يمكن تجميع جميع وحدات تخزين التعليمات البرمجية المصدرية للإصدار الرسمي 1.x، وكود المصدر الكامل لتطبيق MD
style، وتشغيلها بشكل طبيعي! (إصدار Android Studio
)
بالنسبة للإصدار الجديد من تطبيق MD
style، توجد رسومات التصميم في design-source/
وملفات المشروع موجودة في studio-android/
.
تستخدم جميع المراجع إلى مكتبات الطرف الثالث تبعية Gradle، والتي سيتم تجاهلها مباشرة من حيث التشويش. قوة التشفير منخفضة، ولكنها ملائمة للتطوير ~
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/
| ... 略
يبدأ الإصدار القديم من التطبيق ويعمل بشكل أكثر سلاسة من الإصدار MD
ويتم الاحتفاظ به للطرز القديمة. يمكن العثور على الكود المصدري لإصدار Eclipse
في دليل eclipse-android/
(ليس الأحدث). يمكن العثور على الكود المصدري لإصدار Android Studio
في الدليل eclipse-android-old/
(إصدار المجمع هو الأحدث). ).تم إنشاء جميع موارد الصور للإصدار القديم باستخدام Fireworks. ويمكن العثور على الملفات المصدر في graph-source/
جدول المحتويات.
تم تقديم العديد من مكتبات الطرف الثالث هنا، لكن الطريقة خرقاء، فهي تستخدم بشكل أساسي نسخ ودمج كود المصدر، لذلك سيكون دليل الملفات فوضويًا. ومع ذلك، فإن قوة التشفير عالية_(:3 ∠)_ لا يزال من المستحسن القيام بذلك عند إنشاء برامج تجارية في المستقبل، على الرغم من أنه مزعج، إلا أنه سيكون مزعجًا للغاية بعد الارتباك ~
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
ارتفع عدد مستخدمي الإصدار الجديد من التطبيق إلى 10000 خلال 10 أيام، وكل ذلك بفضل تطبيق weku8. واستنادًا إلى معدل النمو الحالي، فمن المقدر أن يبلغ الحد الأقصى لعدد المستخدمين حوالي 3 واط.
هناك أيضًا بعض المخططات الإحصائية المثيرة للاهتمام التي يمكنك مشاركتها:
يمكن تنزيل أمثلة لملفات الأرشيف وعرضها في منطقة 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目录
ذاكرة التخزين المؤقت؛settings.wk8
عند بدء تشغيل التطبيق، وفي كل مرة يتم فيها تغيير الإعدادات، سيتم حفظ الإعدادات على الفور؛imgs目录
؛收藏
الرواية بكتابة المساعدة في saves/bookshelf_local.wk8
، وسيؤدي إلغاء المجموعة إلى إلغاء الكتابة وحذف محتوى xml المحلي ذي الصلة (لن يتم حذف الصورة)؛saves/intro
، 3 ملفات لكل رواية، وقم بتحديث النشاط بعد التحديث.saves/intro
، ثم قم بتنزيل المحتوى المحدد للرواية (المخزن في saves/novel
) وفقًا للمعلومات الموجودة في aid-volume.xml
، بعد كل تنزيل، تحقق مما إذا كان سيتم تنزيله أم لا يحتوي ملف xml على صور. إذا كانت هناك صورة، أدخل مهمة تنزيل الصورة** (ولهذا السبب سيقفز شريط التقدم إلى 2331 أثناء التنزيل)**;saves/read_saves_v1.wk8
عند الدخول، واحفظ التقدم عند الخروج؛saves/read_saves.wk8
عند الدخول، واحفظ التقدم عند الخروج؛saves/search_history.wk8
تلقائيًا، وسيتم حفظ أحدث سجل بحث في كل مرة يتم البحث فيه؛saves/cert.wk8
و saves/avatar.jpg
، وسيقوم بتسجيل الدخول تلقائيًا في كل مرة يبدأ فيها التطبيق، وإذا لم يكن متصلاً بالإنترنت، فسوف يقوم بتسجيل الدخول تلقائيًا عندما يقوم بذلك انقر على الصورة الرمزية أو عندما يكون هناك طلب وصول؛ إذا فشل تسجيل الدخول، فسيتم حذف مستندي الاعتماد؛ بشكل رئيسي تنفيذ الأرشفة ومواصفات الأرشفة المتوافقة.
مثال لمحتوى الملف:
1098||1939||1924||1749||278
قواعد حفظ الملفات:
||
عند القراءة، اتصل بـ str.split("\|\|");
saves/intro
: aid-intro.xml
و aid-introfull.xml
检查更新
aid-volume.xml
إذا كان هناك ملف مفقود، فسيتم تجاهل الكتاب المطابق للمساعدات检查更新
(اسحب التحقق من التحديثات في رف الكتب وواجهة المعلومات الجديدة) لإصلاح هذا الخطأ؛مثال لمحتوى الملف:
66761,,23799,,25575||66752,,134,,15090||63125,,1139,,3059||
63126,,904,,2824||63127,,11299,,157217
قواعد حفظ الملفات:
cid,,position,,height
:saves/novel
؛||
، ويتم استدعاء str.split("\|\|");
;مثال لمحتوى الملف:
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
قواعد حفظ الملفات:
aid:cid:vid:paraid:wordid
:||
، ويتم استدعاء str.split("\|\|");
;一个起始字符(wordid)
一个段落(paraid)
، ثم ترقيم الصفحات ديناميكيًا؛مثال لمحتوى الملف:
[田中][1到][音][刀剑][1日日日][进击的巨人][光还在][人类衰退][古][寒蝉]
قواعد حفظ الملفات:
[]
، ولا يحتوي UTF-8 على تشفير BOM؛0520
رقمًا في البداية:[0田中]
[1到]
GlobalConfig.java
؛مثال لمحتوى الملف:
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
مقتطف الكود للمفتاح:
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
}
قواعد حفظ الملفات:
ContentValue
في الكود؛::::
، ويتم فصل أزواج القيمة الرئيسية بواسطة ||||
؛enum.toString()
للحصول عليها لتجنب الأخطاء ذات المستوى المنخفض الناجمة عن الترميز الثابت؛مثال لمحتوى الملف:
Z0M5a0daRXBsZG5SMFZpaFhlPT0K
|b1FQOUVXYjFja1d1SlRkazVtV3BSWGI9Cg==
قواعد حفظ الملف:用户名|密码
، يتم إنشاء فواصل الأسطر تلقائيًا بواسطة وظائف النظام ولا تؤثر على القراءة.
加密流程:
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)))))
解密流程:
同理
لقد قرر هذا التطبيق تعليق الصيانة...
من ناحية، السبب هو أنه يتعين على المطورين أنفسهم الاستعداد لامتحانات الدراسات العليا في نهاية العام، ومن ناحية أخرى، والجانب الأكثر أهمية هو أن Goose Factory اشترى حقوق الطبع والنشر للروايات الخفيفة على نطاق واسع هناك هناك بعض الأسباب التي لا يمكن الكشف عنها في الوقت الحالي، باختصار، يجب أن ينتهي تطبيق الطرف الثالث هذا، لمزيد من التفاصيل، يمكنك قراءة开发者的碎碎念
.
قبل بضعة أيام، استخدمت HTTrack للزحف إلى قاعدة بيانات lknovel.cn
. الحجم الإجمالي هو 20 جيجا، وهو كبير جدًا، وقد توقف زاحف My XP. ومع ذلك، نظرًا لوجود الخادم في الدولة، فإن السرعة جيدة جدًا ويستغرق إكمالها من يوم إلى يومين.
حاولت لاحقًا التقاط wenku8.com
، والخادم موجود في الولايات المتحدة، والسرعة هنا بطيئة جدًا . وقد استغرق الأمر يومًا كاملاً لالتقاط 1G فقط، وأقدر أن حجم بيانات wenku8 يبلغ حوالي 30 جيجا بايت حقا لا أستطيع الاحتفاظ بها.
所以尽管API开源了,但是因为内陆速度实在太慢,我都没有兴趣抓取了,所以劝大家去抓其他站:
linovel.com 可以用HTTrack设置总目录页面为入口,深度5,然后设定MAX 10000000,图片采用探索模式即可(一般的扒站工具抓不下来图片),服务器没有防护;
lknovel.cn 可以用HTTrack设置章节页面及小说信息界面为入口(excel生成url即可),深度2,设定MAX 10000000,服务器没有防护。
wenku8.com 速度太慢了,数据量还大,插图还在文末,没啥性价比,别抓了。
بمعنى آخر، لن يكون لهذا التطبيق أي مصدر بيانات في المستقبل. إذا كنت ترغب في الاستمرار في إنشاء التطبيق، فلا يمكنك الزحف إلى ملف html وتنقيته إلا إذا كان أي مطور مهتمًا ويريد متابعة التطبيق عن طريق الزحف (على سبيل المثال : يمكن التقاط بيانات lknovel وlinovel وwenku8 في نفس الوقت وعرضها للمستخدم)، يمكنك قراءة الجزء التالي:
في الوقت الحاضر، يحتوي wenku8
على أقل من 2000 كتاب، wenku8
linovel
أن المساعدات المكونة من 4 أرقام lknovel
在aid方面,可以采取aid+10000000的方式,比如linovel的aid是+1000万,lknovel的aid是+2000万,这样本地书架的内容就错开了。
من حيث الأرشفة:
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-->
طالما أن المحتوى الذي تم التقاطه يتم تمريره من خلال正则表达式
أو نصوص lua
النصية القابلة للتحديث، فيمكن تحقيق التقاط الحزم ثم يمكن تغيير الواجهة الرئيسية للمكتبة إلى ما يلي:
文库入口(Material Card):
轻国文库
轻之文库
轻小说文库
etc
انقر للدخول إلى واجهة البحث، ثم ابحث عنها وقم بتنزيلها وتحويلها إلى تنسيق يمكن التعرف عليه. ما سمعته حتى الآن هو أن المكتبة المحلية ستظل مجانية!
إذا كان أي من الطلاب أو المطورين مهتمين، يمكنك الاتصال بي ~
- 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,用在小说阅读的设置和跳转页面中。
في الأصل، لم يكن المقصود من التطبيق أن يكون مفتوح المصدر، على سبيل المثال، لم تتم كتابة التعليمات البرمجية بشكل جيد، وإذا كان مفتوح المصدر، فيجب الاحتفاظ بنسختين...
السبب الرئيسي هو أنني اتخذت الكثير من المنعطفات في المواد التعليمية، ويمكن رؤية العديد من المحاولات في الدفعة التاريخية التي أطلقتها Google لتصميم النظام، كما تم تطوير التطبيق الرسمي بشكل جيد للغاية، ولكن ما يحتاج المطورون حقًا إلى استخدامه بالإضافة إلى الدعم - مكتبات التصميم هي مكتبات تابعة لجهات خارجية فقط. ومع ذلك، فهو لا يزال ليس بجودة تطبيق متجر Google Play في جميع الجوانب. لا أريد أن أتخلى عن الكود، ولا أريد أن يتم نسخ التطبيق =. = لكن اتضح أنني فكرت كثيرًا..
ومع ذلك، فقد تلقيت مؤخرًا العديد死亡预告
، لذا فإن هذا التطبيق على وشك寿终正寝
. 233 أصبح الآن مفتوح المصدر تمامًا، بما في ذلك APPKEY وAPI وما إلى ذلك. مرحبًا بالجميع للتواصل والتعلم ~
دعونا نشارك经验教训
من تطوير التطبيق هذه المرة:
يجب أن تتأكد التطبيقات التي تعتمد على مواقع الويب من أن موقع الويب لا يؤثر على تطوير التطبيق.
الوضع الحالي هو أن استراتيجية موقع الويب قد تغيرت، مما أدى إلى إيقاف خدمة الواجهة الخاصة بهذا التطبيق واستبدالها بتطبيق تعاوني آخر (وليس طرفًا ثالثًا). ما قلته من قبل هو أنه يجب على الجميع الإسراع بتنزيل抓紧缓存
بينما لا تزال متاحة، وقد تضطر إلى الدفع مقابلها في المستقبل، ما عليك سوى اتباع خطى Goose Factory!
لذلك، أعتقد أنه عند إنشاء تطبيقك الخاص، من الأفضل إنشاء موقع ويب للخدمة، تمامًا مثل空之文库
، الذي يحتوي على صورة خادم، بحيث لا تؤثر مشكلات LK على Kongwen.
كن حذرًا عند تطوير أنواع التطبيقات.
مكتوب أيضًا في منشور المدونة هنا أن سوق版权敏感的软件
لن يقبلها بسهولة، ويجب تقديم دليل على حقوق الطبع والنشر. لذلك، لم يكن من الممكن وضعها على الرفوف هنا. يمكن وضع轻文
على الرفوف لأنها تحتوي على عناصر أصلية. في أيامنا هذه، أصبحت الرقابة الداخلية أكثر صرامة...
توجيه المستخدم مهم.
هناك العديد من الوظائف الصغيرة المخفية في هذا التطبيق، على سبيل المثال، لا يمكن للمستخدمين العثور على وظيفة البحث. يمكن للنقر لفترة طويلة على الفصل اختيار左右翻页
واليمين أو上下滑动
للقراءة سِجِلّ. مثال آخر: يمكن لمفاتيح الصوت قلب الصفحات، والنقر لقلب الصفحات، ويمكنك أيضًا تبديل الفصول، وما إلى ذلك. حتى المستخدمين الذين يشاهدون الصور لا يعرفون كيفية القيام بذلك، هنا يتم وضع الزر على ActionBar لتجنب التعارض مع عملية قلب الصفحة، لكن المستخدم يقول أنه لا يمكن العثور على الصورة =. = على سبيل المثال، يقال أنه لا يمكن استخدام الخطوط والصور المخصصة وما إلى ذلك في بطاقة SD الخارجية، ولكن لا يزال المستخدم غير قادر على العمل على النحو المطلوب.
لذلك، عند الدخول إلى الواجهة، يجب أن تكون سهلة الاستخدام ويجب أن تظهر مطالبة التشغيل، وبالتالي يتم فقدان هذا الجانب!
تتطلب التصاق المستخدم الأصلي ميزة قوية جدًا للكسر.
في الأصل، كان هناك تطبيق للروايات الخفيفة يسمى空之文库
. بعد ظهور تطبيقي، زاد عدد المستخدمين كثيرًا، ومع ذلك، فإن الرسوم التوضيحية في نهاية المقال هي بالفعل أكبر نقطة ضعف، لأن العديد من مستخدمي الضوء الروايات هي طلاب المدارس المتوسطة. يقول بعض المستخدمين أن الأمر يبدو غريبًا، ولكن من أجل زيادة عدد المستخدمين، تحتاج التطبيقات المستهدفة替代品
إلى تلبية احتياجات الغالبية العظمى من المستخدمين وظيفيًا. لذلك بعد ظهور轻文
، فقد عدد المستخدمين هنا الكثير.
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.
......
الشكر موصول لهؤلاء الأشخاص الرائعين (مفتاح الرموز التعبيرية):
بيبي بيبر | جاك ليو |
يتبع هذا المشروع مواصفات جميع المساهمين، ونرحب بالمساهمات من أي نوع.