├── LICENSE ├── README.md ├── nabo-1.3.apk ├── nabo-v1.3.png └── source ├── .gitignore ├── AndroidManifest.xml ├── assets └── otStyle.css ├── build.gradle ├── libs └── android-xmlrpc.jar ├── proguard-rules.pro ├── res ├── drawable │ ├── chat_author_shape.xml │ ├── chat_shape.xml │ ├── edit_background.xml │ ├── ic_bbn_comment.xml │ ├── ic_bbn_share.xml │ ├── ic_bnb_switch.xml │ ├── ic_bnb_write.xml │ ├── ic_bvc_pull.xml │ ├── ic_bvc_right.xml │ ├── ic_info.xml │ ├── ic_launcher_background.xml │ ├── ic_launcher_foreground.xml │ ├── ic_list_next.xml │ ├── ic_logo.xml │ ├── ic_manage_comment.xml │ ├── ic_manage_media.xml │ ├── ic_manage_page.xml │ ├── ic_manage_post.xml │ ├── selector_edit_img.xml │ ├── selector_format_bold.xml │ ├── selector_format_header_1.xml │ ├── selector_format_header_2.xml │ ├── selector_format_header_3.xml │ ├── selector_format_header_4.xml │ ├── selector_format_header_5.xml │ ├── selector_format_italic.xml │ ├── selector_format_light.xml │ ├── selector_format_quote.xml │ ├── selector_format_strike.xml │ ├── selector_link.xml │ ├── selector_list.xml │ ├── selector_redo.xml │ ├── selector_time.xml │ └── selector_undo.xml ├── layout │ ├── activity_about.xml │ ├── activity_comment.xml │ ├── activity_edit_post_set.xml │ ├── activity_editor.xml │ ├── activity_login.xml │ ├── activity_main.xml │ ├── activity_media.xml │ ├── activity_personage.xml │ ├── activity_post.xml │ ├── activity_setting.xml │ ├── activity_start.xml │ ├── activity_web_view.xml │ ├── fragment_editor.xml │ ├── fragment_first.xml │ ├── fragment_last.xml │ ├── fragment_preview.xml │ ├── fragment_recycle_content_item.xml │ ├── fragment_recycle_header_item.xml │ ├── fragment_recycle_other_item.xml │ ├── fragment_register_first.xml │ ├── fragment_register_last.xml │ ├── fragment_tab_title.xml │ ├── linear_item.xml │ ├── page_recycle_comment_author_item.xml │ ├── page_recycle_comment_item.xml │ └── page_recycle_media_item.xml ├── menu │ ├── edit.xml │ └── post.xml ├── mipmap-anydpi-v26 │ ├── ic_launcher.xml │ └── ic_launcher_round.xml ├── mipmap-hdpi │ ├── ic_launcher.png │ ├── ic_launcher_foreground.png │ └── ic_launcher_round.png ├── mipmap-mdpi │ ├── ic_launcher.png │ ├── ic_launcher_foreground.png │ └── ic_launcher_round.png ├── mipmap-xhdpi │ ├── ic_launcher.png │ ├── ic_launcher_foreground.png │ └── ic_launcher_round.png ├── mipmap-xxhdpi │ ├── edit_img.png │ ├── edit_img_press.png │ ├── format_bold_img.png │ ├── format_bold_img_press.png │ ├── format_header_1_img.png │ ├── format_header_1_img_press.png │ ├── format_header_2_img.png │ ├── format_header_2_img_press.png │ ├── format_header_3_img.png │ ├── format_header_3_img_press.png │ ├── format_header_4_img.png │ ├── format_header_4_img_press.png │ ├── format_header_5_img.png │ ├── format_header_5_img_press.png │ ├── format_italic_img.png │ ├── format_italic_img_press.png │ ├── format_quote_img.png │ ├── format_quote_img_press.png │ ├── ic_launcher.png │ ├── ic_launcher_foreground.png │ ├── ic_launcher_round.png │ ├── light_img.png │ ├── light_img_press.png │ ├── link_img.png │ ├── link_img_press.png │ ├── list_img.png │ ├── list_img_press.png │ ├── redo_img.png │ ├── redo_img_press.png │ ├── strikethrough_img.png │ ├── strikethrough_img_press.png │ ├── time_img.png │ ├── time_img_press.png │ ├── undo_img.png │ └── undo_img_press.png ├── mipmap-xxxhdpi │ ├── ic_launcher.png │ ├── ic_launcher_foreground.png │ └── ic_launcher_round.png └── values │ ├── colors.xml │ ├── strings.xml │ └── styles.xml └── src └── cn └── krait └── nabo ├── StartActivity.java ├── activity ├── MainActivity.java ├── inherit │ └── InitialActivity.java ├── page │ ├── CommentActivity.java │ ├── EditPostActivity.java │ ├── EditPostSetActivity.java │ ├── MediaActivity.java │ ├── PostActivity.java │ └── WebViewActivity.java ├── personage │ ├── PersonageActivity.java │ └── setting │ │ ├── AboutActivity.java │ │ └── SettingActivity.java └── register │ └── LoginActivity.java ├── adapter ├── MRVFAdapter.java ├── MRVLAdapter.java └── page │ ├── CommentAdapter.java │ └── MediaAdapter.java ├── behavior └── DefaultBehavior.java ├── fragment ├── MainFirstFragment.java ├── MainLastFragment.java ├── RegisterFirstFragment.java └── RegisterLastFragment.java ├── module ├── ACache │ └── ACache.java ├── markdown │ ├── ui │ │ ├── EditorActivity.java │ │ ├── adapter │ │ │ └── ViewPagerAdapter.java │ │ └── fragment │ │ │ ├── EditorFragment.java │ │ │ └── PreviewFragment.java │ ├── utils │ │ ├── EditorHandler.java │ │ ├── MarkdownHandler.java │ │ ├── MarkdownUtils.java │ │ ├── OperationType.java │ │ └── PermissionUtils.java │ └── widget │ │ └── MarkdownView.java ├── method │ ├── CheckVersion.java │ └── ObtainExperience.java ├── object │ ├── AccountObject.java │ ├── CommentObject.java │ ├── CommentsObject.java │ ├── NewPostObject.java │ ├── PersonageObject.java │ ├── PostObject.java │ ├── PostsObject.java │ ├── RssObject.java │ ├── RssUrlObject.java │ ├── RssesObject.java │ ├── SettingObject.java │ └── StatObject.java └── personage │ └── Personage.java ├── service ├── XMLRPCInterface.java └── XMLRPCService.java └── util ├── AliPayUtil.java ├── ConstUtils.java ├── Log.java ├── ManifestUtils.java ├── OtherUtil.java └── XMLRPCUtils.java /README.md: -------------------------------------------------------------------------------- 1 | # 南博 - Typecho 客户端 2 | 3 | #### 简介 4 | 这是一款专属于 Typecho 博客的 Android 客户端 5 | 6 | # 预览 7 | ##### Apk 8 | [南博v1.3.apk](nabo-1.3.apk) 9 | 10 | ##### Image 11 | 12 | ![](nabo-v1.3.png) 13 | 14 | #### 注意 15 | - 这个 App 是 权那他 第一个 helloworld 16 | - 所以它只是一个普通的软件,还望各位开发者斧正代码 17 | 18 | #### 如果您认为南博还不错,那就给个star吧 19 | 20 | 开源的版本为:**v1.3** 21 | - 使用 Android Studio 开发 22 | - 该版本任需要替换XmlRpc.php 23 | - https://github.com/kraity/kraitnabo-xmlrpc/releases/tag/v1.3 24 | 25 | 由于后续的版本已底层重构 26 | 且不符合开源条件,故仅开源版本v1.3 27 | 28 | #### 为什么叫南博这个名字? 29 | - 最初计划名是 “那博”,后来感觉不美观。 30 | - 联想到“南”还有读音是“na”,于是确定名为“南博” 31 | 32 | #### 南博是谁开发的? 33 | - 由👉权那他👈独立原生开发 34 | - 同时感谢鸣谢列表的项目 35 | 36 | # 获取软件 37 | 该应用已上架酷安,下载地址: 38 | https://www.coolapk.com/apk/cn.krait.nabo 39 | 40 | # 开源协议 41 | ##### Apache LICENSE-2.0 42 | 43 | Copyright (c) 2019-2020, Kraity 权那他 (github.com/kraity). 44 | 45 | Licensed under the Apache License, Version 2.0 (the "License"); 46 | 47 | You may not use this file except in compliance with the License. 48 | 49 | You may obtain a copy of the License at 50 | 51 | http://www.apache.org/licenses/LICENSE-2.0 52 | 53 | Unless required by applicable law or agreed to in writing, software 54 | 55 | distributed under the License is distributed on an "AS IS" BASIS, 56 | 57 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 58 | 59 | See the License for the specific language governing permissions and 60 | 61 | limitations under the License. 62 | 63 | # 鸣谢 64 | 非常感谢以下开源项目的支持,没有他们就没有本项目。 65 | 66 | ##### xia-weiyang / OTMarkdownEditor 67 | - https://github.com/xia-weiyang/OTMarkdownEditor 68 | 69 | ##### tbruyelle / RxPermissions 70 | - https://github.com/tbruyelle/RxPermissions 71 | 72 | ##### delight-im / Android-AdvancedWebView 73 | - https://github.com/delight-im/Android-AdvancedWebView 74 | 75 | ##### einmalfel / Earl 76 | - https://github.com/einmalfel/Earl 77 | 78 | ##### vsch / flexmark-java 79 | - https://github.com/vsch/flexmark-java 80 | 81 | ##### qinci / AndroidEdit 82 | - https://github.com/qinci/AndroidEdit 83 | 84 | ##### zetbaitsu / Compressor 85 | - https://github.com/zetbaitsu/Compressor 86 | 87 | ##### ybq / Android-SpinKit 88 | - https://github.com/ybq/Android-SpinKit 89 | 90 | ##### OCNYang / ContourView 91 | - https://github.com/OCNYang/ContourView 92 | 93 | ##### yangfuhai / ACache 94 | - https://github.com/yangfuhai 95 | 96 | -------------------------------------------------------------------------------- /nabo-1.3.apk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nakbo/nabo/044b00c22d2777fc960143c3d731cd5ea5841e4f/nabo-1.3.apk -------------------------------------------------------------------------------- /nabo-v1.3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nakbo/nabo/044b00c22d2777fc960143c3d731cd5ea5841e4f/nabo-v1.3.png -------------------------------------------------------------------------------- /source/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /source/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 25 | 28 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /source/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.application' 2 | 3 | android { 4 | compileSdkVersion 29 5 | buildToolsVersion "29.0.1" 6 | defaultConfig { 7 | applicationId "cn.krait.nabo" 8 | minSdkVersion 24 9 | targetSdkVersion 29 10 | versionCode 4 11 | versionName "1.3" 12 | testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" 13 | } 14 | buildTypes { 15 | release { 16 | minifyEnabled false 17 | proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' 18 | } 19 | } 20 | 21 | } 22 | 23 | dependencies { 24 | implementation fileTree(dir: 'libs', include: ['*.jar']) 25 | implementation 'androidx.appcompat:appcompat:1.1.0' 26 | implementation 'androidx.constraintlayout:constraintlayout:1.1.3' 27 | implementation 'com.android.support.constraint:constraint-layout:1.1.3' 28 | testImplementation 'junit:junit:4.12' 29 | androidTestImplementation 'androidx.test:runner:1.2.0' 30 | androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0' 31 | implementation 'com.google.android.material:material:1.0.0' 32 | implementation files('libs/android-xmlrpc.jar') 33 | 34 | implementation 'com.google.code.gson:gson:2.8.5' 35 | implementation("com.squareup.okhttp3:okhttp:4.0.1") 36 | 37 | implementation 'com.einmalfel:earl:1.2.0' 38 | 39 | implementation 'com.ocnyang:contourview:1.0.1' 40 | implementation 'com.github.ybq:Android-SpinKit:1.4.0' 41 | 42 | implementation 'com.github.delight-im:Android-AdvancedWebView:v3.0.0' 43 | implementation 'id.zelory:compressor:2.1.0' 44 | 45 | implementation 'ren.qinc.edit:lib:0.0.5' 46 | implementation 'com.vladsch.flexmark:flexmark-formatter:0.28.32' 47 | 48 | implementation 'com.github.tbruyelle:rxpermissions:0.10.2' 49 | 50 | } 51 | -------------------------------------------------------------------------------- /source/libs/android-xmlrpc.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nakbo/nabo/044b00c22d2777fc960143c3d731cd5ea5841e4f/source/libs/android-xmlrpc.jar -------------------------------------------------------------------------------- /source/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile 22 | -------------------------------------------------------------------------------- /source/res/drawable/chat_author_shape.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 11 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /source/res/drawable/chat_shape.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 8 | -------------------------------------------------------------------------------- /source/res/drawable/edit_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /source/res/drawable/ic_bbn_comment.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 12 | 13 | -------------------------------------------------------------------------------- /source/res/drawable/ic_bbn_share.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 12 | 13 | -------------------------------------------------------------------------------- /source/res/drawable/ic_bnb_switch.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /source/res/drawable/ic_bnb_write.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /source/res/drawable/ic_bvc_pull.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /source/res/drawable/ic_bvc_right.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /source/res/drawable/ic_info.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /source/res/drawable/ic_launcher_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /source/res/drawable/ic_launcher_foreground.xml: -------------------------------------------------------------------------------- 1 | 6 | 8 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /source/res/drawable/ic_list_next.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /source/res/drawable/ic_logo.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /source/res/drawable/ic_manage_comment.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /source/res/drawable/ic_manage_media.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /source/res/drawable/ic_manage_page.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /source/res/drawable/ic_manage_post.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /source/res/drawable/selector_edit_img.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /source/res/drawable/selector_format_bold.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /source/res/drawable/selector_format_header_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /source/res/drawable/selector_format_header_2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /source/res/drawable/selector_format_header_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /source/res/drawable/selector_format_header_4.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /source/res/drawable/selector_format_header_5.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /source/res/drawable/selector_format_italic.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /source/res/drawable/selector_format_light.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /source/res/drawable/selector_format_quote.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /source/res/drawable/selector_format_strike.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /source/res/drawable/selector_link.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /source/res/drawable/selector_list.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /source/res/drawable/selector_redo.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /source/res/drawable/selector_time.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /source/res/drawable/selector_undo.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /source/res/layout/activity_about.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 22 | 23 | 28 | 29 | 34 | 35 | 39 | 40 | 41 | 42 | 43 | 47 | 48 | 53 | 54 | 55 | 56 | 57 | 61 | 62 | 67 | 68 | 69 | 70 | 71 | 75 | 76 | 80 | 81 | 82 | 83 | 87 | 88 | 92 | 93 | 98 | 99 | 100 | 104 | 105 | 109 | 110 | 115 | 116 | 117 | 121 | 122 | 126 | 127 | 132 | 133 | 134 | 137 | 141 | 145 | 146 | 147 | 148 | 149 | 150 | -------------------------------------------------------------------------------- /source/res/layout/activity_comment.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 22 | 23 | 29 | 30 | 36 | 37 | 38 | 39 | 45 | 53 | 69 |