Procházet zdrojové kódy

添加demo项目。

庞利祥 před 5 roky
rodič
revize
0311a89a1d
72 změnil soubory, kde provedl 22716 přidání a 0 odebrání
  1. 137 0
      demo/build.gradle
  2. 21 0
      demo/proguard-rules.pro
  3. 63 0
      demo/src/main/AndroidManifest.xml
  4. 6702 0
      demo/src/main/assets/WallDatas.json
  5. 12944 0
      demo/src/main/assets/cxds5.json
  6. 22 0
      demo/src/main/assets/dist/abc.html
  7. 1 0
      demo/src/main/assets/dist/index.html
  8. 2 0
      demo/src/main/assets/dist/static/css/app.aa519651e328a583ca88e8b7d02122ab.css
  9. 1 0
      demo/src/main/assets/dist/static/css/app.aa519651e328a583ca88e8b7d02122ab.css.map
  10. 2 0
      demo/src/main/assets/dist/static/css/app.cca059254702f9ed953b7df749673cf4.css
  11. 1 0
      demo/src/main/assets/dist/static/css/app.cca059254702f9ed953b7df749673cf4.css.map
  12. 2 0
      demo/src/main/assets/dist/static/js/app.4768fdc1107768177998.js
  13. 1 0
      demo/src/main/assets/dist/static/js/app.4768fdc1107768177998.js.map
  14. 2 0
      demo/src/main/assets/dist/static/js/app.c59eccc233104d73ccb7.js
  15. 1 0
      demo/src/main/assets/dist/static/js/app.c59eccc233104d73ccb7.js.map
  16. 2 0
      demo/src/main/assets/dist/static/js/manifest.2ae2e69a05c33dfc65f8.js
  17. 1 0
      demo/src/main/assets/dist/static/js/manifest.2ae2e69a05c33dfc65f8.js.map
  18. 2 0
      demo/src/main/assets/dist/static/js/manifest.3ad1d5771e9b13dbdad2.js
  19. 1 0
      demo/src/main/assets/dist/static/js/manifest.3ad1d5771e9b13dbdad2.js.map
  20. 13 0
      demo/src/main/assets/dist/static/js/vendor.7fed9fa7b7ba482410b7.js
  21. 1 0
      demo/src/main/assets/dist/static/js/vendor.7fed9fa7b7ba482410b7.js.map
  22. 13 0
      demo/src/main/assets/dist/static/js/vendor.9d43f691bba00d2c76b8.js
  23. 1 0
      demo/src/main/assets/dist/static/js/vendor.9d43f691bba00d2c76b8.js.map
  24. binární
      demo/src/main/assets/ic_launcher.png
  25. 1 0
      demo/src/main/assets/vue/index.html
  26. 310 0
      demo/src/main/assets/vue/static/css/app.365230fcdec5540c73c87126a6b39cdb.css
  27. 1 0
      demo/src/main/assets/vue/static/css/app.365230fcdec5540c73c87126a6b39cdb.css.map
  28. binární
      demo/src/main/assets/vue/static/fonts/iconfont.83485c9.ttf
  29. binární
      demo/src/main/assets/vue/static/fonts/iconfont.df5f83a.eot
  30. 1259 0
      demo/src/main/assets/vue/static/img/iconfont.15eea4c.svg
  31. 2 0
      demo/src/main/assets/vue/static/js/app.bcfe948aec3e9d1194c5.js
  32. 1 0
      demo/src/main/assets/vue/static/js/app.bcfe948aec3e9d1194c5.js.map
  33. 2 0
      demo/src/main/assets/vue/static/js/manifest.2ae2e69a05c33dfc65f8.js
  34. 1 0
      demo/src/main/assets/vue/static/js/manifest.2ae2e69a05c33dfc65f8.js.map
  35. 13 0
      demo/src/main/assets/vue/static/js/vendor.94ad8e265ab2d614e07f.js
  36. 1 0
      demo/src/main/assets/vue/static/js/vendor.94ad8e265ab2d614e07f.js.map
  37. 45 0
      demo/src/main/java/com/sybotan/android/demo/DemoApp.kt
  38. 130 0
      demo/src/main/java/com/sybotan/android/demo/activities/GraphyActivity.kt
  39. 69 0
      demo/src/main/java/com/sybotan/android/demo/activities/MainActivity.kt
  40. 78 0
      demo/src/main/java/com/sybotan/android/demo/activities/WebViewActivity.kt
  41. 29 0
      demo/src/main/java/com/sybotan/android/demo/entitiies/FloorDatas.kt
  42. 30 0
      demo/src/main/java/com/sybotan/android/demo/entitiies/Revit.kt
  43. 26 0
      demo/src/main/java/com/sybotan/android/demo/entitiies/SgElement.kt
  44. 110 0
      demo/src/main/java/com/sybotan/android/demo/graphy/GraphyWallItem.kt
  45. 34 0
      demo/src/main/res/animator/sybotan_anim.xml
  46. 57 0
      demo/src/main/res/drawable-v24/ic_launcher_foreground.xml
  47. binární
      demo/src/main/res/drawable/ic_launcher123.png
  48. 97 0
      demo/src/main/res/drawable/ic_launcher_background.xml
  49. 32 0
      demo/src/main/res/drawable/menu_my.xml
  50. 27 0
      demo/src/main/res/drawable/menu_my_selected.xml
  51. 30 0
      demo/src/main/res/drawable/menu_my_selector.xml
  52. 53 0
      demo/src/main/res/drawable/sybotan_logo.xml
  53. 39 0
      demo/src/main/res/drawable/sybotan_logo_anim.xml
  54. 36 0
      demo/src/main/res/layout/activity_graphy.xml
  55. 40 0
      demo/src/main/res/layout/activity_main.xml
  56. 37 0
      demo/src/main/res/layout/activity_web_view.xml
  57. 45 0
      demo/src/main/res/menu/navigation.xml
  58. 28 0
      demo/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
  59. 28 0
      demo/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
  60. binární
      demo/src/main/res/mipmap-hdpi/ic_launcher.png
  61. binární
      demo/src/main/res/mipmap-hdpi/ic_launcher_round.png
  62. binární
      demo/src/main/res/mipmap-mdpi/ic_launcher.png
  63. binární
      demo/src/main/res/mipmap-mdpi/ic_launcher_round.png
  64. binární
      demo/src/main/res/mipmap-xhdpi/ic_launcher.png
  65. binární
      demo/src/main/res/mipmap-xhdpi/ic_launcher_round.png
  66. binární
      demo/src/main/res/mipmap-xxhdpi/ic_launcher.png
  67. binární
      demo/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
  68. binární
      demo/src/main/res/mipmap-xxxhdpi/ic_launcher.png
  69. binární
      demo/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
  70. 29 0
      demo/src/main/res/values/colors.xml
  71. 26 0
      demo/src/main/res/values/strings.xml
  72. 34 0
      demo/src/main/res/values/styles.xml

+ 137 - 0
demo/build.gradle

@@ -0,0 +1,137 @@
+/*
+ * ********************************************************************************************************************
+ *
+ *               iFHS7.
+ *              ;BBMBMBMc                  rZMBMBR              BMB
+ *              MBEr:;PBM,               7MBMMEOBB:             BBB                       RBW
+ *     XK:      BO     SB.     :SZ       MBM.       c;;     ir  BBM :FFr       :SSF:    ;xBMB:r   iuGXv.    i:. iF2;
+ *     DBBM0r.  :D     S7   ;XMBMB       GMBMu.     MBM:   BMB  MBMBBBMBMS   WMBMBMBBK  MBMBMBM  BMBRBMBW  .MBMBMBMBB
+ *      :JMRMMD  ..    ,  1MMRM1;         ;MBMBBR:   MBM  ;MB:  BMB:   MBM. RMBr   sBMH   BM0         UMB,  BMB.  KMBv
+ *     ;.   XOW  B1; :uM: 1RE,   i           .2BMBs  rMB. MBO   MBO    JMB; MBB     MBM   BBS    7MBMBOBM:  MBW   :BMc
+ *     OBRJ.SEE  MRDOWOR, 3DE:7OBM       .     ;BMB   RMR7BM    BMB    MBB. BMB    ,BMR  .BBZ   MMB   rMB,  BMM   rMB7
+ *     :FBRO0D0  RKXSXPR. JOKOOMPi       BMBSSWBMB;    BMBB:    MBMB0ZMBMS  .BMBOXRBMB    MBMDE RBM2;SMBM;  MBB   xBM2
+ *         iZGE  O0SHSPO. uGZ7.          sBMBMBDL      :BMO     OZu:BMBK,     rRBMB0;     ,EBMB  xBMBr:ER.  RDU   :OO;
+ *     ,BZ, 1D0  RPSFHXR. xWZ .SMr                  . .BBB
+ *      :0BMRDG  RESSSKR. 2WOMBW;                   BMBMR
+ *         i0BM: SWKHKGO  MBDv
+ *           .UB  OOGDM. MK,                                          Copyright (c) 2015-2019.  斯伯坦机器人
+ *              ,  XMW  ..
+ *                  r                                                                     All rights reserved.
+ *
+ * ********************************************************************************************************************
+ */
+
+apply plugin: 'com.android.application'
+apply plugin: 'kotlin-android'
+apply plugin: 'kotlin-android-extensions'
+
+android {
+    compileSdkVersion ANDROID_SDK_VERSION.toInteger()
+    buildToolsVersion ANDROID_BUILD_TOOLS_VERSION
+
+    defaultConfig {
+        minSdkVersion ANDROID_MIN_SDK_VERSION.toInteger()
+        targetSdkVersion ANDROID_SDK_VERSION.toInteger()
+        versionCode SYBOTAN_CODE.toInteger()
+        versionName SYBOTAN_ANDROID_VERSION
+
+        testInstrumentationRunner 'android.support.test.runner.AndroidJUnitRunner'
+        vectorDrawables.useSupportLibrary = true
+    }
+
+    buildTypes {
+        release {
+            // minifyEnabled false
+            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
+        }
+    }
+
+    // 解决lint语法检查错误(kotlin语法无法通过lint)
+    lintOptions {
+        abortOnError false
+    }
+
+    kotlinOptions {
+        jvmTarget = JVM_TARGET
+    }
+}
+
+dependencies {
+    implementation fileTree(dir: 'libs', include: ['*.jar'])
+    implementation 'com.android.support.constraint:constraint-layout:1.1.2'
+    testImplementation group: 'org.junit.jupiter', name: 'junit-jupiter-api', version: JUNIT_VERSION
+    androidTestImplementation('com.android.support.test.espresso:espresso-core:3.0.2', {
+        exclude group: 'com.android.support', module: 'support-annotations'
+    })
+
+    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+    // kotlin 依赖
+    implementation group: 'org.jetbrains.kotlin', name: 'kotlin-stdlib-jdk8', version: KOTLIN_VERSION
+
+    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+    // android支持
+    implementation group: 'com.android.support', name: 'appcompat-v7', version: ANDROID_SUPPORT_VERSION
+    implementation group: 'com.android.support', name: 'design', version: ANDROID_SUPPORT_VERSION
+    implementation group: 'com.android.support', name: 'support-v4', version: ANDROID_SUPPORT_VERSION
+    implementation group: 'com.android.support.constraint', name: 'constraint-layout', version: CONSTRAINT_VERSION
+
+    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+    // anko依赖
+    // https://mvnrepository.com/artifact/org.jetbrains.anko/anko-commons
+    implementation group: 'org.jetbrains.anko', name: 'anko-commons', version: ANKO_VERSION
+
+    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+    // 图片加载框架
+    // https://mvnrepository.com/artifact/com.squareup.picasso/picasso
+    implementation group: 'com.squareup.picasso', name: 'picasso', version: PICASSO_VERSION
+
+    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+    // anko依赖
+    // https://mvnrepository.com/artifact/org.jetbrains.anko/anko-common
+    implementation group: 'org.jetbrains.anko', name: 'anko-common', version: ANKO_VERSION
+    // https://mvnrepository.com/artifact/org.jetbrains.anko/anko-sdk25
+    implementation group: 'org.jetbrains.anko', name: 'anko-sdk25', version: ANKO_VERSION
+    // https://mvnrepository.com/artifact/org.jetbrains.anko/anko-appcompat-v7
+    implementation group: 'org.jetbrains.anko', name: 'anko-appcompat-v7', version: ANKO_VERSION
+    // https://mvnrepository.com/artifact/org.jetbrains.anko/anko-design
+    implementation group: 'org.jetbrains.anko', name: 'anko-design', version: ANKO_VERSION
+
+    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+    // 运行时权限申请
+    // https://mvnrepository.com/artifact/pub.devrel/easypermissions
+    implementation group: 'pub.devrel', name: 'easypermissions', version: EASYPERMISSIONS_VERSION
+
+//    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+//    // 谷歌JSON解析
+//    // https://mvnrepository.com/artifact/com.google.code.gson/gson
+//    implementation group: 'com.google.code.gson', name: 'gson', version: GSON_VERSION
+
+    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+    // JSON解析
+    // https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core
+    implementation group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: JACKSON_VERSION
+
+    // https://mvnrepository.com/artifact/org.greenrobot/eventbus
+    implementation group: 'org.greenrobot', name: 'eventbus', version: EVENTBUS_VERSION
+
+    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+    // https://mvnrepository.com/artifact/javax.persistence/persistence-api
+    implementation group: "javax.persistence", name: "persistence-api", version: PERSISTENCE_VERSION
+
+    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+    // 二维码与条形码
+    // https://mvnrepository.com/artifact/com.google.zxing/core
+    implementation group: 'com.google.zxing', name: 'core', version: ZXING_VERSION
+    // https://mvnrepository.com/artifact/com.google.zxing/android-core
+    implementation group: 'com.google.zxing', name: 'android-core', version: ZXING_VERSION
+
+    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+    // Sybotan依赖
+    implementation group: 'com.sybotan', name: 'sybotan-kotlin-base', version: SYBOTAN_KOTLIN_VERSION
+    implementation project(':sybotan-android-base')
+    implementation project(':sybotan-android-database')
+    implementation project(':sybotan-android-devices')
+    implementation project(':sybotan-android-views')
+    implementation project(':sybotan-android-graphy')
+    implementation project(':sybotan-android-works')
+}

+ 21 - 0
demo/proguard-rules.pro

@@ -0,0 +1,21 @@
+# Add project specific ProGuard rules here.
+# You can control the set of applied configuration files using the
+# proguardFiles setting in build.gradle.
+#
+# For more details, see
+#   http://developer.android.com/guide/developing/tools/proguard.html
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+#   public *;
+#}
+
+# Uncomment this to preserve the line number information for
+# debugging stack traces.
+#-keepattributes SourceFile,LineNumberTable
+
+# If you keep the line number information, uncomment this to
+# hide the original source file name.
+#-renamesourcefileattribute SourceFile

+ 63 - 0
demo/src/main/AndroidManifest.xml

@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ *********************************************************************************************************************
+  ~
+  ~               iFHS7.
+  ~              ;BBMBMBMc                  rZMBMBR              BMB
+  ~              MBEr:;PBM,               7MBMMEOBB:             BBB                       RBW
+  ~     XK:      BO     SB.     :SZ       MBM.       c;;     ir  BBM :FFr       :SSF:    ;xBMB:r   iuGXv.    i:. iF2;
+  ~     DBBM0r.  :D     S7   ;XMBMB       GMBMu.     MBM:   BMB  MBMBBBMBMS   WMBMBMBBK  MBMBMBM  BMBRBMBW  .MBMBMBMBB
+  ~      :JMRMMD  ..    ,  1MMRM1;         ;MBMBBR:   MBM  ;MB:  BMB:   MBM. RMBr   sBMH   BM0         UMB,  BMB.  KMBv
+  ~     ;.   XOW  B1; :uM: 1RE,   i           .2BMBs  rMB. MBO   MBO    JMB; MBB     MBM   BBS    7MBMBOBM:  MBW   :BMc
+  ~     OBRJ.SEE  MRDOWOR, 3DE:7OBM       .     ;BMB   RMR7BM    BMB    MBB. BMB    ,BMR  .BBZ   MMB   rMB,  BMM   rMB7
+  ~     :FBRO0D0  RKXSXPR. JOKOOMPi       BMBSSWBMB;    BMBB:    MBMB0ZMBMS  .BMBOXRBMB    MBMDE RBM2;SMBM;  MBB   xBM2
+  ~         iZGE  O0SHSPO. uGZ7.          sBMBMBDL      :BMO     OZu:BMBK,     rRBMB0;     ,EBMB  xBMBr:ER.  RDU   :OO;
+  ~     ,BZ, 1D0  RPSFHXR. xWZ .SMr                  . .BBB
+  ~      :0BMRDG  RESSSKR. 2WOMBW;                   BMBMR
+  ~         i0BM: SWKHKGO  MBDv
+  ~           .UB  OOGDM. MK,                                          Copyright (c) 2015-2019.  斯伯坦机器人
+  ~              ,  XMW  ..
+  ~                  r                                                                     All rights reserved.
+  ~
+  ~ *********************************************************************************************************************
+  -->
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+          xmlns:tools="http://schemas.android.com/tools" package="com.sybotan.android.demo">
+
+  <uses-permission android:name="android.permission.INTERNET"/>
+  <uses-permission android:name="android.permission.BLUETOOTH"/>
+  <!-- SD卡中创建与删除文件权限 -->
+  <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" tools:ignore="ProtectedPermissions"/>
+  <!-- 向SDCard写入数据权限 -->
+  <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
+  <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
+
+  <!-- 摄像头 -->
+  <uses-permission android:name="android.permission.CAMERA" />
+  <uses-feature android:name="android.hardware.camera" />
+  <uses-feature android:name="android.hardware.camera.autofocus" />
+
+  <application
+      android:name=".DemoApp"
+      android:allowBackup="true"
+      android:icon="@mipmap/ic_launcher"
+      android:label="@string/app_name"
+      android:roundIcon="@mipmap/ic_launcher_round"
+      android:supportsRtl="true"
+      android:theme="@style/AppTheme">
+    <activity android:name=".activities.MainActivity">
+      <intent-filter>
+        <action android:name="android.intent.action.MAIN"/>
+
+        <category android:name="android.intent.category.LAUNCHER"/>
+      </intent-filter>
+    </activity>
+    <activity android:name=".activities.GraphyActivity">
+    </activity>
+    <activity android:name=".activities.WebViewActivity">
+
+    </activity>
+
+  </application>
+
+</manifest>

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 6702 - 0
demo/src/main/assets/WallDatas.json


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 12944 - 0
demo/src/main/assets/cxds5.json


+ 22 - 0
demo/src/main/assets/dist/abc.html

@@ -0,0 +1,22 @@
+<html>
+<body>
+<script lang="javascript">
+console.debug("begin=================================================")
+//LPrinter.getAll("printer");
+alert(LPrinter.getAllPrinters(""))
+alert(LPrinter.openPrinterSync(""))
+//LPrinter.startJob(40, 30, 0)
+//LPrinter.drawText("Hello world!", 4, 5, 40, 30, 4)
+// LPrinter.drawText("上格云技术!", 4, 15, 40, 30, 4)
+
+//LPrinter.drawImage("file:///android_asset/ic_launcher.png", 0.0, 5.0, 20.0, 20.0)
+LPrinter.drawImage("/sdcard/ic_launcher.png", 0.0, 5.0, 20.0, 20.0)
+LPrinter.commitJob()
+console.debug("end=================================================")
+</script>
+
+<h1>abcdefg</h1>
+<a href="services://qrcode?context=abceefg&size=400">services://qrcode?context=abceefg&size=400</a>
+<img src="services://qrcode?context=abceefg&size=200">
+</body>
+</html>

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 1 - 0
demo/src/main/assets/dist/index.html


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 2 - 0
demo/src/main/assets/dist/static/css/app.aa519651e328a583ca88e8b7d02122ab.css


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 1 - 0
demo/src/main/assets/dist/static/css/app.aa519651e328a583ca88e8b7d02122ab.css.map


+ 2 - 0
demo/src/main/assets/dist/static/css/app.cca059254702f9ed953b7df749673cf4.css

@@ -0,0 +1,2 @@
+#app{font-family:Avenir,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-align:center;color:#2c3e50;margin-top:60px}h1[data-v-694cd902],h2[data-v-694cd902]{font-weight:400}ul[data-v-694cd902]{list-style-type:none;padding:0}li[data-v-694cd902]{display:inline-block;margin:0 10px}a[data-v-694cd902]{color:#42b983}
+/*# sourceMappingURL=app.cca059254702f9ed953b7df749673cf4.css.map */

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 1 - 0
demo/src/main/assets/dist/static/css/app.cca059254702f9ed953b7df749673cf4.css.map


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 2 - 0
demo/src/main/assets/dist/static/js/app.4768fdc1107768177998.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 1 - 0
demo/src/main/assets/dist/static/js/app.4768fdc1107768177998.js.map


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 2 - 0
demo/src/main/assets/dist/static/js/app.c59eccc233104d73ccb7.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 1 - 0
demo/src/main/assets/dist/static/js/app.c59eccc233104d73ccb7.js.map


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 2 - 0
demo/src/main/assets/dist/static/js/manifest.2ae2e69a05c33dfc65f8.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 1 - 0
demo/src/main/assets/dist/static/js/manifest.2ae2e69a05c33dfc65f8.js.map


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 2 - 0
demo/src/main/assets/dist/static/js/manifest.3ad1d5771e9b13dbdad2.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 1 - 0
demo/src/main/assets/dist/static/js/manifest.3ad1d5771e9b13dbdad2.js.map


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 13 - 0
demo/src/main/assets/dist/static/js/vendor.7fed9fa7b7ba482410b7.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 1 - 0
demo/src/main/assets/dist/static/js/vendor.7fed9fa7b7ba482410b7.js.map


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 13 - 0
demo/src/main/assets/dist/static/js/vendor.9d43f691bba00d2c76b8.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 1 - 0
demo/src/main/assets/dist/static/js/vendor.9d43f691bba00d2c76b8.js.map


binární
demo/src/main/assets/ic_launcher.png


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 1 - 0
demo/src/main/assets/vue/index.html


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 310 - 0
demo/src/main/assets/vue/static/css/app.365230fcdec5540c73c87126a6b39cdb.css


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 1 - 0
demo/src/main/assets/vue/static/css/app.365230fcdec5540c73c87126a6b39cdb.css.map


binární
demo/src/main/assets/vue/static/fonts/iconfont.83485c9.ttf


binární
demo/src/main/assets/vue/static/fonts/iconfont.df5f83a.eot


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 1259 - 0
demo/src/main/assets/vue/static/img/iconfont.15eea4c.svg


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 2 - 0
demo/src/main/assets/vue/static/js/app.bcfe948aec3e9d1194c5.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 1 - 0
demo/src/main/assets/vue/static/js/app.bcfe948aec3e9d1194c5.js.map


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 2 - 0
demo/src/main/assets/vue/static/js/manifest.2ae2e69a05c33dfc65f8.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 1 - 0
demo/src/main/assets/vue/static/js/manifest.2ae2e69a05c33dfc65f8.js.map


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 13 - 0
demo/src/main/assets/vue/static/js/vendor.94ad8e265ab2d614e07f.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 1 - 0
demo/src/main/assets/vue/static/js/vendor.94ad8e265ab2d614e07f.js.map


+ 45 - 0
demo/src/main/java/com/sybotan/android/demo/DemoApp.kt

@@ -0,0 +1,45 @@
+/*
+ * ********************************************************************************************************************
+ *
+ *               iFHS7.
+ *              ;BBMBMBMc                  rZMBMBR              BMB
+ *              MBEr:;PBM,               7MBMMEOBB:             BBB                       RBW
+ *     XK:      BO     SB.     :SZ       MBM.       c;;     ir  BBM :FFr       :SSF:    ;xBMB:r   iuGXv.    i:. iF2;
+ *     DBBM0r.  :D     S7   ;XMBMB       GMBMu.     MBM:   BMB  MBMBBBMBMS   WMBMBMBBK  MBMBMBM  BMBRBMBW  .MBMBMBMBB
+ *      :JMRMMD  ..    ,  1MMRM1;         ;MBMBBR:   MBM  ;MB:  BMB:   MBM. RMBr   sBMH   BM0         UMB,  BMB.  KMBv
+ *     ;.   XOW  B1; :uM: 1RE,   i           .2BMBs  rMB. MBO   MBO    JMB; MBB     MBM   BBS    7MBMBOBM:  MBW   :BMc
+ *     OBRJ.SEE  MRDOWOR, 3DE:7OBM       .     ;BMB   RMR7BM    BMB    MBB. BMB    ,BMR  .BBZ   MMB   rMB,  BMM   rMB7
+ *     :FBRO0D0  RKXSXPR. JOKOOMPi       BMBSSWBMB;    BMBB:    MBMB0ZMBMS  .BMBOXRBMB    MBMDE RBM2;SMBM;  MBB   xBM2
+ *         iZGE  O0SHSPO. uGZ7.          sBMBMBDL      :BMO     OZu:BMBK,     rRBMB0;     ,EBMB  xBMBr:ER.  RDU   :OO;
+ *     ,BZ, 1D0  RPSFHXR. xWZ .SMr                  . .BBB
+ *      :0BMRDG  RESSSKR. 2WOMBW;                   BMBMR
+ *         i0BM: SWKHKGO  MBDv
+ *           .UB  OOGDM. MK,                                          Copyright (c) 2015-2019.  斯伯坦机器人
+ *              ,  XMW  ..
+ *                  r                                                                     All rights reserved.
+ *
+ * ********************************************************************************************************************
+ */
+
+package com.sybotan.android.demo
+
+import android.annotation.SuppressLint
+import android.app.Application
+import android.util.Log
+
+class DemoApp : Application() {
+    companion object {
+        private val TAG = DemoApp::class.java.name
+    }
+
+    /**
+     * 创建应用时调用
+     */
+    @SuppressLint("MissingSuperCall")
+    override fun onCreate() {
+        super.onCreate()
+        Log.d(TAG, "DemoApp starting...")
+        return
+    } // Function onCreate()
+
+} // Class DemoApp

+ 130 - 0
demo/src/main/java/com/sybotan/android/demo/activities/GraphyActivity.kt

@@ -0,0 +1,130 @@
+/*
+ * ********************************************************************************************************************
+ *
+ *               iFHS7.
+ *              ;BBMBMBMc                  rZMBMBR              BMB
+ *              MBEr:;PBM,               7MBMMEOBB:             BBB                       RBW
+ *     XK:      BO     SB.     :SZ       MBM.       c;;     ir  BBM :FFr       :SSF:    ;xBMB:r   iuGXv.    i:. iF2;
+ *     DBBM0r.  :D     S7   ;XMBMB       GMBMu.     MBM:   BMB  MBMBBBMBMS   WMBMBMBBK  MBMBMBM  BMBRBMBW  .MBMBMBMBB
+ *      :JMRMMD  ..    ,  1MMRM1;         ;MBMBBR:   MBM  ;MB:  BMB:   MBM. RMBr   sBMH   BM0         UMB,  BMB.  KMBv
+ *     ;.   XOW  B1; :uM: 1RE,   i           .2BMBs  rMB. MBO   MBO    JMB; MBB     MBM   BBS    7MBMBOBM:  MBW   :BMc
+ *     OBRJ.SEE  MRDOWOR, 3DE:7OBM       .     ;BMB   RMR7BM    BMB    MBB. BMB    ,BMR  .BBZ   MMB   rMB,  BMM   rMB7
+ *     :FBRO0D0  RKXSXPR. JOKOOMPi       BMBSSWBMB;    BMBB:    MBMB0ZMBMS  .BMBOXRBMB    MBMDE RBM2;SMBM;  MBB   xBM2
+ *         iZGE  O0SHSPO. uGZ7.          sBMBMBDL      :BMO     OZu:BMBK,     rRBMB0;     ,EBMB  xBMBr:ER.  RDU   :OO;
+ *     ,BZ, 1D0  RPSFHXR. xWZ .SMr                  . .BBB
+ *      :0BMRDG  RESSSKR. 2WOMBW;                   BMBMR
+ *         i0BM: SWKHKGO  MBDv
+ *           .UB  OOGDM. MK,                                          Copyright (c) 2015-2019.  斯伯坦机器人
+ *              ,  XMW  ..
+ *                  r                                                                     All rights reserved.
+ *
+ * ********************************************************************************************************************
+ */
+
+package com.sybotan.android.demo.activities
+
+import android.graphics.BitmapFactory
+import android.graphics.PointF
+import android.support.v7.app.AppCompatActivity
+import android.os.Bundle
+import android.util.Log
+import android.util.SizeF
+import com.fasterxml.jackson.databind.PropertyNamingStrategy
+import com.sybotan.android.demo.R
+import com.sybotan.android.demo.R.id.graphyView
+import com.sybotan.android.demo.entitiies.Revit
+import com.sybotan.android.demo.graphy.GraphyWallItem
+import com.sybotan.android.graphy.SGraphyScene
+import com.sybotan.android.graphy.events.SGraphyViewMoveEvent
+import com.sybotan.android.graphy.items.SGraphyClockItem
+import com.sybotan.base.utils.SJsonUtil
+import kotlinx.android.synthetic.main.activity_graphy.*
+import org.greenrobot.eventbus.EventBus
+import org.greenrobot.eventbus.Subscribe
+
+class GraphyActivity : AppCompatActivity() {
+    companion object {
+        private val TAG = GraphyActivity::class.java.name
+    }
+
+    val scene = SGraphyScene()
+
+    @Subscribe
+    fun test(msg: SGraphyViewMoveEvent) {
+        Log.d(TAG, "msg=$msg")
+
+    } // test()
+    /**
+     * 创建Activity时的回调函数
+     *
+     * @param   savedInstanceState
+     */
+    override fun onCreate(savedInstanceState: Bundle?) {
+        super.onCreate(savedInstanceState)
+        setContentView(R.layout.activity_graphy)
+        // 注册eventbus
+        EventBus.getDefault().register(this)
+
+        loadWalls()
+
+        val rect1 = scene.addRectItem(10f, 10f, 400f, 300f)
+        rect1.moveTo(200f, 500f)
+        rect1.zOrder = -1f
+
+        val image = BitmapFactory.decodeResource(resources, R.drawable.ic_launcher123)
+        val image1 = scene.addImageItem(image)
+        image1.moveTo(300f,600f)
+
+
+        val image2 = scene.addImageItem(image)
+        image2.parent = rect1
+
+        val clock = SGraphyClockItem(SizeF(1000f, 1000f))
+        clock.zOrder = 10f
+        scene.addItem(clock)
+
+        graphyView.scene = scene
+
+        return
+    } // Function onCreate()
+
+    /**
+     * 加载墙数据
+     */
+    private fun loadWalls() {
+        val revit = SJsonUtil.fromJson<Revit>(applicationContext.assets.open("WallDatas.json"), PropertyNamingStrategy.UPPER_CAMEL_CASE)
+        Log.d(TAG, "name=${revit.name}")
+        Log.d(TAG, "${revit.floorDatas!![revit.floorDatas!!.size - 1].lines!!}")
+
+        Log.d(TAG, "line.size=${revit.floorDatas!![revit.floorDatas!!.size - 1].lines!!.size}")
+        //for ( line in revit.floorDatas!![revit.floorDatas!!.size - 1].lines!!) {
+        for ( line in revit.floorDatas!![0].lines!!) {
+            val pointList = ArrayList<PointF>()
+            Log.d(TAG, "point.size=${line.size}")
+            for (t in 0 until  line.size) {
+                val p1 = line[t].split(",")
+                val point = PointF(p1[0].toFloat() * 20  + 12000, -p1[1].toFloat() * 20  -20600)
+                pointList.add(point)
+            }
+            scene.addItem(GraphyWallItem(pointList))
+        }
+        println()
+//        for ( line in revit.floorDatas!![revit.floorDatas!!.size - 1].lines!!) {
+//            var p1 = line[0].split(",")
+//            var x1 = p1[0].toFloat() * 3 + 500
+//            var y1 = -p1[1].toFloat() * 3 + 1200
+//            for (t in 1 until  line.size) {
+//                var p1 = line[t].split(",")
+//                var x2 = p1[0].toFloat() * 3  + 500
+//                var y2 = -p1[1].toFloat() * 3  + 1200
+//                scene.addLineItem(x1, y1, x2, y2)
+//
+//                x1 = x2
+//                y1 = y2
+//                break
+//            }
+//        }
+        return
+    } // Function loadWalls()
+
+} // Class GraphyActivity

+ 69 - 0
demo/src/main/java/com/sybotan/android/demo/activities/MainActivity.kt

@@ -0,0 +1,69 @@
+/*
+ * ********************************************************************************************************************
+ *
+ *               iFHS7.
+ *              ;BBMBMBMc                  rZMBMBR              BMB
+ *              MBEr:;PBM,               7MBMMEOBB:             BBB                       RBW
+ *     XK:      BO     SB.     :SZ       MBM.       c;;     ir  BBM :FFr       :SSF:    ;xBMB:r   iuGXv.    i:. iF2;
+ *     DBBM0r.  :D     S7   ;XMBMB       GMBMu.     MBM:   BMB  MBMBBBMBMS   WMBMBMBBK  MBMBMBM  BMBRBMBW  .MBMBMBMBB
+ *      :JMRMMD  ..    ,  1MMRM1;         ;MBMBBR:   MBM  ;MB:  BMB:   MBM. RMBr   sBMH   BM0         UMB,  BMB.  KMBv
+ *     ;.   XOW  B1; :uM: 1RE,   i           .2BMBs  rMB. MBO   MBO    JMB; MBB     MBM   BBS    7MBMBOBM:  MBW   :BMc
+ *     OBRJ.SEE  MRDOWOR, 3DE:7OBM       .     ;BMB   RMR7BM    BMB    MBB. BMB    ,BMR  .BBZ   MMB   rMB,  BMM   rMB7
+ *     :FBRO0D0  RKXSXPR. JOKOOMPi       BMBSSWBMB;    BMBB:    MBMB0ZMBMS  .BMBOXRBMB    MBMDE RBM2;SMBM;  MBB   xBM2
+ *         iZGE  O0SHSPO. uGZ7.          sBMBMBDL      :BMO     OZu:BMBK,     rRBMB0;     ,EBMB  xBMBr:ER.  RDU   :OO;
+ *     ,BZ, 1D0  RPSFHXR. xWZ .SMr                  . .BBB
+ *      :0BMRDG  RESSSKR. 2WOMBW;                   BMBMR
+ *         i0BM: SWKHKGO  MBDv
+ *           .UB  OOGDM. MK,                                          Copyright (c) 2015-2019.  斯伯坦机器人
+ *              ,  XMW  ..
+ *                  r                                                                     All rights reserved.
+ *
+ * ********************************************************************************************************************
+ */
+
+package com.sybotan.android.demo.activities
+
+import android.Manifest
+import android.content.Intent
+import android.os.Bundle
+import com.sybotan.android.base.activities.SBaseActivity
+import com.sybotan.android.base.extensions.immersive
+import com.sybotan.android.demo.R
+import com.sybotan.android.works.activities.SAboutActivity
+import com.sybotan.android.works.activities.SQrCodeActivity
+import kotlinx.android.synthetic.main.activity_main.*
+import org.jetbrains.anko.startActivity
+
+class MainActivity : SBaseActivity() {
+
+    companion object {
+        private val TAG = MainActivity::class.java.name
+        private const val permissionRequestCode = 123
+    }
+
+    /**
+     * 创建Activity时的回调函数
+     *
+     * @param   savedInstanceState
+     */
+    override fun onCreate(savedInstanceState: Bundle?) {
+        super.onCreate(savedInstanceState)
+        setContentView(R.layout.activity_main)
+
+        /** 沉浸式APP设置 */
+        //immersive()
+
+        /** 申请权限 */
+        requestPermission(arrayOf(Manifest.permission.READ_EXTERNAL_STORAGE,
+                Manifest.permission.CAMERA,
+                Manifest.permission.WRITE_EXTERNAL_STORAGE,
+                Manifest.permission.INTERNET))
+
+        qrcode.setOnClickListener {
+//            startActivity<SQrCodeActivity>()
+            startActivity<SAboutActivity>()
+        }
+        return
+    } // Function onCreate()
+
+} // Class MainActivity

+ 78 - 0
demo/src/main/java/com/sybotan/android/demo/activities/WebViewActivity.kt

@@ -0,0 +1,78 @@
+/*
+ * ********************************************************************************************************************
+ *
+ *               iFHS7.
+ *              ;BBMBMBMc                  rZMBMBR              BMB
+ *              MBEr:;PBM,               7MBMMEOBB:             BBB                       RBW
+ *     XK:      BO     SB.     :SZ       MBM.       c;;     ir  BBM :FFr       :SSF:    ;xBMB:r   iuGXv.    i:. iF2;
+ *     DBBM0r.  :D     S7   ;XMBMB       GMBMu.     MBM:   BMB  MBMBBBMBMS   WMBMBMBBK  MBMBMBM  BMBRBMBW  .MBMBMBMBB
+ *      :JMRMMD  ..    ,  1MMRM1;         ;MBMBBR:   MBM  ;MB:  BMB:   MBM. RMBr   sBMH   BM0         UMB,  BMB.  KMBv
+ *     ;.   XOW  B1; :uM: 1RE,   i           .2BMBs  rMB. MBO   MBO    JMB; MBB     MBM   BBS    7MBMBOBM:  MBW   :BMc
+ *     OBRJ.SEE  MRDOWOR, 3DE:7OBM       .     ;BMB   RMR7BM    BMB    MBB. BMB    ,BMR  .BBZ   MMB   rMB,  BMM   rMB7
+ *     :FBRO0D0  RKXSXPR. JOKOOMPi       BMBSSWBMB;    BMBB:    MBMB0ZMBMS  .BMBOXRBMB    MBMDE RBM2;SMBM;  MBB   xBM2
+ *         iZGE  O0SHSPO. uGZ7.          sBMBMBDL      :BMO     OZu:BMBK,     rRBMB0;     ,EBMB  xBMBr:ER.  RDU   :OO;
+ *     ,BZ, 1D0  RPSFHXR. xWZ .SMr                  . .BBB
+ *      :0BMRDG  RESSSKR. 2WOMBW;                   BMBMR
+ *         i0BM: SWKHKGO  MBDv
+ *           .UB  OOGDM. MK,                                          Copyright (c) 2015-2019.  斯伯坦机器人
+ *              ,  XMW  ..
+ *                  r                                                                     All rights reserved.
+ *
+ * ********************************************************************************************************************
+ */
+
+package com.sybotan.android.demo.activities
+
+import android.support.v7.app.AppCompatActivity
+import android.os.Bundle
+import com.sybotan.android.demo.R
+import com.sybotan.android.devices.printer.SLPrinter
+//import com.sybotan.android.devices.printer.SLPrinter
+import kotlinx.android.synthetic.main.activity_web_view.*
+
+/**
+ * WebView扩展测试Activity
+ *
+ * @author  庞利祥(sybotan@126.com)
+ */
+class WebViewActivity : AppCompatActivity() {
+
+    /**
+     * 创建Activity时的回调函数
+     *
+     * @param   savedInstanceState
+     */
+    override fun onCreate(savedInstanceState: Bundle?) {
+        super.onCreate(savedInstanceState)
+        setContentView(R.layout.activity_web_view)
+
+        //uiWebView.loadUrl("http://www.baidu.com")
+        uiWebView.loadUrl("http://172.16.0.241/#/")
+        //uiWebView.loadUrl("assets:///dist/index.html#/")
+
+        //uiWebView.addJavascriptInterface(SLPrinter(), "LPrinter")
+        //uiWebView.loadUrl("http://android/index.html")
+
+        //uiWebView.loadUrl("services://qrcode?context=${Uri.encode("http://www.baidu.com/abc?dd=123&abc=123")}&size=400")
+
+//        alert("Testing alerts") {
+//            positiveButton(R.string.btn_ok) { toast("Yess!!!") }
+//            negativeButton(R.string.btn_cancel) { }
+//            // 屏蔽返回按键
+//            onKeyPressed { _, _, _ ->
+//                true
+//            }
+//            customView {
+//                verticalLayout {
+//                    editText("I'm a text") {
+//                        hint = "Name"
+//                    }
+//                    padding = dip(20)
+//                }
+//            }
+//        }.show()
+
+        return
+    } // Function onCreate()
+
+} // Class WebViewActivity

+ 29 - 0
demo/src/main/java/com/sybotan/android/demo/entitiies/FloorDatas.kt

@@ -0,0 +1,29 @@
+/*
+ * ********************************************************************************************************************
+ *
+ *               iFHS7.
+ *              ;BBMBMBMc                  rZMBMBR              BMB
+ *              MBEr:;PBM,               7MBMMEOBB:             BBB                       RBW
+ *     XK:      BO     SB.     :SZ       MBM.       c;;     ir  BBM :FFr       :SSF:    ;xBMB:r   iuGXv.    i:. iF2;
+ *     DBBM0r.  :D     S7   ;XMBMB       GMBMu.     MBM:   BMB  MBMBBBMBMS   WMBMBMBBK  MBMBMBM  BMBRBMBW  .MBMBMBMBB
+ *      :JMRMMD  ..    ,  1MMRM1;         ;MBMBBR:   MBM  ;MB:  BMB:   MBM. RMBr   sBMH   BM0         UMB,  BMB.  KMBv
+ *     ;.   XOW  B1; :uM: 1RE,   i           .2BMBs  rMB. MBO   MBO    JMB; MBB     MBM   BBS    7MBMBOBM:  MBW   :BMc
+ *     OBRJ.SEE  MRDOWOR, 3DE:7OBM       .     ;BMB   RMR7BM    BMB    MBB. BMB    ,BMR  .BBZ   MMB   rMB,  BMM   rMB7
+ *     :FBRO0D0  RKXSXPR. JOKOOMPi       BMBSSWBMB;    BMBB:    MBMB0ZMBMS  .BMBOXRBMB    MBMDE RBM2;SMBM;  MBB   xBM2
+ *         iZGE  O0SHSPO. uGZ7.          sBMBMBDL      :BMO     OZu:BMBK,     rRBMB0;     ,EBMB  xBMBr:ER.  RDU   :OO;
+ *     ,BZ, 1D0  RPSFHXR. xWZ .SMr                  . .BBB
+ *      :0BMRDG  RESSSKR. 2WOMBW;                   BMBMR
+ *         i0BM: SWKHKGO  MBDv
+ *           .UB  OOGDM. MK,                                          Copyright (c) 2015-2019.  斯伯坦机器人
+ *              ,  XMW  ..
+ *                  r                                                                     All rights reserved.
+ *
+ * ********************************************************************************************************************
+ */
+
+package com.sybotan.android.demo.entitiies
+
+class FloorDatas {
+    var lines : List<List<String>>? = null
+    //var endPoints: List<SgElement>? = null
+} // Class FloorDatas

+ 30 - 0
demo/src/main/java/com/sybotan/android/demo/entitiies/Revit.kt

@@ -0,0 +1,30 @@
+/*
+ * ********************************************************************************************************************
+ *
+ *               iFHS7.
+ *              ;BBMBMBMc                  rZMBMBR              BMB
+ *              MBEr:;PBM,               7MBMMEOBB:             BBB                       RBW
+ *     XK:      BO     SB.     :SZ       MBM.       c;;     ir  BBM :FFr       :SSF:    ;xBMB:r   iuGXv.    i:. iF2;
+ *     DBBM0r.  :D     S7   ;XMBMB       GMBMu.     MBM:   BMB  MBMBBBMBMS   WMBMBMBBK  MBMBMBM  BMBRBMBW  .MBMBMBMBB
+ *      :JMRMMD  ..    ,  1MMRM1;         ;MBMBBR:   MBM  ;MB:  BMB:   MBM. RMBr   sBMH   BM0         UMB,  BMB.  KMBv
+ *     ;.   XOW  B1; :uM: 1RE,   i           .2BMBs  rMB. MBO   MBO    JMB; MBB     MBM   BBS    7MBMBOBM:  MBW   :BMc
+ *     OBRJ.SEE  MRDOWOR, 3DE:7OBM       .     ;BMB   RMR7BM    BMB    MBB. BMB    ,BMR  .BBZ   MMB   rMB,  BMM   rMB7
+ *     :FBRO0D0  RKXSXPR. JOKOOMPi       BMBSSWBMB;    BMBB:    MBMB0ZMBMS  .BMBOXRBMB    MBMDE RBM2;SMBM;  MBB   xBM2
+ *         iZGE  O0SHSPO. uGZ7.          sBMBMBDL      :BMO     OZu:BMBK,     rRBMB0;     ,EBMB  xBMBr:ER.  RDU   :OO;
+ *     ,BZ, 1D0  RPSFHXR. xWZ .SMr                  . .BBB
+ *      :0BMRDG  RESSSKR. 2WOMBW;                   BMBMR
+ *         i0BM: SWKHKGO  MBDv
+ *           .UB  OOGDM. MK,                                          Copyright (c) 2015-2019.  斯伯坦机器人
+ *              ,  XMW  ..
+ *                  r                                                                     All rights reserved.
+ *
+ * ********************************************************************************************************************
+ */
+
+package com.sybotan.android.demo.entitiies
+
+class Revit {
+    var name = ""
+    var id: String? = null
+    var floorDatas: List<FloorDatas>? = null
+} // Class Revit

+ 26 - 0
demo/src/main/java/com/sybotan/android/demo/entitiies/SgElement.kt

@@ -0,0 +1,26 @@
+/*
+ * ********************************************************************************************************************
+ *
+ *               iFHS7.
+ *              ;BBMBMBMc                  rZMBMBR              BMB
+ *              MBEr:;PBM,               7MBMMEOBB:             BBB                       RBW
+ *     XK:      BO     SB.     :SZ       MBM.       c;;     ir  BBM :FFr       :SSF:    ;xBMB:r   iuGXv.    i:. iF2;
+ *     DBBM0r.  :D     S7   ;XMBMB       GMBMu.     MBM:   BMB  MBMBBBMBMS   WMBMBMBBK  MBMBMBM  BMBRBMBW  .MBMBMBMBB
+ *      :JMRMMD  ..    ,  1MMRM1;         ;MBMBBR:   MBM  ;MB:  BMB:   MBM. RMBr   sBMH   BM0         UMB,  BMB.  KMBv
+ *     ;.   XOW  B1; :uM: 1RE,   i           .2BMBs  rMB. MBO   MBO    JMB; MBB     MBM   BBS    7MBMBOBM:  MBW   :BMc
+ *     OBRJ.SEE  MRDOWOR, 3DE:7OBM       .     ;BMB   RMR7BM    BMB    MBB. BMB    ,BMR  .BBZ   MMB   rMB,  BMM   rMB7
+ *     :FBRO0D0  RKXSXPR. JOKOOMPi       BMBSSWBMB;    BMBB:    MBMB0ZMBMS  .BMBOXRBMB    MBMDE RBM2;SMBM;  MBB   xBM2
+ *         iZGE  O0SHSPO. uGZ7.          sBMBMBDL      :BMO     OZu:BMBK,     rRBMB0;     ,EBMB  xBMBr:ER.  RDU   :OO;
+ *     ,BZ, 1D0  RPSFHXR. xWZ .SMr                  . .BBB
+ *      :0BMRDG  RESSSKR. 2WOMBW;                   BMBMR
+ *         i0BM: SWKHKGO  MBDv
+ *           .UB  OOGDM. MK,                                          Copyright (c) 2015-2019.  斯伯坦机器人
+ *              ,  XMW  ..
+ *                  r                                                                     All rights reserved.
+ *
+ * ********************************************************************************************************************
+ */
+
+package com.sybotan.android.demo.entitiies
+
+class SgElement

+ 110 - 0
demo/src/main/java/com/sybotan/android/demo/graphy/GraphyWallItem.kt

@@ -0,0 +1,110 @@
+/*
+ * ********************************************************************************************************************
+ *
+ *               iFHS7.
+ *              ;BBMBMBMc                  rZMBMBR              BMB
+ *              MBEr:;PBM,               7MBMMEOBB:             BBB                       RBW
+ *     XK:      BO     SB.     :SZ       MBM.       c;;     ir  BBM :FFr       :SSF:    ;xBMB:r   iuGXv.    i:. iF2;
+ *     DBBM0r.  :D     S7   ;XMBMB       GMBMu.     MBM:   BMB  MBMBBBMBMS   WMBMBMBBK  MBMBMBM  BMBRBMBW  .MBMBMBMBB
+ *      :JMRMMD  ..    ,  1MMRM1;         ;MBMBBR:   MBM  ;MB:  BMB:   MBM. RMBr   sBMH   BM0         UMB,  BMB.  KMBv
+ *     ;.   XOW  B1; :uM: 1RE,   i           .2BMBs  rMB. MBO   MBO    JMB; MBB     MBM   BBS    7MBMBOBM:  MBW   :BMc
+ *     OBRJ.SEE  MRDOWOR, 3DE:7OBM       .     ;BMB   RMR7BM    BMB    MBB. BMB    ,BMR  .BBZ   MMB   rMB,  BMM   rMB7
+ *     :FBRO0D0  RKXSXPR. JOKOOMPi       BMBSSWBMB;    BMBB:    MBMB0ZMBMS  .BMBOXRBMB    MBMDE RBM2;SMBM;  MBB   xBM2
+ *         iZGE  O0SHSPO. uGZ7.          sBMBMBDL      :BMO     OZu:BMBK,     rRBMB0;     ,EBMB  xBMBr:ER.  RDU   :OO;
+ *     ,BZ, 1D0  RPSFHXR. xWZ .SMr                  . .BBB
+ *      :0BMRDG  RESSSKR. 2WOMBW;                   BMBMR
+ *         i0BM: SWKHKGO  MBDv
+ *           .UB  OOGDM. MK,                                          Copyright (c) 2015-2019.  斯伯坦机器人
+ *              ,  XMW  ..
+ *                  r                                                                     All rights reserved.
+ *
+ * ********************************************************************************************************************
+ */
+
+package com.sybotan.android.demo.graphy
+
+import android.graphics.*
+import android.util.Log
+import com.sybotan.android.graphy.SGraphyItem
+
+/**
+ * 墙图元
+ *
+ * @author  庞利祥(sybotan@126.com)
+ */
+class GraphyWallItem(pointList: List<PointF>, parent: SGraphyItem? = null) : SGraphyItem(parent) {
+    companion object {
+        private val TAG = GraphyWallItem::class.java.name
+    } // companion object
+
+    // 画笔
+    private var pen = Paint()
+    private var pointList: List<PointF> = ArrayList(0)
+        set(value) {
+            field = value
+            if (field.size < 2) {
+                bRect = RectF()
+                return
+            }
+            bRect = RectF(field[0].x, field[0].y, field[0].x, field[0].y)
+            for (i in 1 until field.size) {
+                val p = field[i]
+                if (bRect.left > p.x) {
+                    bRect.left = p.x
+                }
+                if (bRect.right < p.x) {
+                    bRect.right = p.x
+                }
+                if (bRect.top > p.y) {
+                    bRect.top = p.y
+                }
+                if (bRect.bottom < p.y) {
+                    bRect.bottom = p.y
+                }
+            }
+            Log.d(TAG, "bRect=$bRect")
+        }
+
+    private var bRect = RectF()
+
+    /**
+     * 默认构造函数
+     */
+    init {
+        pen.color = Color.RED
+        pen.strokeWidth = 5f
+
+
+        this.pointList = pointList
+    } // init
+
+
+    /**
+     * Item对象边界区域
+     */
+    override fun boundingRect(): RectF {
+        return RectF(bRect.left - 5, bRect.top - 5,
+                bRect.right + 5, bRect.bottom + 5)
+    } // Function boundingRect()
+
+    /**
+     * @param   canvas      画布对象
+     * @param   rect        更新区域
+     */
+    override fun onDraw(canvas: Canvas, rect: RectF) {
+        if (pointList.size < 2) {       // 如果少于2个点,则退出
+            return
+        }
+
+        for (i in 1 until pointList.size) {
+            val p1 = pointList[i - 1]
+            val p2 = pointList[i]
+            canvas.drawLine(p1.x, p1.y, p2.x, p2.y, pen)
+        }
+
+        val p1 = Path()
+        val p2 = Path()
+        
+        return
+    } // Function paint()
+} // Class GraphyWallItem

+ 34 - 0
demo/src/main/res/animator/sybotan_anim.xml

@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ *********************************************************************************************************************
+  ~
+  ~               iFHS7.
+  ~              ;BBMBMBMc                  rZMBMBR              BMB
+  ~              MBEr:;PBM,               7MBMMEOBB:             BBB                       RBW
+  ~     XK:      BO     SB.     :SZ       MBM.       c;;     ir  BBM :FFr       :SSF:    ;xBMB:r   iuGXv.    i:. iF2;
+  ~     DBBM0r.  :D     S7   ;XMBMB       GMBMu.     MBM:   BMB  MBMBBBMBMS   WMBMBMBBK  MBMBMBM  BMBRBMBW  .MBMBMBMBB
+  ~      :JMRMMD  ..    ,  1MMRM1;         ;MBMBBR:   MBM  ;MB:  BMB:   MBM. RMBr   sBMH   BM0         UMB,  BMB.  KMBv
+  ~     ;.   XOW  B1; :uM: 1RE,   i           .2BMBs  rMB. MBO   MBO    JMB; MBB     MBM   BBS    7MBMBOBM:  MBW   :BMc
+  ~     OBRJ.SEE  MRDOWOR, 3DE:7OBM       .     ;BMB   RMR7BM    BMB    MBB. BMB    ,BMR  .BBZ   MMB   rMB,  BMM   rMB7
+  ~     :FBRO0D0  RKXSXPR. JOKOOMPi       BMBSSWBMB;    BMBB:    MBMB0ZMBMS  .BMBOXRBMB    MBMDE RBM2;SMBM;  MBB   xBM2
+  ~         iZGE  O0SHSPO. uGZ7.          sBMBMBDL      :BMO     OZu:BMBK,     rRBMB0;     ,EBMB  xBMBr:ER.  RDU   :OO;
+  ~     ,BZ, 1D0  RPSFHXR. xWZ .SMr                  . .BBB
+  ~      :0BMRDG  RESSSKR. 2WOMBW;                   BMBMR
+  ~         i0BM: SWKHKGO  MBDv
+  ~           .UB  OOGDM. MK,                                          Copyright (c) 2015-2019.  斯伯坦机器人
+  ~              ,  XMW  ..
+  ~                  r                                                                     All rights reserved.
+  ~
+  ~ *********************************************************************************************************************
+  -->
+
+<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
+                android:duration="5000"
+                android:interpolator="@android:anim/linear_interpolator"
+                android:propertyName="trimPathOffset"
+                android:repeatMode="restart"
+                android:repeatCount="infinite"
+                android:valueFrom="0"
+                android:valueTo="1"
+                android:valueType="floatType">
+</objectAnimator>

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 57 - 0
demo/src/main/res/drawable-v24/ic_launcher_foreground.xml


binární
demo/src/main/res/drawable/ic_launcher123.png


+ 97 - 0
demo/src/main/res/drawable/ic_launcher_background.xml

@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ *********************************************************************************************************************
+  ~
+  ~               iFHS7.
+  ~              ;BBMBMBMc                  rZMBMBR              BMB
+  ~              MBEr:;PBM,               7MBMMEOBB:             BBB                       RBW
+  ~     XK:      BO     SB.     :SZ       MBM.       c;;     ir  BBM :FFr       :SSF:    ;xBMB:r   iuGXv.    i:. iF2;
+  ~     DBBM0r.  :D     S7   ;XMBMB       GMBMu.     MBM:   BMB  MBMBBBMBMS   WMBMBMBBK  MBMBMBM  BMBRBMBW  .MBMBMBMBB
+  ~      :JMRMMD  ..    ,  1MMRM1;         ;MBMBBR:   MBM  ;MB:  BMB:   MBM. RMBr   sBMH   BM0         UMB,  BMB.  KMBv
+  ~     ;.   XOW  B1; :uM: 1RE,   i           .2BMBs  rMB. MBO   MBO    JMB; MBB     MBM   BBS    7MBMBOBM:  MBW   :BMc
+  ~     OBRJ.SEE  MRDOWOR, 3DE:7OBM       .     ;BMB   RMR7BM    BMB    MBB. BMB    ,BMR  .BBZ   MMB   rMB,  BMM   rMB7
+  ~     :FBRO0D0  RKXSXPR. JOKOOMPi       BMBSSWBMB;    BMBB:    MBMB0ZMBMS  .BMBOXRBMB    MBMDE RBM2;SMBM;  MBB   xBM2
+  ~         iZGE  O0SHSPO. uGZ7.          sBMBMBDL      :BMO     OZu:BMBK,     rRBMB0;     ,EBMB  xBMBr:ER.  RDU   :OO;
+  ~     ,BZ, 1D0  RPSFHXR. xWZ .SMr                  . .BBB
+  ~      :0BMRDG  RESSSKR. 2WOMBW;                   BMBMR
+  ~         i0BM: SWKHKGO  MBDv
+  ~           .UB  OOGDM. MK,                                          Copyright (c) 2015-2019.  斯伯坦机器人
+  ~              ,  XMW  ..
+  ~                  r                                                                     All rights reserved.
+  ~
+  ~ *********************************************************************************************************************
+  -->
+
+<vector
+        xmlns:android="http://schemas.android.com/apk/res/android"
+        android:height="108dp"
+        android:width="108dp"
+        android:viewportHeight="108"
+        android:viewportWidth="108">
+    <path android:fillColor="#26A69A"
+          android:pathData="M0,0h108v108h-108z"/>
+    <path android:fillColor="#00000000" android:pathData="M9,0L9,108"
+          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+    <path android:fillColor="#00000000" android:pathData="M19,0L19,108"
+          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+    <path android:fillColor="#00000000" android:pathData="M29,0L29,108"
+          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+    <path android:fillColor="#00000000" android:pathData="M39,0L39,108"
+          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+    <path android:fillColor="#00000000" android:pathData="M49,0L49,108"
+          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+    <path android:fillColor="#00000000" android:pathData="M59,0L59,108"
+          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+    <path android:fillColor="#00000000" android:pathData="M69,0L69,108"
+          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+    <path android:fillColor="#00000000" android:pathData="M79,0L79,108"
+          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+    <path android:fillColor="#00000000" android:pathData="M89,0L89,108"
+          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+    <path android:fillColor="#00000000" android:pathData="M99,0L99,108"
+          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+    <path android:fillColor="#00000000" android:pathData="M0,9L108,9"
+          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+    <path android:fillColor="#00000000" android:pathData="M0,19L108,19"
+          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+    <path android:fillColor="#00000000" android:pathData="M0,29L108,29"
+          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+    <path android:fillColor="#00000000" android:pathData="M0,39L108,39"
+          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+    <path android:fillColor="#00000000" android:pathData="M0,49L108,49"
+          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+    <path android:fillColor="#00000000" android:pathData="M0,59L108,59"
+          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+    <path android:fillColor="#00000000" android:pathData="M0,69L108,69"
+          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+    <path android:fillColor="#00000000" android:pathData="M0,79L108,79"
+          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+    <path android:fillColor="#00000000" android:pathData="M0,89L108,89"
+          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+    <path android:fillColor="#00000000" android:pathData="M0,99L108,99"
+          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+    <path android:fillColor="#00000000" android:pathData="M19,29L89,29"
+          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+    <path android:fillColor="#00000000" android:pathData="M19,39L89,39"
+          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+    <path android:fillColor="#00000000" android:pathData="M19,49L89,49"
+          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+    <path android:fillColor="#00000000" android:pathData="M19,59L89,59"
+          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+    <path android:fillColor="#00000000" android:pathData="M19,69L89,69"
+          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+    <path android:fillColor="#00000000" android:pathData="M19,79L89,79"
+          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+    <path android:fillColor="#00000000" android:pathData="M29,19L29,89"
+          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+    <path android:fillColor="#00000000" android:pathData="M39,19L39,89"
+          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+    <path android:fillColor="#00000000" android:pathData="M49,19L49,89"
+          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+    <path android:fillColor="#00000000" android:pathData="M59,19L59,89"
+          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+    <path android:fillColor="#00000000" android:pathData="M69,19L69,89"
+          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+    <path android:fillColor="#00000000" android:pathData="M79,19L79,89"
+          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+</vector>

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 32 - 0
demo/src/main/res/drawable/menu_my.xml


+ 27 - 0
demo/src/main/res/drawable/menu_my_selected.xml

@@ -0,0 +1,27 @@
+<!--
+  ~ *********************************************************************************************************************
+  ~
+  ~               iFHS7.
+  ~              ;BBMBMBMc                  rZMBMBR              BMB
+  ~              MBEr:;PBM,               7MBMMEOBB:             BBB                       RBW
+  ~     XK:      BO     SB.     :SZ       MBM.       c;;     ir  BBM :FFr       :SSF:    ;xBMB:r   iuGXv.    i:. iF2;
+  ~     DBBM0r.  :D     S7   ;XMBMB       GMBMu.     MBM:   BMB  MBMBBBMBMS   WMBMBMBBK  MBMBMBM  BMBRBMBW  .MBMBMBMBB
+  ~      :JMRMMD  ..    ,  1MMRM1;         ;MBMBBR:   MBM  ;MB:  BMB:   MBM. RMBr   sBMH   BM0         UMB,  BMB.  KMBv
+  ~     ;.   XOW  B1; :uM: 1RE,   i           .2BMBs  rMB. MBO   MBO    JMB; MBB     MBM   BBS    7MBMBOBM:  MBW   :BMc
+  ~     OBRJ.SEE  MRDOWOR, 3DE:7OBM       .     ;BMB   RMR7BM    BMB    MBB. BMB    ,BMR  .BBZ   MMB   rMB,  BMM   rMB7
+  ~     :FBRO0D0  RKXSXPR. JOKOOMPi       BMBSSWBMB;    BMBB:    MBMB0ZMBMS  .BMBOXRBMB    MBMDE RBM2;SMBM;  MBB   xBM2
+  ~         iZGE  O0SHSPO. uGZ7.          sBMBMBDL      :BMO     OZu:BMBK,     rRBMB0;     ,EBMB  xBMBr:ER.  RDU   :OO;
+  ~     ,BZ, 1D0  RPSFHXR. xWZ .SMr                  . .BBB
+  ~      :0BMRDG  RESSSKR. 2WOMBW;                   BMBMR
+  ~         i0BM: SWKHKGO  MBDv
+  ~           .UB  OOGDM. MK,                                          Copyright (c) 2015-2019.  斯伯坦机器人
+  ~              ,  XMW  ..
+  ~                  r                                                                     All rights reserved.
+  ~
+  ~ *********************************************************************************************************************
+  -->
+
+<vector android:height="24dp" android:viewportHeight="1024.0"
+    android:viewportWidth="1024.0" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
+    <path android:fillColor="#666666" android:pathData="M649.6,633.6c86.4,-48 147.2,-144 147.2,-249.6 0,-160 -128,-288 -288,-288s-288,128 -288,288c0,108.8 57.6,201.6 147.2,249.6 -121.6,48 -214.4,153.6 -240,288 -3.2,9.6 0,19.2 6.4,25.6 3.2,9.6 12.8,12.8 22.4,12.8h704c9.6,0 19.2,-3.2 25.6,-12.8 6.4,-6.4 9.6,-16 6.4,-25.6 -25.6,-134.4 -121.6,-240 -243.2,-288z"/>
+</vector>

+ 30 - 0
demo/src/main/res/drawable/menu_my_selector.xml

@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ *********************************************************************************************************************
+  ~
+  ~               iFHS7.
+  ~              ;BBMBMBMc                  rZMBMBR              BMB
+  ~              MBEr:;PBM,               7MBMMEOBB:             BBB                       RBW
+  ~     XK:      BO     SB.     :SZ       MBM.       c;;     ir  BBM :FFr       :SSF:    ;xBMB:r   iuGXv.    i:. iF2;
+  ~     DBBM0r.  :D     S7   ;XMBMB       GMBMu.     MBM:   BMB  MBMBBBMBMS   WMBMBMBBK  MBMBMBM  BMBRBMBW  .MBMBMBMBB
+  ~      :JMRMMD  ..    ,  1MMRM1;         ;MBMBBR:   MBM  ;MB:  BMB:   MBM. RMBr   sBMH   BM0         UMB,  BMB.  KMBv
+  ~     ;.   XOW  B1; :uM: 1RE,   i           .2BMBs  rMB. MBO   MBO    JMB; MBB     MBM   BBS    7MBMBOBM:  MBW   :BMc
+  ~     OBRJ.SEE  MRDOWOR, 3DE:7OBM       .     ;BMB   RMR7BM    BMB    MBB. BMB    ,BMR  .BBZ   MMB   rMB,  BMM   rMB7
+  ~     :FBRO0D0  RKXSXPR. JOKOOMPi       BMBSSWBMB;    BMBB:    MBMB0ZMBMS  .BMBOXRBMB    MBMDE RBM2;SMBM;  MBB   xBM2
+  ~         iZGE  O0SHSPO. uGZ7.          sBMBMBDL      :BMO     OZu:BMBK,     rRBMB0;     ,EBMB  xBMBr:ER.  RDU   :OO;
+  ~     ,BZ, 1D0  RPSFHXR. xWZ .SMr                  . .BBB
+  ~      :0BMRDG  RESSSKR. 2WOMBW;                   BMBMR
+  ~         i0BM: SWKHKGO  MBDv
+  ~           .UB  OOGDM. MK,                                          Copyright (c) 2015-2019.  斯伯坦机器人
+  ~              ,  XMW  ..
+  ~                  r                                                                     All rights reserved.
+  ~
+  ~ *********************************************************************************************************************
+  -->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:drawable="@drawable/menu_my_selected" android:state_pressed="true"/>
+    <item android:drawable="@drawable/sybotan_logo_anim" android:state_selected="true"/>
+    <item android:drawable="@drawable/sybotan_logo_anim" android:state_checked="true"/>
+    <item android:drawable="@drawable/menu_my"/>
+</selector>

+ 53 - 0
demo/src/main/res/drawable/sybotan_logo.xml

@@ -0,0 +1,53 @@
+<!--
+  ~ *********************************************************************************************************************
+  ~
+  ~               iFHS7.
+  ~              ;BBMBMBMc                  rZMBMBR              BMB
+  ~              MBEr:;PBM,               7MBMMEOBB:             BBB                       RBW
+  ~     XK:      BO     SB.     :SZ       MBM.       c;;     ir  BBM :FFr       :SSF:    ;xBMB:r   iuGXv.    i:. iF2;
+  ~     DBBM0r.  :D     S7   ;XMBMB       GMBMu.     MBM:   BMB  MBMBBBMBMS   WMBMBMBBK  MBMBMBM  BMBRBMBW  .MBMBMBMBB
+  ~      :JMRMMD  ..    ,  1MMRM1;         ;MBMBBR:   MBM  ;MB:  BMB:   MBM. RMBr   sBMH   BM0         UMB,  BMB.  KMBv
+  ~     ;.   XOW  B1; :uM: 1RE,   i           .2BMBs  rMB. MBO   MBO    JMB; MBB     MBM   BBS    7MBMBOBM:  MBW   :BMc
+  ~     OBRJ.SEE  MRDOWOR, 3DE:7OBM       .     ;BMB   RMR7BM    BMB    MBB. BMB    ,BMR  .BBZ   MMB   rMB,  BMM   rMB7
+  ~     :FBRO0D0  RKXSXPR. JOKOOMPi       BMBSSWBMB;    BMBB:    MBMB0ZMBMS  .BMBOXRBMB    MBMDE RBM2;SMBM;  MBB   xBM2
+  ~         iZGE  O0SHSPO. uGZ7.          sBMBMBDL      :BMO     OZu:BMBK,     rRBMB0;     ,EBMB  xBMBr:ER.  RDU   :OO;
+  ~     ,BZ, 1D0  RPSFHXR. xWZ .SMr                  . .BBB
+  ~      :0BMRDG  RESSSKR. 2WOMBW;                   BMBMR
+  ~         i0BM: SWKHKGO  MBDv
+  ~           .UB  OOGDM. MK,                                          Copyright (c) 2015-2019.  斯伯坦机器人
+  ~              ,  XMW  ..
+  ~                  r                                                                     All rights reserved.
+  ~
+  ~ *********************************************************************************************************************
+  -->
+
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="256dp"
+        android:height="256dp"
+        android:viewportWidth="256.0"
+        android:viewportHeight="256.0">
+    <path
+            android:name="header"
+            android:strokeWidth="3"
+            android:trimPathEnd="0.96"
+            android:pathData="M128,3c-24.7,0 -44.6,20 -44.6,44.6c0,22.7 17,41.5 39,44.3c-12.1,-2.6 -21.2,-13.4 -21.2,-26.4c0,-14.9 12,-27 26.9,-27c14.9,0 26.9,12.1 26.9,27c0,13 -9.1,23.8 -21.2,26.4c22,-2.8 39,-21.5 39,-44.3C172.6,23 152.7,3 128,3z"
+            android:strokeColor="#E60012"/>
+    <path
+            android:name="body"
+            android:strokeWidth="3"
+            android:trimPathEnd="0.95"
+            android:pathData="M163.7,92.3l-35.7,17.8l-35.7,-17.8l0,98.2l8.9,26.8l26.8,35.7l26.8,-35.7l8.9,-26.8z"
+            android:strokeColor="#E60012"/>
+    <path
+            android:name="left"
+            android:strokeWidth="3"
+            android:trimPathEnd="0.97"
+            android:pathData="M74.4,190.5l0,-17.9l0,-35.7l0,-17.8l0,-17.6l0,-18.1l-71.4,-35.7l0,35.7l44.6,22.3l0,17.8l-44.6,-22.3l0,35.7l44.6,22.3l0,17.9l-44.6,-22.3l8.9,26.8l80.4,53.5z"
+            android:strokeColor="#E60012"/>
+    <path
+            android:name="right"
+            android:strokeWidth="3"
+            android:trimPathEnd="0.97"
+            android:pathData="M253,83.4l0,-35.7l-71.4,35.7l0,17.8l0,17.9l0,17.8l0,35.7l0,17.7l1,0l-1.2,0.5l-17.8,44.7l80.5,-53.9l8.9,-26.8l-43.5,21.9l0,-18l43.5,-21.8l0,-35.7l-43.5,21.8l0,-17.9z"
+            android:strokeColor="#E60012"/>
+</vector>

+ 39 - 0
demo/src/main/res/drawable/sybotan_logo_anim.xml

@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ *********************************************************************************************************************
+  ~
+  ~               iFHS7.
+  ~              ;BBMBMBMc                  rZMBMBR              BMB
+  ~              MBEr:;PBM,               7MBMMEOBB:             BBB                       RBW
+  ~     XK:      BO     SB.     :SZ       MBM.       c;;     ir  BBM :FFr       :SSF:    ;xBMB:r   iuGXv.    i:. iF2;
+  ~     DBBM0r.  :D     S7   ;XMBMB       GMBMu.     MBM:   BMB  MBMBBBMBMS   WMBMBMBBK  MBMBMBM  BMBRBMBW  .MBMBMBMBB
+  ~      :JMRMMD  ..    ,  1MMRM1;         ;MBMBBR:   MBM  ;MB:  BMB:   MBM. RMBr   sBMH   BM0         UMB,  BMB.  KMBv
+  ~     ;.   XOW  B1; :uM: 1RE,   i           .2BMBs  rMB. MBO   MBO    JMB; MBB     MBM   BBS    7MBMBOBM:  MBW   :BMc
+  ~     OBRJ.SEE  MRDOWOR, 3DE:7OBM       .     ;BMB   RMR7BM    BMB    MBB. BMB    ,BMR  .BBZ   MMB   rMB,  BMM   rMB7
+  ~     :FBRO0D0  RKXSXPR. JOKOOMPi       BMBSSWBMB;    BMBB:    MBMB0ZMBMS  .BMBOXRBMB    MBMDE RBM2;SMBM;  MBB   xBM2
+  ~         iZGE  O0SHSPO. uGZ7.          sBMBMBDL      :BMO     OZu:BMBK,     rRBMB0;     ,EBMB  xBMBr:ER.  RDU   :OO;
+  ~     ,BZ, 1D0  RPSFHXR. xWZ .SMr                  . .BBB
+  ~      :0BMRDG  RESSSKR. 2WOMBW;                   BMBMR
+  ~         i0BM: SWKHKGO  MBDv
+  ~           .UB  OOGDM. MK,                                          Copyright (c) 2015-2019.  斯伯坦机器人
+  ~              ,  XMW  ..
+  ~                  r                                                                     All rights reserved.
+  ~
+  ~ *********************************************************************************************************************
+  -->
+
+<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
+                 android:drawable="@drawable/sybotan_logo">
+    <target
+            android:animation="@animator/sybotan_anim"
+            android:name="header"/>
+    <target
+            android:animation="@animator/sybotan_anim"
+            android:name="body"/>
+    <target
+            android:animation="@animator/sybotan_anim"
+            android:name="left"/>
+    <target
+            android:animation="@animator/sybotan_anim"
+            android:name="right"/>
+</animated-vector>

+ 36 - 0
demo/src/main/res/layout/activity_graphy.xml

@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ *********************************************************************************************************************
+  ~
+  ~               iFHS7.
+  ~              ;BBMBMBMc                  rZMBMBR              BMB
+  ~              MBEr:;PBM,               7MBMMEOBB:             BBB                       RBW
+  ~     XK:      BO     SB.     :SZ       MBM.       c;;     ir  BBM :FFr       :SSF:    ;xBMB:r   iuGXv.    i:. iF2;
+  ~     DBBM0r.  :D     S7   ;XMBMB       GMBMu.     MBM:   BMB  MBMBBBMBMS   WMBMBMBBK  MBMBMBM  BMBRBMBW  .MBMBMBMBB
+  ~      :JMRMMD  ..    ,  1MMRM1;         ;MBMBBR:   MBM  ;MB:  BMB:   MBM. RMBr   sBMH   BM0         UMB,  BMB.  KMBv
+  ~     ;.   XOW  B1; :uM: 1RE,   i           .2BMBs  rMB. MBO   MBO    JMB; MBB     MBM   BBS    7MBMBOBM:  MBW   :BMc
+  ~     OBRJ.SEE  MRDOWOR, 3DE:7OBM       .     ;BMB   RMR7BM    BMB    MBB. BMB    ,BMR  .BBZ   MMB   rMB,  BMM   rMB7
+  ~     :FBRO0D0  RKXSXPR. JOKOOMPi       BMBSSWBMB;    BMBB:    MBMB0ZMBMS  .BMBOXRBMB    MBMDE RBM2;SMBM;  MBB   xBM2
+  ~         iZGE  O0SHSPO. uGZ7.          sBMBMBDL      :BMO     OZu:BMBK,     rRBMB0;     ,EBMB  xBMBr:ER.  RDU   :OO;
+  ~     ,BZ, 1D0  RPSFHXR. xWZ .SMr                  . .BBB
+  ~      :0BMRDG  RESSSKR. 2WOMBW;                   BMBMR
+  ~         i0BM: SWKHKGO  MBDv
+  ~           .UB  OOGDM. MK,                                          Copyright (c) 2015-2019.  斯伯坦机器人
+  ~              ,  XMW  ..
+  ~                  r                                                                     All rights reserved.
+  ~
+  ~ *********************************************************************************************************************
+  -->
+
+<LinearLayout
+        xmlns:android="http://schemas.android.com/apk/res/android"
+        xmlns:tools="http://schemas.android.com/tools"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        tools:context="com.sybotan.android.demo.activities.GraphyActivity">
+
+    <com.sybotan.android.graphy.SGraphyView
+            android:id="@+id/graphyView"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"/>
+</LinearLayout>

+ 40 - 0
demo/src/main/res/layout/activity_main.xml

@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ *********************************************************************************************************************
+  ~
+  ~               iFHS7.
+  ~              ;BBMBMBMc                  rZMBMBR              BMB
+  ~              MBEr:;PBM,               7MBMMEOBB:             BBB                       RBW
+  ~     XK:      BO     SB.     :SZ       MBM.       c;;     ir  BBM :FFr       :SSF:    ;xBMB:r   iuGXv.    i:. iF2;
+  ~     DBBM0r.  :D     S7   ;XMBMB       GMBMu.     MBM:   BMB  MBMBBBMBMS   WMBMBMBBK  MBMBMBM  BMBRBMBW  .MBMBMBMBB
+  ~      :JMRMMD  ..    ,  1MMRM1;         ;MBMBBR:   MBM  ;MB:  BMB:   MBM. RMBr   sBMH   BM0         UMB,  BMB.  KMBv
+  ~     ;.   XOW  B1; :uM: 1RE,   i           .2BMBs  rMB. MBO   MBO    JMB; MBB     MBM   BBS    7MBMBOBM:  MBW   :BMc
+  ~     OBRJ.SEE  MRDOWOR, 3DE:7OBM       .     ;BMB   RMR7BM    BMB    MBB. BMB    ,BMR  .BBZ   MMB   rMB,  BMM   rMB7
+  ~     :FBRO0D0  RKXSXPR. JOKOOMPi       BMBSSWBMB;    BMBB:    MBMB0ZMBMS  .BMBOXRBMB    MBMDE RBM2;SMBM;  MBB   xBM2
+  ~         iZGE  O0SHSPO. uGZ7.          sBMBMBDL      :BMO     OZu:BMBK,     rRBMB0;     ,EBMB  xBMBr:ER.  RDU   :OO;
+  ~     ,BZ, 1D0  RPSFHXR. xWZ .SMr                  . .BBB
+  ~      :0BMRDG  RESSSKR. 2WOMBW;                   BMBMR
+  ~         i0BM: SWKHKGO  MBDv
+  ~           .UB  OOGDM. MK,                                          Copyright (c) 2015-2019.  斯伯坦机器人
+  ~              ,  XMW  ..
+  ~                  r                                                                     All rights reserved.
+  ~
+  ~ *********************************************************************************************************************
+  -->
+
+<merge
+        xmlns:android="http://schemas.android.com/apk/res/android"
+        xmlns:tools="http://schemas.android.com/tools"
+        xmlns:app="http://schemas.android.com/apk/res-auto"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent">
+
+    <Button android:id="@+id/qrcode"
+            android:text="qrcode"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"/>
+    <com.sybotan.android.works.layouts.SBottomNavigationLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        app:nav_menu="@menu/navigation"/>
+</merge>

+ 37 - 0
demo/src/main/res/layout/activity_web_view.xml

@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ *********************************************************************************************************************
+  ~
+  ~               iFHS7.
+  ~              ;BBMBMBMc                  rZMBMBR              BMB
+  ~              MBEr:;PBM,               7MBMMEOBB:             BBB                       RBW
+  ~     XK:      BO     SB.     :SZ       MBM.       c;;     ir  BBM :FFr       :SSF:    ;xBMB:r   iuGXv.    i:. iF2;
+  ~     DBBM0r.  :D     S7   ;XMBMB       GMBMu.     MBM:   BMB  MBMBBBMBMS   WMBMBMBBK  MBMBMBM  BMBRBMBW  .MBMBMBMBB
+  ~      :JMRMMD  ..    ,  1MMRM1;         ;MBMBBR:   MBM  ;MB:  BMB:   MBM. RMBr   sBMH   BM0         UMB,  BMB.  KMBv
+  ~     ;.   XOW  B1; :uM: 1RE,   i           .2BMBs  rMB. MBO   MBO    JMB; MBB     MBM   BBS    7MBMBOBM:  MBW   :BMc
+  ~     OBRJ.SEE  MRDOWOR, 3DE:7OBM       .     ;BMB   RMR7BM    BMB    MBB. BMB    ,BMR  .BBZ   MMB   rMB,  BMM   rMB7
+  ~     :FBRO0D0  RKXSXPR. JOKOOMPi       BMBSSWBMB;    BMBB:    MBMB0ZMBMS  .BMBOXRBMB    MBMDE RBM2;SMBM;  MBB   xBM2
+  ~         iZGE  O0SHSPO. uGZ7.          sBMBMBDL      :BMO     OZu:BMBK,     rRBMB0;     ,EBMB  xBMBr:ER.  RDU   :OO;
+  ~     ,BZ, 1D0  RPSFHXR. xWZ .SMr                  . .BBB
+  ~      :0BMRDG  RESSSKR. 2WOMBW;                   BMBMR
+  ~         i0BM: SWKHKGO  MBDv
+  ~           .UB  OOGDM. MK,                                          Copyright (c) 2015-2019.  斯伯坦机器人
+  ~              ,  XMW  ..
+  ~                  r                                                                     All rights reserved.
+  ~
+  ~ *********************************************************************************************************************
+  -->
+
+<FrameLayout
+        xmlns:android="http://schemas.android.com/apk/res/android"
+        xmlns:tools="http://schemas.android.com/tools"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        tools:context="com.sybotan.android.demo.activities.WebViewActivity">
+
+    <com.sybotan.android.views.webview.SWebView
+            android:id="@+id/uiWebView"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:visibility="visible"/>
+</FrameLayout>

+ 45 - 0
demo/src/main/res/menu/navigation.xml

@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ *********************************************************************************************************************
+  ~
+  ~               iFHS7.
+  ~              ;BBMBMBMc                  rZMBMBR              BMB
+  ~              MBEr:;PBM,               7MBMMEOBB:             BBB                       RBW
+  ~     XK:      BO     SB.     :SZ       MBM.       c;;     ir  BBM :FFr       :SSF:    ;xBMB:r   iuGXv.    i:. iF2;
+  ~     DBBM0r.  :D     S7   ;XMBMB       GMBMu.     MBM:   BMB  MBMBBBMBMS   WMBMBMBBK  MBMBMBM  BMBRBMBW  .MBMBMBMBB
+  ~      :JMRMMD  ..    ,  1MMRM1;         ;MBMBBR:   MBM  ;MB:  BMB:   MBM. RMBr   sBMH   BM0         UMB,  BMB.  KMBv
+  ~     ;.   XOW  B1; :uM: 1RE,   i           .2BMBs  rMB. MBO   MBO    JMB; MBB     MBM   BBS    7MBMBOBM:  MBW   :BMc
+  ~     OBRJ.SEE  MRDOWOR, 3DE:7OBM       .     ;BMB   RMR7BM    BMB    MBB. BMB    ,BMR  .BBZ   MMB   rMB,  BMM   rMB7
+  ~     :FBRO0D0  RKXSXPR. JOKOOMPi       BMBSSWBMB;    BMBB:    MBMB0ZMBMS  .BMBOXRBMB    MBMDE RBM2;SMBM;  MBB   xBM2
+  ~         iZGE  O0SHSPO. uGZ7.          sBMBMBDL      :BMO     OZu:BMBK,     rRBMB0;     ,EBMB  xBMBr:ER.  RDU   :OO;
+  ~     ,BZ, 1D0  RPSFHXR. xWZ .SMr                  . .BBB
+  ~      :0BMRDG  RESSSKR. 2WOMBW;                   BMBMR
+  ~         i0BM: SWKHKGO  MBDv
+  ~           .UB  OOGDM. MK,                                          Copyright (c) 2015-2019.  斯伯坦机器人
+  ~              ,  XMW  ..
+  ~                  r                                                                     All rights reserved.
+  ~
+  ~ *********************************************************************************************************************
+  -->
+<menu xmlns:android="http://schemas.android.com/apk/res/android">
+    <item
+            android:id="@+id/uiMenuJoystick"
+            android:title="遥控"
+            android:icon="@drawable/sybotan_logo_anim"/>
+    <item
+            android:id="@+id/uiMenuPrograming"
+            android:title="编程"
+            android:icon="@drawable/sybotan_logo_anim"/>
+    <item
+            android:id="@+id/uiMenuMy"
+            android:title="我2"
+            android:icon="@drawable/menu_my_selector"/>
+    <item
+            android:id="@+id/uiMenuRobot"
+            android:title="我1"
+            android:icon="@drawable/menu_my_selector"/>
+    <item
+            android:id="@+id/uiMenuRobot1"
+            android:title="我"
+            android:icon="@drawable/menu_my_selector"/>
+</menu>

+ 28 - 0
demo/src/main/res/mipmap-anydpi-v26/ic_launcher.xml

@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ *********************************************************************************************************************
+  ~
+  ~               iFHS7.
+  ~              ;BBMBMBMc                  rZMBMBR              BMB
+  ~              MBEr:;PBM,               7MBMMEOBB:             BBB                       RBW
+  ~     XK:      BO     SB.     :SZ       MBM.       c;;     ir  BBM :FFr       :SSF:    ;xBMB:r   iuGXv.    i:. iF2;
+  ~     DBBM0r.  :D     S7   ;XMBMB       GMBMu.     MBM:   BMB  MBMBBBMBMS   WMBMBMBBK  MBMBMBM  BMBRBMBW  .MBMBMBMBB
+  ~      :JMRMMD  ..    ,  1MMRM1;         ;MBMBBR:   MBM  ;MB:  BMB:   MBM. RMBr   sBMH   BM0         UMB,  BMB.  KMBv
+  ~     ;.   XOW  B1; :uM: 1RE,   i           .2BMBs  rMB. MBO   MBO    JMB; MBB     MBM   BBS    7MBMBOBM:  MBW   :BMc
+  ~     OBRJ.SEE  MRDOWOR, 3DE:7OBM       .     ;BMB   RMR7BM    BMB    MBB. BMB    ,BMR  .BBZ   MMB   rMB,  BMM   rMB7
+  ~     :FBRO0D0  RKXSXPR. JOKOOMPi       BMBSSWBMB;    BMBB:    MBMB0ZMBMS  .BMBOXRBMB    MBMDE RBM2;SMBM;  MBB   xBM2
+  ~         iZGE  O0SHSPO. uGZ7.          sBMBMBDL      :BMO     OZu:BMBK,     rRBMB0;     ,EBMB  xBMBr:ER.  RDU   :OO;
+  ~     ,BZ, 1D0  RPSFHXR. xWZ .SMr                  . .BBB
+  ~      :0BMRDG  RESSSKR. 2WOMBW;                   BMBMR
+  ~         i0BM: SWKHKGO  MBDv
+  ~           .UB  OOGDM. MK,                                          Copyright (c) 2015-2019.  斯伯坦机器人
+  ~              ,  XMW  ..
+  ~                  r                                                                     All rights reserved.
+  ~
+  ~ *********************************************************************************************************************
+  -->
+
+<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
+    <background android:drawable="@drawable/ic_launcher_background"/>
+    <foreground android:drawable="@drawable/ic_launcher_foreground"/>
+</adaptive-icon>

+ 28 - 0
demo/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml

@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ *********************************************************************************************************************
+  ~
+  ~               iFHS7.
+  ~              ;BBMBMBMc                  rZMBMBR              BMB
+  ~              MBEr:;PBM,               7MBMMEOBB:             BBB                       RBW
+  ~     XK:      BO     SB.     :SZ       MBM.       c;;     ir  BBM :FFr       :SSF:    ;xBMB:r   iuGXv.    i:. iF2;
+  ~     DBBM0r.  :D     S7   ;XMBMB       GMBMu.     MBM:   BMB  MBMBBBMBMS   WMBMBMBBK  MBMBMBM  BMBRBMBW  .MBMBMBMBB
+  ~      :JMRMMD  ..    ,  1MMRM1;         ;MBMBBR:   MBM  ;MB:  BMB:   MBM. RMBr   sBMH   BM0         UMB,  BMB.  KMBv
+  ~     ;.   XOW  B1; :uM: 1RE,   i           .2BMBs  rMB. MBO   MBO    JMB; MBB     MBM   BBS    7MBMBOBM:  MBW   :BMc
+  ~     OBRJ.SEE  MRDOWOR, 3DE:7OBM       .     ;BMB   RMR7BM    BMB    MBB. BMB    ,BMR  .BBZ   MMB   rMB,  BMM   rMB7
+  ~     :FBRO0D0  RKXSXPR. JOKOOMPi       BMBSSWBMB;    BMBB:    MBMB0ZMBMS  .BMBOXRBMB    MBMDE RBM2;SMBM;  MBB   xBM2
+  ~         iZGE  O0SHSPO. uGZ7.          sBMBMBDL      :BMO     OZu:BMBK,     rRBMB0;     ,EBMB  xBMBr:ER.  RDU   :OO;
+  ~     ,BZ, 1D0  RPSFHXR. xWZ .SMr                  . .BBB
+  ~      :0BMRDG  RESSSKR. 2WOMBW;                   BMBMR
+  ~         i0BM: SWKHKGO  MBDv
+  ~           .UB  OOGDM. MK,                                          Copyright (c) 2015-2019.  斯伯坦机器人
+  ~              ,  XMW  ..
+  ~                  r                                                                     All rights reserved.
+  ~
+  ~ *********************************************************************************************************************
+  -->
+
+<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
+    <background android:drawable="@drawable/ic_launcher_background"/>
+    <foreground android:drawable="@drawable/ic_launcher_foreground"/>
+</adaptive-icon>

binární
demo/src/main/res/mipmap-hdpi/ic_launcher.png


binární
demo/src/main/res/mipmap-hdpi/ic_launcher_round.png


binární
demo/src/main/res/mipmap-mdpi/ic_launcher.png


binární
demo/src/main/res/mipmap-mdpi/ic_launcher_round.png


binární
demo/src/main/res/mipmap-xhdpi/ic_launcher.png


binární
demo/src/main/res/mipmap-xhdpi/ic_launcher_round.png


binární
demo/src/main/res/mipmap-xxhdpi/ic_launcher.png


binární
demo/src/main/res/mipmap-xxhdpi/ic_launcher_round.png


binární
demo/src/main/res/mipmap-xxxhdpi/ic_launcher.png


binární
demo/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png


+ 29 - 0
demo/src/main/res/values/colors.xml

@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ *********************************************************************************************************************
+  ~
+  ~               iFHS7.
+  ~              ;BBMBMBMc                  rZMBMBR              BMB
+  ~              MBEr:;PBM,               7MBMMEOBB:             BBB                       RBW
+  ~     XK:      BO     SB.     :SZ       MBM.       c;;     ir  BBM :FFr       :SSF:    ;xBMB:r   iuGXv.    i:. iF2;
+  ~     DBBM0r.  :D     S7   ;XMBMB       GMBMu.     MBM:   BMB  MBMBBBMBMS   WMBMBMBBK  MBMBMBM  BMBRBMBW  .MBMBMBMBB
+  ~      :JMRMMD  ..    ,  1MMRM1;         ;MBMBBR:   MBM  ;MB:  BMB:   MBM. RMBr   sBMH   BM0         UMB,  BMB.  KMBv
+  ~     ;.   XOW  B1; :uM: 1RE,   i           .2BMBs  rMB. MBO   MBO    JMB; MBB     MBM   BBS    7MBMBOBM:  MBW   :BMc
+  ~     OBRJ.SEE  MRDOWOR, 3DE:7OBM       .     ;BMB   RMR7BM    BMB    MBB. BMB    ,BMR  .BBZ   MMB   rMB,  BMM   rMB7
+  ~     :FBRO0D0  RKXSXPR. JOKOOMPi       BMBSSWBMB;    BMBB:    MBMB0ZMBMS  .BMBOXRBMB    MBMDE RBM2;SMBM;  MBB   xBM2
+  ~         iZGE  O0SHSPO. uGZ7.          sBMBMBDL      :BMO     OZu:BMBK,     rRBMB0;     ,EBMB  xBMBr:ER.  RDU   :OO;
+  ~     ,BZ, 1D0  RPSFHXR. xWZ .SMr                  . .BBB
+  ~      :0BMRDG  RESSSKR. 2WOMBW;                   BMBMR
+  ~         i0BM: SWKHKGO  MBDv
+  ~           .UB  OOGDM. MK,                                          Copyright (c) 2015-2019.  斯伯坦机器人
+  ~              ,  XMW  ..
+  ~                  r                                                                     All rights reserved.
+  ~
+  ~ *********************************************************************************************************************
+  -->
+
+<resources>
+    <color name="colorPrimary">#3F51B5</color>
+    <color name="colorPrimaryDark">#303F9F</color>
+    <color name="colorAccent">#FF4081</color>
+</resources>

+ 26 - 0
demo/src/main/res/values/strings.xml

@@ -0,0 +1,26 @@
+<!--
+  ~ *********************************************************************************************************************
+  ~
+  ~               iFHS7.
+  ~              ;BBMBMBMc                  rZMBMBR              BMB
+  ~              MBEr:;PBM,               7MBMMEOBB:             BBB                       RBW
+  ~     XK:      BO     SB.     :SZ       MBM.       c;;     ir  BBM :FFr       :SSF:    ;xBMB:r   iuGXv.    i:. iF2;
+  ~     DBBM0r.  :D     S7   ;XMBMB       GMBMu.     MBM:   BMB  MBMBBBMBMS   WMBMBMBBK  MBMBMBM  BMBRBMBW  .MBMBMBMBB
+  ~      :JMRMMD  ..    ,  1MMRM1;         ;MBMBBR:   MBM  ;MB:  BMB:   MBM. RMBr   sBMH   BM0         UMB,  BMB.  KMBv
+  ~     ;.   XOW  B1; :uM: 1RE,   i           .2BMBs  rMB. MBO   MBO    JMB; MBB     MBM   BBS    7MBMBOBM:  MBW   :BMc
+  ~     OBRJ.SEE  MRDOWOR, 3DE:7OBM       .     ;BMB   RMR7BM    BMB    MBB. BMB    ,BMR  .BBZ   MMB   rMB,  BMM   rMB7
+  ~     :FBRO0D0  RKXSXPR. JOKOOMPi       BMBSSWBMB;    BMBB:    MBMB0ZMBMS  .BMBOXRBMB    MBMDE RBM2;SMBM;  MBB   xBM2
+  ~         iZGE  O0SHSPO. uGZ7.          sBMBMBDL      :BMO     OZu:BMBK,     rRBMB0;     ,EBMB  xBMBr:ER.  RDU   :OO;
+  ~     ,BZ, 1D0  RPSFHXR. xWZ .SMr                  . .BBB
+  ~      :0BMRDG  RESSSKR. 2WOMBW;                   BMBMR
+  ~         i0BM: SWKHKGO  MBDv
+  ~           .UB  OOGDM. MK,                                          Copyright (c) 2015-2019.  斯伯坦机器人
+  ~              ,  XMW  ..
+  ~                  r                                                                     All rights reserved.
+  ~
+  ~ *********************************************************************************************************************
+  -->
+
+<resources>
+  <string name="app_name">Demo</string>
+</resources>

+ 34 - 0
demo/src/main/res/values/styles.xml

@@ -0,0 +1,34 @@
+<!--
+  ~ *********************************************************************************************************************
+  ~
+  ~               iFHS7.
+  ~              ;BBMBMBMc                  rZMBMBR              BMB
+  ~              MBEr:;PBM,               7MBMMEOBB:             BBB                       RBW
+  ~     XK:      BO     SB.     :SZ       MBM.       c;;     ir  BBM :FFr       :SSF:    ;xBMB:r   iuGXv.    i:. iF2;
+  ~     DBBM0r.  :D     S7   ;XMBMB       GMBMu.     MBM:   BMB  MBMBBBMBMS   WMBMBMBBK  MBMBMBM  BMBRBMBW  .MBMBMBMBB
+  ~      :JMRMMD  ..    ,  1MMRM1;         ;MBMBBR:   MBM  ;MB:  BMB:   MBM. RMBr   sBMH   BM0         UMB,  BMB.  KMBv
+  ~     ;.   XOW  B1; :uM: 1RE,   i           .2BMBs  rMB. MBO   MBO    JMB; MBB     MBM   BBS    7MBMBOBM:  MBW   :BMc
+  ~     OBRJ.SEE  MRDOWOR, 3DE:7OBM       .     ;BMB   RMR7BM    BMB    MBB. BMB    ,BMR  .BBZ   MMB   rMB,  BMM   rMB7
+  ~     :FBRO0D0  RKXSXPR. JOKOOMPi       BMBSSWBMB;    BMBB:    MBMB0ZMBMS  .BMBOXRBMB    MBMDE RBM2;SMBM;  MBB   xBM2
+  ~         iZGE  O0SHSPO. uGZ7.          sBMBMBDL      :BMO     OZu:BMBK,     rRBMB0;     ,EBMB  xBMBr:ER.  RDU   :OO;
+  ~     ,BZ, 1D0  RPSFHXR. xWZ .SMr                  . .BBB
+  ~      :0BMRDG  RESSSKR. 2WOMBW;                   BMBMR
+  ~         i0BM: SWKHKGO  MBDv
+  ~           .UB  OOGDM. MK,                                          Copyright (c) 2015-2019.  斯伯坦机器人
+  ~              ,  XMW  ..
+  ~                  r                                                                     All rights reserved.
+  ~
+  ~ *********************************************************************************************************************
+  -->
+
+<resources>
+
+    <!-- Base application theme. -->
+    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
+        <!-- Customize your theme here. -->
+        <item name="colorPrimary">@color/colorPrimary</item>
+        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
+        <item name="colorAccent">@color/colorAccent</item>
+    </style>
+
+</resources>