? 역사적인 문제는 우리 모두가 알고 있는 것입니다 .
사랑을 사용하여 전기를 생성하는 코드를 보상으로 제공하고 싶다면 이 링크를 클릭하여 재충전하는 데 도움을 받을 수 있습니다 ❤️:
머티리얼 디자인 스타일의轻小说文库
앱은 완전한 오픈 소스입니다! 머티리얼 디자인을 연습하고 싶으신 분들은 본 프로젝트의 소스코드를 참고하셔서 불명확하거나 관련된 다양한 주제가 있으신 분들은 issue
보내서 소통하시면 됩니다~
이 프로젝트는 제가 처음으로 안드로이드 앱을 작성하는 프로젝트입니다. 먼저 chinapub에서 서평 작성을 위해 제공한 입문서 《第一行代码Android》
를 읽고 이 앱을 작성하기 시작했습니다. 2014년 10월부터 쓰기 시작했는데, 12월 말쯤에 0.5.2.0 버전이 작성됐는데, 당시에는 기본적으로 아무것도 몰랐고, 제가 작성한 코드도 형편 없었습니다. 이후 내부 베타 사용자 그룹의 한 디자이너가 머티리얼 디자인(이하 MD
) 스타일의 앱 디자인을 제안해 재개발을 계획하게 됐다. 미루고 미루다 보니 새 앱이 완성된 게 7월 말이 되어서야 계산하면 꼬박 한 달이 걸렸을 것이고, 손으로 쓴 코드의 양도 2만 줄이 넘었을 것이다.
이 앱은 프로젝트로서의 관심과 경험이 전혀 없기 때문에完全无偿
이며 소스 코드도完全开源
입니다! 누구나 소통할 수 있습니다. 예전에는 새로운 MD
오픈소스를 꺼려했는데, 한편으로는 글을 쓰는 것이 너무 어렵다고 느껴서 여러 구글에서 정보를 찾아보고 홍싱 플러그인에 수십건을 기여했습니다_(:3」∠)_ 에 한편, 공식적으로 사용되는 git 관리와 관련해 Wenku8의 웹마스터도 API 공개를 금지하고 있어 두 버전을 관리하는 것이 매우 번거로운 반면, 코드는 매우 지저분하고 체계적이지 않습니다.
**참고: **버전 1.x의 소스 코드 중 일부는 0520에서 복사되었으며 0520의 스타일은 매우 나쁩니다. 예를 들어 AsyncTask
의 isLoading
은 클래스 외부에서 정의됩니다. 따라서 코딩 스타일이 일관성이 없을 것입니다. 새로 작성된 코드에는 상당히 만족스럽습니다. 이전 코드도 수정이 거의 필요하지 않으므로 리팩토링이 없습니다. 코딩 스타일에 대한 제안도 환영합니다~
관심 있는 소설을 최대한 빨리 캐시에 저장하라고 앱에 표시되는 이유는 무엇인가요? 왜 지금 소스 오픈이 그토록 시급한가요?
문서 끝에 있는开发者的碎碎念
참조하세요.
디자이너가 제공하는 앱 제작 렌더링을 참고하시면 됩니다~
0.5.1.0030 버전( eclipse
+ ADT
버전)의 소스코드인 이 소스코드는 API 부분을 거세하기 때문에 컴파일 후에는 정상적으로 데이터를 얻을 수 없습니다.
0.5.2.1典藏版
( Android Studio
버전)의 소스 코드는 개인 라이브러리에서 완전히 복사되었습니다. 출시 버전의 출시 주소는 정식 버전의 출시 주소와 동일합니다.
이전 버전의 도면 소스 파일은 당시 제가 직접 만든 것이었고, 완전히 무작위이고 체계적이지 않았습니다 =. =
1.x 공식 버전의 모든 소스 코드 저장, MD
스타일 앱의 전체 소스 코드를 정상적으로 컴파일하고 실행할 수 있습니다! ( Android Studio
버전)
새 버전의 MD
스타일 앱의 경우 디자인 도면은 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
wenku8 덕분에 새 버전의 앱 사용자 수가 10일 만에 10,000명으로 늘어났습니다. 현재 성장률을 기준으로 볼 때 최대 사용자 수는 약 3W 정도로 추정됩니다.
공유할 수 있는 몇 가지 흥미로운 통계 차트도 있습니다.
아카이브 파일의 예시는 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目录
에 파일 이름이 CRC32인 캐시 파일이 자동으로 생성됩니다.settings.wk8
읽고 설정이 변경될 때마다 설정이 즉시 저장됩니다.imgs目录
에 자동으로 저장됩니다.收藏
기능은 saves/bookshelf_local.wk8
에 보조 자료를 작성하며, 수집을 취소하면 작성이 취소되고 관련 로컬 xml 콘텐츠가 삭제됩니다(그림은 삭제되지 않음).saves/intro
에서 현재 소설의 파일(각 소설당 3개 파일)만 업데이트하고 업데이트 후 활동을 새로 고칩니다.saves/intro
에서 현재 소설의 파일을 업데이트한 다음, aid-volume.xml
의 정보에 따라 소설의 특정 콘텐츠( saves/novel
에 저장됨)를 다운로드합니다. 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
디렉토리의 3개 파일에 해당합니다: 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
의 파일 이름에 해당하는 장 ID;||
로 구분되며 읽을 때 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("\|\|");
호출됩니다.一个段落(paraid)
一个起始字符(wordid)
)를 지정한 다음 동적으로 페이징하는 것입니다.파일 내용의 예:
[田中][1到][音][刀剑][1日日日][进击的巨人][光还在][人类衰退][古][寒蝉]
파일 저장 규칙:
[]
로 구분되며 UTF-8에는 BOM 인코딩이 없습니다.0520
버전은 시작 부분에 숫자를 추가합니다.[0田中]
[1到]
GlobalConfig.java
에는 10개의 항목이 저장되고 기록됩니다.파일 내용의 예:
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)))))
解密流程:
同理
본 앱은 점검을 중단하기로 결정했습니다...
그 이유는 개발자 스스로 연말에 대학원 시험을 준비해야 한다는 점과, 가장 중요한 점은 구스팩토리가 대규모로 라이트노벨 저작권을 구매했다는 점이다. 당분간 공개할 수 없는 몇 가지 이유가 있습니다. 간단히 말해서 이 타사 앱은 종료되어야 합니다. 자세한 내용은开发者的碎碎念
읽어보세요.
며칠 전 HTTrack을 사용하여 lknovel.cn
의 데이터베이스를 크롤링했는데 전체 크기가 20G로 너무 커서 내 XP 크롤러가 멈췄습니다. 다만 서버가 국내에 있어서 속도도 꽤 괜찮고 완료하는데 1~2일정도 소요됩니다.
나중에 wenku8.com
캡쳐하려고 했는데 서버가 미국에 있는데 여기 속도가 너무 느려서 1G만 캡쳐하는데 하루 종일 걸렸던 것 같아요. 정말 참을 수가 없어요.
所以尽管API开源了,但是因为内陆速度实在太慢,我都没有兴趣抓取了,所以劝大家去抓其他站:
linovel.com 可以用HTTrack设置总目录页面为入口,深度5,然后设定MAX 10000000,图片采用探索模式即可(一般的扒站工具抓不下来图片),服务器没有防护;
lknovel.cn 可以用HTTrack设置章节页面及小说信息界面为入口(excel生成url即可),深度2,设定MAX 10000000,服务器没有防护。
wenku8.com 速度太慢了,数据量还大,插图还在文末,没啥性价比,别抓了。
즉, 이 앱은 앞으로도 데이터 소스가 없을 것입니다. 앱을 계속 만들고 싶다면 html만 크롤링하고 정제하면 됩니다. : lknovel, linovel, wenku8의 데이터를 동시에 캡처하여 사용자에게 표시할 수 있습니다. 다음 부분을 읽을 수 있습니다.
현재 wenku8
도서 수는 2,000권 미만입니다. 즉, linovel
및 lknovel
의 보조 자료도 4자리이며 wenku8
만큼 크지는 않습니다.
在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 Play 스토어 앱만큼 좋지는 않습니다. 코드를 나누고 싶지 않고 앱을 복사하는 것도 원하지 않습니다 =. =근데 생각이 너무 많았나 보다...
하지만 최근 여러 가지死亡预告
받았기 때문에 이 앱은 곧寿终正寝
. 233은 이제 APPKEY, API 등을 포함하여 완전히 오픈 소스입니다. 교류하고 배우는 모든 분들을 환영합니다~
이번 앱 개발을 통해经验教训
공유해 보겠습니다.
웹사이트에 의존하는 앱은 웹사이트가 앱 개발에 영향을 미치지 않도록 해야 합니다.
현재 상황은 웹사이트 전략이 변경되어 이 앱의 인터페이스 서비스가 중단되고 다른 협력 앱(제3자가 아닌)으로 대체되는 상황입니다. 제가 전에 말씀드린 것은抓紧缓存
아직 사용 가능할 때 서둘러 다운로드해야 한다는 것입니다. 앞으로는 비용을 지불해야 할 수도 있습니다. Goose Factory의 안내를 따르세요.
따라서 자체 앱을 만들 때에는空之文库
처럼 서버 이미지가 있는 서비스 웹사이트를 구축하여 LK 문제가 콩웬에 영향을 미치지 않도록 하는 것이 최선이라고 생각합니다.
앱 유형을 개발할 때는 주의하세요.
여기 블로그 글에도版权敏感的软件
시장에서는 이를 쉽게 받아들이지 않을 것이며, 저작권 증명을 반드시 제공해야 한다고 적혀 있습니다. 따라서轻文
독창적인 요소를 가지고 있기 때문에 여기 선반에 놓을 수 없습니다. 요즘 국내 검열이 점점 더 엄격해지고 있어요.
사용자 지침이 중요합니다.
예를 들어, 사용자는 검색 기능을 찾을 수 없습니다. 장을 길게 누르면左右翻页
거나上下滑动
읽을 수 있습니다. 특정 기록. 또 다른 예: 볼륨 키로 페이지를 넘길 수 있고, 클릭하여 페이지를 넘길 수 있으며, 장을 전환할 수도 있습니다. 여기서는 페이지 넘김 작업과의 충돌을 피하기 위해 버튼을 액션바에 배치했는데, 사용자가 사진을 찾을 수 없다고 합니다 =. = 예를 들어 외장 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.
......
멋진 분들께 감사드립니다(이모티콘 키):
베이비페퍼 | 잭 리우 |
이 프로젝트는 모든 기여자 사양을 따릅니다. 어떤 종류의 기여도 환영합니다!