Browse Source

up-bmls:基础配置

dingchao 4 years ago
parent
commit
f972528a64
100 changed files with 2969 additions and 30 deletions
  1. BIN
      .gradle/4.4/fileHashes/fileHashes.bin
  2. BIN
      .gradle/4.4/fileHashes/fileHashes.lock
  3. BIN
      .gradle/4.4/taskHistory/taskHistory.bin
  4. BIN
      .gradle/4.4/taskHistory/taskHistory.lock
  5. BIN
      .gradle/buildOutputCleanup/buildOutputCleanup.lock
  6. BIN
      .gradle/buildOutputCleanup/outputFiles.bin
  7. BIN
      .idea/caches/build_file_checksums.ser
  8. 1 0
      .idea/gradle.xml
  9. 9 0
      .idea/libraries/Gradle____local_aars___D__youpu_bmls_project_up_bmls_app_libs_BaiduLBS_Android_jar_unspecified_jar.xml
  10. 9 0
      .idea/libraries/Gradle____local_aars___D__youpu_bmls_project_up_bmls_app_libs_IndoorscapeAlbumPlugin_jar_unspecified_jar.xml
  11. 10 0
      .idea/libraries/Gradle__alipaySdk_15_6_0_20190226104053__aar.xml
  12. 11 0
      .idea/libraries/Gradle__android_arch_core_common_1_0_0_jar.xml
  13. 11 0
      .idea/libraries/Gradle__android_arch_lifecycle_common_1_0_0_jar.xml
  14. 12 0
      .idea/libraries/Gradle__android_arch_lifecycle_runtime_1_0_0.xml
  15. 11 0
      .idea/libraries/Gradle__com_alibaba_fastjson_1_2_47_jar.xml
  16. 12 0
      .idea/libraries/Gradle__com_android_support_animated_vector_drawable_26_1_0.xml
  17. 12 0
      .idea/libraries/Gradle__com_android_support_appcompat_v7_26_1_0.xml
  18. 10 0
      .idea/libraries/Gradle__com_android_support_cardview_v7_28_0_0.xml
  19. 10 0
      .idea/libraries/Gradle__com_android_support_design_28_0_0.xml
  20. 10 0
      .idea/libraries/Gradle__com_android_support_multidex_1_0_0.xml
  21. 10 0
      .idea/libraries/Gradle__com_android_support_recyclerview_v7_28_0_0.xml
  22. 11 0
      .idea/libraries/Gradle__com_android_support_support_annotations_26_1_0_jar.xml
  23. 11 0
      .idea/libraries/Gradle__com_android_support_support_annotations_27_1_1_jar.xml
  24. 12 0
      .idea/libraries/Gradle__com_android_support_support_compat_26_1_0.xml
  25. 12 0
      .idea/libraries/Gradle__com_android_support_support_core_ui_26_1_0.xml
  26. 12 0
      .idea/libraries/Gradle__com_android_support_support_core_utils_26_1_0.xml
  27. 12 0
      .idea/libraries/Gradle__com_android_support_support_fragment_26_1_0.xml
  28. 12 0
      .idea/libraries/Gradle__com_android_support_support_media_compat_26_1_0.xml
  29. 12 0
      .idea/libraries/Gradle__com_android_support_support_v4_26_1_0.xml
  30. 12 0
      .idea/libraries/Gradle__com_android_support_support_vector_drawable_26_1_0.xml
  31. 10 0
      .idea/libraries/Gradle__com_android_support_transition_28_0_0.xml
  32. 11 0
      .idea/libraries/Gradle__com_github_bumptech_glide_annotations_4_7_1_jar.xml
  33. 11 0
      .idea/libraries/Gradle__com_github_bumptech_glide_disklrucache_4_7_1_jar.xml
  34. 12 0
      .idea/libraries/Gradle__com_github_bumptech_glide_gifdecoder_4_7_1.xml
  35. 12 0
      .idea/libraries/Gradle__com_github_bumptech_glide_glide_4_7_1.xml
  36. 11 0
      .idea/libraries/Gradle__com_google_code_gson_gson_2_7_jar.xml
  37. 12 0
      .idea/libraries/Gradle__com_jakewharton_butterknife_8_4_0.xml
  38. 11 0
      .idea/libraries/Gradle__com_jakewharton_butterknife_annotations_8_4_0_jar.xml
  39. 9 0
      .idea/libraries/Gradle__com_mob_MobCommons_2019_0611_2141_jar.xml
  40. 9 0
      .idea/libraries/Gradle__com_mob_MobTools_2019_0611_2141_jar.xml
  41. 11 0
      .idea/libraries/Gradle__com_squareup_okhttp3_logging_interceptor_3_9_0_jar.xml
  42. 11 0
      .idea/libraries/Gradle__com_squareup_okhttp3_okhttp_3_9_0_jar.xml
  43. 11 0
      .idea/libraries/Gradle__com_squareup_okio_okio_1_13_0_jar.xml
  44. 11 0
      .idea/libraries/Gradle__com_squareup_retrofit2_adapter_rxjava2_2_3_0_jar.xml
  45. 11 0
      .idea/libraries/Gradle__com_squareup_retrofit2_converter_gson_2_3_0_jar.xml
  46. 11 0
      .idea/libraries/Gradle__com_squareup_retrofit2_converter_scalars_2_3_0_jar.xml
  47. 11 0
      .idea/libraries/Gradle__com_squareup_retrofit2_retrofit_2_3_0_jar.xml
  48. 11 0
      .idea/libraries/Gradle__com_tencent_mm_opensdk_wechat_sdk_android_with_mta_5_4_0_jar.xml
  49. 11 0
      .idea/libraries/Gradle__com_trello_rxlifecycle2_rxlifecycle_2_1_0_jar.xml
  50. 12 0
      .idea/libraries/Gradle__com_trello_rxlifecycle2_rxlifecycle_android_2_1_0.xml
  51. 12 0
      .idea/libraries/Gradle__com_trello_rxlifecycle2_rxlifecycle_components_2_1_0.xml
  52. 11 0
      .idea/libraries/Gradle__com_umeng_umsdk_analytics_8_0_0_jar.xml
  53. 11 0
      .idea/libraries/Gradle__com_umeng_umsdk_common_2_0_0_jar.xml
  54. 12 0
      .idea/libraries/Gradle__com_umeng_umsdk_push_5_0_2.xml
  55. 12 0
      .idea/libraries/Gradle__io_reactivex_rxjava2_rxandroid_2_0_1.xml
  56. 11 0
      .idea/libraries/Gradle__io_reactivex_rxjava2_rxjava_2_1_3_jar.xml
  57. 11 0
      .idea/libraries/Gradle__org_reactivestreams_reactive_streams_1_0_1_jar.xml
  58. 1 1
      .idea/misc.xml
  59. 1 0
      .idea/modules.xml
  60. 56 20
      app/app.iml
  61. 58 1
      app/build.gradle
  62. BIN
      app/libs/BaiduLBS_Android.jar
  63. BIN
      app/libs/IndoorscapeAlbumPlugin.jar
  64. BIN
      app/libs/alipaySdk-15.6.0-20190226104053.aar
  65. BIN
      app/libs/armeabi-v7a/libBaiduMapSDK_base_v5_2_1.so
  66. BIN
      app/libs/armeabi-v7a/libBaiduMapSDK_map_v5_2_1.so
  67. BIN
      app/libs/armeabi-v7a/libapp_BaiduPanoramaAppLib.so
  68. BIN
      app/libs/armeabi-v7a/libindoor.so
  69. BIN
      app/libs/armeabi-v7a/liblocSDK7b.so
  70. BIN
      app/libs/armeabi/libBaiduMapSDK_base_v5_2_1.so
  71. BIN
      app/libs/armeabi/libBaiduMapSDK_map_v5_2_1.so
  72. BIN
      app/libs/armeabi/libapp_BaiduPanoramaAppLib.so
  73. BIN
      app/libs/armeabi/libindoor.so
  74. BIN
      app/libs/armeabi/liblocSDK7b.so
  75. BIN
      app/libs/x86/libBaiduMapSDK_base_v5_2_1.so
  76. BIN
      app/libs/x86/libBaiduMapSDK_map_v5_2_1.so
  77. BIN
      app/libs/x86/libapp_BaiduPanoramaAppLib.so
  78. BIN
      app/libs/x86/libindoor.so
  79. BIN
      app/libs/x86/liblocSDK7b.so
  80. BIN
      app/libs/x86_64/libBaiduMapSDK_base_v5_2_1.so
  81. BIN
      app/libs/x86_64/libBaiduMapSDK_map_v5_2_1.so
  82. BIN
      app/libs/x86_64/libapp_BaiduPanoramaAppLib.so
  83. BIN
      app/libs/x86_64/libindoor.so
  84. BIN
      app/libs/x86_64/liblocSDK7b.so
  85. 10 0
      app/src/main/java/com/up/upbmls/adapter/Adapter.java
  86. 10 0
      app/src/main/java/com/up/upbmls/alipay/Alipay.java
  87. 192 0
      app/src/main/java/com/up/upbmls/base/BaseActivity.java
  88. 190 0
      app/src/main/java/com/up/upbmls/base/BaseActivity2.java
  89. 345 0
      app/src/main/java/com/up/upbmls/base/BaseApplication.java
  90. 139 0
      app/src/main/java/com/up/upbmls/base/BaseFragment.java
  91. 121 0
      app/src/main/java/com/up/upbmls/util/OSUtils.java
  92. 208 0
      app/src/main/java/com/up/upbmls/util/StatusBarUtil.java
  93. 557 0
      app/src/main/java/com/up/upbmls/util/SystemBarTintManager.java
  94. 404 0
      app/src/main/java/com/up/upbmls/util/Tool.java
  95. 78 0
      app/src/main/java/com/up/upbmls/util/UnCeHandler.java
  96. 10 0
      app/src/main/java/com/up/upbmls/view/View.java
  97. 3 0
      app/src/main/res/values/colors.xml
  98. 24 2
      app/src/main/res/values/styles.xml
  99. 19 6
      build.gradle
  100. 0 0
      settings.gradle

BIN
.gradle/4.4/fileHashes/fileHashes.bin


BIN
.gradle/4.4/fileHashes/fileHashes.lock


BIN
.gradle/4.4/taskHistory/taskHistory.bin


BIN
.gradle/4.4/taskHistory/taskHistory.lock


BIN
.gradle/buildOutputCleanup/buildOutputCleanup.lock


BIN
.gradle/buildOutputCleanup/outputFiles.bin


BIN
.idea/caches/build_file_checksums.ser


+ 1 - 0
.idea/gradle.xml

@@ -9,6 +9,7 @@
           <set>
             <option value="$PROJECT_DIR$" />
             <option value="$PROJECT_DIR$/app" />
+            <option value="$PROJECT_DIR$/autosize" />
           </set>
         </option>
         <option name="resolveModulePerSourceSet" value="false" />

+ 9 - 0
.idea/libraries/Gradle____local_aars___D__youpu_bmls_project_up_bmls_app_libs_BaiduLBS_Android_jar_unspecified_jar.xml

@@ -0,0 +1,9 @@
+<component name="libraryTable">
+  <library name="Gradle: __local_aars__:D.\youpu\bmls\project\up-bmls\app\libs\BaiduLBS_Android.jar:unspecified@jar">
+    <CLASSES>
+      <root url="jar://$PROJECT_DIR$/app/libs/BaiduLBS_Android.jar!/" />
+    </CLASSES>
+    <JAVADOC />
+    <SOURCES />
+  </library>
+</component>

+ 9 - 0
.idea/libraries/Gradle____local_aars___D__youpu_bmls_project_up_bmls_app_libs_IndoorscapeAlbumPlugin_jar_unspecified_jar.xml

@@ -0,0 +1,9 @@
+<component name="libraryTable">
+  <library name="Gradle: __local_aars__:D.\youpu\bmls\project\up-bmls\app\libs\IndoorscapeAlbumPlugin.jar:unspecified@jar">
+    <CLASSES>
+      <root url="jar://$PROJECT_DIR$/app/libs/IndoorscapeAlbumPlugin.jar!/" />
+    </CLASSES>
+    <JAVADOC />
+    <SOURCES />
+  </library>
+</component>

+ 10 - 0
.idea/libraries/Gradle__alipaySdk_15_6_0_20190226104053__aar.xml

@@ -0,0 +1,10 @@
+<component name="libraryTable">
+  <library name="Gradle: alipaySdk-15.6.0-20190226104053:@aar">
+    <CLASSES>
+      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/alipaySdk-15.6.0-20190226104053.aar/919002e7279673ae2243d938175ca899/res" />
+      <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/alipaySdk-15.6.0-20190226104053.aar/919002e7279673ae2243d938175ca899/jars/classes.jar!/" />
+    </CLASSES>
+    <JAVADOC />
+    <SOURCES />
+  </library>
+</component>

+ 11 - 0
.idea/libraries/Gradle__android_arch_core_common_1_0_0_jar.xml

@@ -0,0 +1,11 @@
+<component name="libraryTable">
+  <library name="Gradle: android.arch.core:common:1.0.0@jar">
+    <CLASSES>
+      <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/android.arch.core/common/1.0.0/a2d487452376193fc8c103dd2b9bd5f2b1b44563/common-1.0.0.jar!/" />
+    </CLASSES>
+    <JAVADOC />
+    <SOURCES>
+      <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/android.arch.core/common/1.0.0/a41fa3b9a66f3bdd41f98013a1688e969072aaf2/common-1.0.0-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 11 - 0
.idea/libraries/Gradle__android_arch_lifecycle_common_1_0_0_jar.xml

@@ -0,0 +1,11 @@
+<component name="libraryTable">
+  <library name="Gradle: android.arch.lifecycle:common:1.0.0@jar">
+    <CLASSES>
+      <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/android.arch.lifecycle/common/1.0.0/e414a4cb28434e25c4f6aa71426eb20cf4874ae9/common-1.0.0.jar!/" />
+    </CLASSES>
+    <JAVADOC />
+    <SOURCES>
+      <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/android.arch.lifecycle/common/1.0.0/39ce4055689b4b766478265a8c661f4165f26dc3/common-1.0.0-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 12 - 0
.idea/libraries/Gradle__android_arch_lifecycle_runtime_1_0_0.xml

@@ -0,0 +1,12 @@
+<component name="libraryTable">
+  <library name="Gradle: android.arch.lifecycle:runtime-1.0.0">
+    <CLASSES>
+      <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/runtime-1.0.0.aar/9b0b04e93a9ff615dc6cb4084c1ab58d/jars/classes.jar!/" />
+      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/runtime-1.0.0.aar/9b0b04e93a9ff615dc6cb4084c1ab58d/res" />
+    </CLASSES>
+    <JAVADOC />
+    <SOURCES>
+      <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/android.arch.lifecycle/runtime/1.0.0/1dd0298d8c45d8dfa4d038270247327f23df7a3a/runtime-1.0.0-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 11 - 0
.idea/libraries/Gradle__com_alibaba_fastjson_1_2_47_jar.xml

@@ -0,0 +1,11 @@
+<component name="libraryTable">
+  <library name="Gradle: com.alibaba:fastjson:1.2.47@jar">
+    <CLASSES>
+      <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.alibaba/fastjson/1.2.47/73d66d7ee99e81373b4955f2ee3797791520329b/fastjson-1.2.47.jar!/" />
+    </CLASSES>
+    <JAVADOC />
+    <SOURCES>
+      <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.alibaba/fastjson/1.2.47/80217385515cb624ad9d1e7b47162b5ecff0c040/fastjson-1.2.47-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 12 - 0
.idea/libraries/Gradle__com_android_support_animated_vector_drawable_26_1_0.xml

@@ -0,0 +1,12 @@
+<component name="libraryTable">
+  <library name="Gradle: com.android.support:animated-vector-drawable-26.1.0">
+    <CLASSES>
+      <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/animated-vector-drawable-26.1.0.aar/6dc88a8545740f9994d9a02d80bf32c6/jars/classes.jar!/" />
+      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/animated-vector-drawable-26.1.0.aar/6dc88a8545740f9994d9a02d80bf32c6/res" />
+    </CLASSES>
+    <JAVADOC />
+    <SOURCES>
+      <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.support/animated-vector-drawable/26.1.0/91743e9b07667784f471a3c4748e6883cd810084/animated-vector-drawable-26.1.0-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 12 - 0
.idea/libraries/Gradle__com_android_support_appcompat_v7_26_1_0.xml

@@ -0,0 +1,12 @@
+<component name="libraryTable">
+  <library name="Gradle: com.android.support:appcompat-v7-26.1.0">
+    <CLASSES>
+      <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/appcompat-v7-26.1.0.aar/f1aaf15f3c106532ba9e5c1a604e56fe/jars/classes.jar!/" />
+      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/appcompat-v7-26.1.0.aar/f1aaf15f3c106532ba9e5c1a604e56fe/res" />
+    </CLASSES>
+    <JAVADOC />
+    <SOURCES>
+      <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.support/appcompat-v7/26.1.0/2b34456c30d6b6e5db5fa3e8fa02f6cebd5531fd/appcompat-v7-26.1.0-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 10 - 0
.idea/libraries/Gradle__com_android_support_cardview_v7_28_0_0.xml

@@ -0,0 +1,10 @@
+<component name="libraryTable">
+  <library name="Gradle: com.android.support:cardview-v7-28.0.0">
+    <CLASSES>
+      <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/cardview-v7-28.0.0.aar/b5c271c86b09bf78423ae5af5809ac2a/jars/classes.jar!/" />
+      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/cardview-v7-28.0.0.aar/b5c271c86b09bf78423ae5af5809ac2a/res" />
+    </CLASSES>
+    <JAVADOC />
+    <SOURCES />
+  </library>
+</component>

+ 10 - 0
.idea/libraries/Gradle__com_android_support_design_28_0_0.xml

@@ -0,0 +1,10 @@
+<component name="libraryTable">
+  <library name="Gradle: com.android.support:design-28.0.0">
+    <CLASSES>
+      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/design-28.0.0.aar/1d76fe20ebb54943762ae6cfe61824ad/res" />
+      <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/design-28.0.0.aar/1d76fe20ebb54943762ae6cfe61824ad/jars/classes.jar!/" />
+    </CLASSES>
+    <JAVADOC />
+    <SOURCES />
+  </library>
+</component>

+ 10 - 0
.idea/libraries/Gradle__com_android_support_multidex_1_0_0.xml

@@ -0,0 +1,10 @@
+<component name="libraryTable">
+  <library name="Gradle: com.android.support:multidex-1.0.0">
+    <CLASSES>
+      <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/multidex-1.0.0.aar/fc89d8bf5fcdeb792659a6fec643c91f/jars/classes.jar!/" />
+      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/multidex-1.0.0.aar/fc89d8bf5fcdeb792659a6fec643c91f/res" />
+    </CLASSES>
+    <JAVADOC />
+    <SOURCES />
+  </library>
+</component>

+ 10 - 0
.idea/libraries/Gradle__com_android_support_recyclerview_v7_28_0_0.xml

@@ -0,0 +1,10 @@
+<component name="libraryTable">
+  <library name="Gradle: com.android.support:recyclerview-v7-28.0.0">
+    <CLASSES>
+      <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/recyclerview-v7-28.0.0.aar/5907fd66a2e0daab937b23c25e99177f/jars/classes.jar!/" />
+      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/recyclerview-v7-28.0.0.aar/5907fd66a2e0daab937b23c25e99177f/res" />
+    </CLASSES>
+    <JAVADOC />
+    <SOURCES />
+  </library>
+</component>

+ 11 - 0
.idea/libraries/Gradle__com_android_support_support_annotations_26_1_0_jar.xml

@@ -0,0 +1,11 @@
+<component name="libraryTable">
+  <library name="Gradle: com.android.support:support-annotations:26.1.0@jar">
+    <CLASSES>
+      <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.support/support-annotations/26.1.0/814258103cf26a15fcc26ecce35f5b7d24b73f8/support-annotations-26.1.0.jar!/" />
+    </CLASSES>
+    <JAVADOC />
+    <SOURCES>
+      <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.support/support-annotations/26.1.0/29ca6aaf2d4976c13dd7c836e91bd2a61b697bf3/support-annotations-26.1.0-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 11 - 0
.idea/libraries/Gradle__com_android_support_support_annotations_27_1_1_jar.xml

@@ -0,0 +1,11 @@
+<component name="libraryTable">
+  <library name="Gradle: com.android.support:support-annotations:27.1.1@jar">
+    <CLASSES>
+      <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.support/support-annotations/27.1.1/39ded76b5e1ce1c5b2688e1d25cdc20ecee32007/support-annotations-27.1.1.jar!/" />
+    </CLASSES>
+    <JAVADOC />
+    <SOURCES>
+      <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.support/support-annotations/27.1.1/46bebf5bd40146178cb33c7678f3782a09dea6e4/support-annotations-27.1.1-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 12 - 0
.idea/libraries/Gradle__com_android_support_support_compat_26_1_0.xml

@@ -0,0 +1,12 @@
+<component name="libraryTable">
+  <library name="Gradle: com.android.support:support-compat-26.1.0">
+    <CLASSES>
+      <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/support-compat-26.1.0.aar/a60afe834f55bceb83c9daaa3e10907c/jars/classes.jar!/" />
+      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/support-compat-26.1.0.aar/a60afe834f55bceb83c9daaa3e10907c/res" />
+    </CLASSES>
+    <JAVADOC />
+    <SOURCES>
+      <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.support/support-compat/26.1.0/73bfdb5cca1949a51219d3676700996990ea3b52/support-compat-26.1.0-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 12 - 0
.idea/libraries/Gradle__com_android_support_support_core_ui_26_1_0.xml

@@ -0,0 +1,12 @@
+<component name="libraryTable">
+  <library name="Gradle: com.android.support:support-core-ui-26.1.0">
+    <CLASSES>
+      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/support-core-ui-26.1.0.aar/6468b630fd095cff97fb892d2521cf55/res" />
+      <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/support-core-ui-26.1.0.aar/6468b630fd095cff97fb892d2521cf55/jars/classes.jar!/" />
+    </CLASSES>
+    <JAVADOC />
+    <SOURCES>
+      <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.support/support-core-ui/26.1.0/4d52cef4a24bf9939de1d256ca9f0974c6e636a4/support-core-ui-26.1.0-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 12 - 0
.idea/libraries/Gradle__com_android_support_support_core_utils_26_1_0.xml

@@ -0,0 +1,12 @@
+<component name="libraryTable">
+  <library name="Gradle: com.android.support:support-core-utils-26.1.0">
+    <CLASSES>
+      <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/support-core-utils-26.1.0.aar/96e6d5db48b82590d893510872affefe/jars/classes.jar!/" />
+      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/support-core-utils-26.1.0.aar/96e6d5db48b82590d893510872affefe/res" />
+    </CLASSES>
+    <JAVADOC />
+    <SOURCES>
+      <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.support/support-core-utils/26.1.0/2b0c3da7f80880bbf365452b354490a77f085c96/support-core-utils-26.1.0-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 12 - 0
.idea/libraries/Gradle__com_android_support_support_fragment_26_1_0.xml

@@ -0,0 +1,12 @@
+<component name="libraryTable">
+  <library name="Gradle: com.android.support:support-fragment-26.1.0">
+    <CLASSES>
+      <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/support-fragment-26.1.0.aar/d519e88f8e4f86e5047024ec75678dc4/jars/classes.jar!/" />
+      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/support-fragment-26.1.0.aar/d519e88f8e4f86e5047024ec75678dc4/res" />
+    </CLASSES>
+    <JAVADOC />
+    <SOURCES>
+      <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.support/support-fragment/26.1.0/8279b00f5194701ff18363fa2958c5a26670b0ef/support-fragment-26.1.0-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 12 - 0
.idea/libraries/Gradle__com_android_support_support_media_compat_26_1_0.xml

@@ -0,0 +1,12 @@
+<component name="libraryTable">
+  <library name="Gradle: com.android.support:support-media-compat-26.1.0">
+    <CLASSES>
+      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/support-media-compat-26.1.0.aar/9be1783fdd2931818043e67a0423bec1/res" />
+      <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/support-media-compat-26.1.0.aar/9be1783fdd2931818043e67a0423bec1/jars/classes.jar!/" />
+    </CLASSES>
+    <JAVADOC />
+    <SOURCES>
+      <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.support/support-media-compat/26.1.0/774fd1164ec32514eec562953f723a1920a7fef7/support-media-compat-26.1.0-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 12 - 0
.idea/libraries/Gradle__com_android_support_support_v4_26_1_0.xml

@@ -0,0 +1,12 @@
+<component name="libraryTable">
+  <library name="Gradle: com.android.support:support-v4-26.1.0">
+    <CLASSES>
+      <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/support-v4-26.1.0.aar/07f3552d5d500782db9f5961802f75f4/jars/classes.jar!/" />
+      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/support-v4-26.1.0.aar/07f3552d5d500782db9f5961802f75f4/res" />
+    </CLASSES>
+    <JAVADOC />
+    <SOURCES>
+      <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.support/support-v4/26.1.0/9c53eab3272b3b26583b17facac2e90d264b2788/support-v4-26.1.0-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 12 - 0
.idea/libraries/Gradle__com_android_support_support_vector_drawable_26_1_0.xml

@@ -0,0 +1,12 @@
+<component name="libraryTable">
+  <library name="Gradle: com.android.support:support-vector-drawable-26.1.0">
+    <CLASSES>
+      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/support-vector-drawable-26.1.0.aar/9f4ccba36935c9a65e5872ef56210a1f/res" />
+      <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/support-vector-drawable-26.1.0.aar/9f4ccba36935c9a65e5872ef56210a1f/jars/classes.jar!/" />
+    </CLASSES>
+    <JAVADOC />
+    <SOURCES>
+      <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.support/support-vector-drawable/26.1.0/7a59c417eb560e5ddc2de20792ad45b38e422a5b/support-vector-drawable-26.1.0-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 10 - 0
.idea/libraries/Gradle__com_android_support_transition_28_0_0.xml

@@ -0,0 +1,10 @@
+<component name="libraryTable">
+  <library name="Gradle: com.android.support:transition-28.0.0">
+    <CLASSES>
+      <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/transition-28.0.0.aar/be265e073df609bfd0d9fac16eeabec0/jars/classes.jar!/" />
+      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/transition-28.0.0.aar/be265e073df609bfd0d9fac16eeabec0/res" />
+    </CLASSES>
+    <JAVADOC />
+    <SOURCES />
+  </library>
+</component>

+ 11 - 0
.idea/libraries/Gradle__com_github_bumptech_glide_annotations_4_7_1_jar.xml

@@ -0,0 +1,11 @@
+<component name="libraryTable">
+  <library name="Gradle: com.github.bumptech.glide:annotations:4.7.1@jar">
+    <CLASSES>
+      <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.github.bumptech.glide/annotations/4.7.1/796c0bf0a61141278c4bc32de2b92e6eb7fa8b1a/annotations-4.7.1.jar!/" />
+    </CLASSES>
+    <JAVADOC />
+    <SOURCES>
+      <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.github.bumptech.glide/annotations/4.7.1/275492b698d1f98a53ab8a47b707f3b62bfcc5cb/annotations-4.7.1-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 11 - 0
.idea/libraries/Gradle__com_github_bumptech_glide_disklrucache_4_7_1_jar.xml

@@ -0,0 +1,11 @@
+<component name="libraryTable">
+  <library name="Gradle: com.github.bumptech.glide:disklrucache:4.7.1@jar">
+    <CLASSES>
+      <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.github.bumptech.glide/disklrucache/4.7.1/21e6054c134c7f5c435ab7635984f39c5375083e/disklrucache-4.7.1.jar!/" />
+    </CLASSES>
+    <JAVADOC />
+    <SOURCES>
+      <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.github.bumptech.glide/disklrucache/4.7.1/faa9b4747a35846097a3cddf975ca2a3ea23e872/disklrucache-4.7.1-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 12 - 0
.idea/libraries/Gradle__com_github_bumptech_glide_gifdecoder_4_7_1.xml

@@ -0,0 +1,12 @@
+<component name="libraryTable">
+  <library name="Gradle: com.github.bumptech.glide:gifdecoder-4.7.1">
+    <CLASSES>
+      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/gifdecoder-4.7.1.aar/937358f00e8befea0eab54e8994a6883/res" />
+      <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/gifdecoder-4.7.1.aar/937358f00e8befea0eab54e8994a6883/jars/classes.jar!/" />
+    </CLASSES>
+    <JAVADOC />
+    <SOURCES>
+      <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.github.bumptech.glide/gifdecoder/4.7.1/82de500fb3793f25fc17faebf438b83298dc6689/gifdecoder-4.7.1-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 12 - 0
.idea/libraries/Gradle__com_github_bumptech_glide_glide_4_7_1.xml

@@ -0,0 +1,12 @@
+<component name="libraryTable">
+  <library name="Gradle: com.github.bumptech.glide:glide-4.7.1">
+    <CLASSES>
+      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/glide-4.7.1.aar/3d4744becb0d15af94aaca3573587141/res" />
+      <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/glide-4.7.1.aar/3d4744becb0d15af94aaca3573587141/jars/classes.jar!/" />
+    </CLASSES>
+    <JAVADOC />
+    <SOURCES>
+      <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.github.bumptech.glide/glide/4.7.1/835685a4ca352a1c6d5f724088432ae950e04bac/glide-4.7.1-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 11 - 0
.idea/libraries/Gradle__com_google_code_gson_gson_2_7_jar.xml

@@ -0,0 +1,11 @@
+<component name="libraryTable">
+  <library name="Gradle: com.google.code.gson:gson:2.7@jar">
+    <CLASSES>
+      <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.google.code.gson/gson/2.7/751f548c85fa49f330cecbb1875893f971b33c4e/gson-2.7.jar!/" />
+    </CLASSES>
+    <JAVADOC />
+    <SOURCES>
+      <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.google.code.gson/gson/2.7/bbb63ca253b483da8ee53a50374593923e3de2e2/gson-2.7-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 12 - 0
.idea/libraries/Gradle__com_jakewharton_butterknife_8_4_0.xml

@@ -0,0 +1,12 @@
+<component name="libraryTable">
+  <library name="Gradle: com.jakewharton:butterknife-8.4.0">
+    <CLASSES>
+      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/butterknife-8.4.0.aar/1d32f53246d42d9cff14742af6ed33b6/res" />
+      <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/butterknife-8.4.0.aar/1d32f53246d42d9cff14742af6ed33b6/jars/classes.jar!/" />
+    </CLASSES>
+    <JAVADOC />
+    <SOURCES>
+      <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jakewharton/butterknife/8.4.0/bc76ce8e6c5cf2c92ca6efbbc8b70403d3fd061e/butterknife-8.4.0-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 11 - 0
.idea/libraries/Gradle__com_jakewharton_butterknife_annotations_8_4_0_jar.xml

@@ -0,0 +1,11 @@
+<component name="libraryTable">
+  <library name="Gradle: com.jakewharton:butterknife-annotations:8.4.0@jar">
+    <CLASSES>
+      <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jakewharton/butterknife-annotations/8.4.0/ea392375cf9ff59234a82e7928a204215ccc98cd/butterknife-annotations-8.4.0.jar!/" />
+    </CLASSES>
+    <JAVADOC />
+    <SOURCES>
+      <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jakewharton/butterknife-annotations/8.4.0/7a16d82461021005f75be89293341fd3cef73bfc/butterknife-annotations-8.4.0-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 9 - 0
.idea/libraries/Gradle__com_mob_MobCommons_2019_0611_2141_jar.xml

@@ -0,0 +1,9 @@
+<component name="libraryTable">
+  <library name="Gradle: com.mob:MobCommons:2019.0611.2141@jar">
+    <CLASSES>
+      <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.mob/MobCommons/2019.0611.2141/6428a4dd37716972e24587bb12cb5b6529037822/MobCommons-2019.0611.2141.jar!/" />
+    </CLASSES>
+    <JAVADOC />
+    <SOURCES />
+  </library>
+</component>

+ 9 - 0
.idea/libraries/Gradle__com_mob_MobTools_2019_0611_2141_jar.xml

@@ -0,0 +1,9 @@
+<component name="libraryTable">
+  <library name="Gradle: com.mob:MobTools:2019.0611.2141@jar">
+    <CLASSES>
+      <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.mob/MobTools/2019.0611.2141/7e15ce1883d233b9b7c0cf3eb5d0d6f0a296566b/MobTools-2019.0611.2141.jar!/" />
+    </CLASSES>
+    <JAVADOC />
+    <SOURCES />
+  </library>
+</component>

+ 11 - 0
.idea/libraries/Gradle__com_squareup_okhttp3_logging_interceptor_3_9_0_jar.xml

@@ -0,0 +1,11 @@
+<component name="libraryTable">
+  <library name="Gradle: com.squareup.okhttp3:logging-interceptor:3.9.0@jar">
+    <CLASSES>
+      <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.squareup.okhttp3/logging-interceptor/3.9.0/3bf7f8d6a20c90ffe9fc3f3c9118193c7720ecf1/logging-interceptor-3.9.0.jar!/" />
+    </CLASSES>
+    <JAVADOC />
+    <SOURCES>
+      <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.squareup.okhttp3/logging-interceptor/3.9.0/cec51751745fed35b85bc6a065970bee7aaff360/logging-interceptor-3.9.0-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 11 - 0
.idea/libraries/Gradle__com_squareup_okhttp3_okhttp_3_9_0_jar.xml

@@ -0,0 +1,11 @@
+<component name="libraryTable">
+  <library name="Gradle: com.squareup.okhttp3:okhttp:3.9.0@jar">
+    <CLASSES>
+      <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.squareup.okhttp3/okhttp/3.9.0/1b6c10b5120995a7542c1a31b7828fb8593c8ba/okhttp-3.9.0.jar!/" />
+    </CLASSES>
+    <JAVADOC />
+    <SOURCES>
+      <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.squareup.okhttp3/okhttp/3.9.0/43d4e686afe2f8bb360bc4890123f205955dfd5d/okhttp-3.9.0-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 11 - 0
.idea/libraries/Gradle__com_squareup_okio_okio_1_13_0_jar.xml

@@ -0,0 +1,11 @@
+<component name="libraryTable">
+  <library name="Gradle: com.squareup.okio:okio:1.13.0@jar">
+    <CLASSES>
+      <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.squareup.okio/okio/1.13.0/a9283170b7305c8d92d25aff02a6ab7e45d06cbe/okio-1.13.0.jar!/" />
+    </CLASSES>
+    <JAVADOC />
+    <SOURCES>
+      <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.squareup.okio/okio/1.13.0/f4c91e12121af963e3ef76e81c82aa75ba6e8533/okio-1.13.0-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 11 - 0
.idea/libraries/Gradle__com_squareup_retrofit2_adapter_rxjava2_2_3_0_jar.xml

@@ -0,0 +1,11 @@
+<component name="libraryTable">
+  <library name="Gradle: com.squareup.retrofit2:adapter-rxjava2:2.3.0@jar">
+    <CLASSES>
+      <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.squareup.retrofit2/adapter-rxjava2/2.3.0/f436637f9500ab5b8bc32afe556373180894b4a5/adapter-rxjava2-2.3.0.jar!/" />
+    </CLASSES>
+    <JAVADOC />
+    <SOURCES>
+      <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.squareup.retrofit2/adapter-rxjava2/2.3.0/3c971dd26ffebdbcd99e7804bc833bbb9494aa25/adapter-rxjava2-2.3.0-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 11 - 0
.idea/libraries/Gradle__com_squareup_retrofit2_converter_gson_2_3_0_jar.xml

@@ -0,0 +1,11 @@
+<component name="libraryTable">
+  <library name="Gradle: com.squareup.retrofit2:converter-gson:2.3.0@jar">
+    <CLASSES>
+      <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.squareup.retrofit2/converter-gson/2.3.0/9e09011e9767bb76b5e27c9b8223476b93b14631/converter-gson-2.3.0.jar!/" />
+    </CLASSES>
+    <JAVADOC />
+    <SOURCES>
+      <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.squareup.retrofit2/converter-gson/2.3.0/438355cc604d9c87dedc84fd2c05924e4e6d2ce3/converter-gson-2.3.0-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 11 - 0
.idea/libraries/Gradle__com_squareup_retrofit2_converter_scalars_2_3_0_jar.xml

@@ -0,0 +1,11 @@
+<component name="libraryTable">
+  <library name="Gradle: com.squareup.retrofit2:converter-scalars:2.3.0@jar">
+    <CLASSES>
+      <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.squareup.retrofit2/converter-scalars/2.3.0/1eaa5762cb25c31b1905e2bfdfef70a2e0495ea6/converter-scalars-2.3.0.jar!/" />
+    </CLASSES>
+    <JAVADOC />
+    <SOURCES>
+      <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.squareup.retrofit2/converter-scalars/2.3.0/c91dca6c2fbb4d623d6edb5218be7d079f7246b1/converter-scalars-2.3.0-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 11 - 0
.idea/libraries/Gradle__com_squareup_retrofit2_retrofit_2_3_0_jar.xml

@@ -0,0 +1,11 @@
+<component name="libraryTable">
+  <library name="Gradle: com.squareup.retrofit2:retrofit:2.3.0@jar">
+    <CLASSES>
+      <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.squareup.retrofit2/retrofit/2.3.0/bcacde6a8ccedcc56c127403d26b76072fe6214d/retrofit-2.3.0.jar!/" />
+    </CLASSES>
+    <JAVADOC />
+    <SOURCES>
+      <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.squareup.retrofit2/retrofit/2.3.0/76f3c69879d3e01c082f49d8661c5590838148e1/retrofit-2.3.0-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 11 - 0
.idea/libraries/Gradle__com_tencent_mm_opensdk_wechat_sdk_android_with_mta_5_4_0_jar.xml

@@ -0,0 +1,11 @@
+<component name="libraryTable">
+  <library name="Gradle: com.tencent.mm.opensdk:wechat-sdk-android-with-mta:5.4.0@jar">
+    <CLASSES>
+      <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.tencent.mm.opensdk/wechat-sdk-android-with-mta/5.4.0/8bef9a62e35f2c73bb891dd7f383d7baad86db14/wechat-sdk-android-with-mta-5.4.0.jar!/" />
+    </CLASSES>
+    <JAVADOC />
+    <SOURCES>
+      <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.tencent.mm.opensdk/wechat-sdk-android-with-mta/5.4.0/4185a8393749f2f1d067da95f664503ba670600a/wechat-sdk-android-with-mta-5.4.0-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 11 - 0
.idea/libraries/Gradle__com_trello_rxlifecycle2_rxlifecycle_2_1_0_jar.xml

@@ -0,0 +1,11 @@
+<component name="libraryTable">
+  <library name="Gradle: com.trello.rxlifecycle2:rxlifecycle:2.1.0@jar">
+    <CLASSES>
+      <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.trello.rxlifecycle2/rxlifecycle/2.1.0/ceb847e21d527d2ef285cd3dd187379220ffb223/rxlifecycle-2.1.0.jar!/" />
+    </CLASSES>
+    <JAVADOC />
+    <SOURCES>
+      <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.trello.rxlifecycle2/rxlifecycle/2.1.0/fbd260665ca714374b78cbdaac2171944e5ff529/rxlifecycle-2.1.0-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 12 - 0
.idea/libraries/Gradle__com_trello_rxlifecycle2_rxlifecycle_android_2_1_0.xml

@@ -0,0 +1,12 @@
+<component name="libraryTable">
+  <library name="Gradle: com.trello.rxlifecycle2:rxlifecycle-android-2.1.0">
+    <CLASSES>
+      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/rxlifecycle-android-2.1.0.aar/29f16828781f48b2385f960ca898d579/res" />
+      <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/rxlifecycle-android-2.1.0.aar/29f16828781f48b2385f960ca898d579/jars/classes.jar!/" />
+    </CLASSES>
+    <JAVADOC />
+    <SOURCES>
+      <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.trello.rxlifecycle2/rxlifecycle-android/2.1.0/4434fb75a88966b72ff778c18e0579c26e5930d3/rxlifecycle-android-2.1.0-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 12 - 0
.idea/libraries/Gradle__com_trello_rxlifecycle2_rxlifecycle_components_2_1_0.xml

@@ -0,0 +1,12 @@
+<component name="libraryTable">
+  <library name="Gradle: com.trello.rxlifecycle2:rxlifecycle-components-2.1.0">
+    <CLASSES>
+      <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/rxlifecycle-components-2.1.0.aar/8ab4efd17c7be178cec26cae4355a608/jars/classes.jar!/" />
+      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/rxlifecycle-components-2.1.0.aar/8ab4efd17c7be178cec26cae4355a608/res" />
+    </CLASSES>
+    <JAVADOC />
+    <SOURCES>
+      <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.trello.rxlifecycle2/rxlifecycle-components/2.1.0/cf355c8c49c583d3aee918d9e2181ed289420977/rxlifecycle-components-2.1.0-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 11 - 0
.idea/libraries/Gradle__com_umeng_umsdk_analytics_8_0_0_jar.xml

@@ -0,0 +1,11 @@
+<component name="libraryTable">
+  <library name="Gradle: com.umeng.umsdk:analytics:8.0.0@jar">
+    <CLASSES>
+      <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.umeng.umsdk/analytics/8.0.0/e199c24de741c6be6ed643437408ec3e5590f7c5/analytics-8.0.0.jar!/" />
+    </CLASSES>
+    <JAVADOC />
+    <SOURCES>
+      <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.umeng.umsdk/analytics/8.0.0/a912fdf43a6d75580fc047cc2f6beff05d9f547e/analytics-8.0.0-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 11 - 0
.idea/libraries/Gradle__com_umeng_umsdk_common_2_0_0_jar.xml

@@ -0,0 +1,11 @@
+<component name="libraryTable">
+  <library name="Gradle: com.umeng.umsdk:common:2.0.0@jar">
+    <CLASSES>
+      <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.umeng.umsdk/common/2.0.0/f8e6dc3303a1f50ef69cf571e55e027852830dcd/common-2.0.0.jar!/" />
+    </CLASSES>
+    <JAVADOC />
+    <SOURCES>
+      <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.umeng.umsdk/common/2.0.0/ff12e56f2134d57a46a76909399a3ebd0f0f62e6/common-2.0.0-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 12 - 0
.idea/libraries/Gradle__com_umeng_umsdk_push_5_0_2.xml

@@ -0,0 +1,12 @@
+<component name="libraryTable">
+  <library name="Gradle: com.umeng.umsdk:push-5.0.2">
+    <CLASSES>
+      <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/push-5.0.2.aar/ab565bbabda79b9dba0c0e382be9a91a/jars/classes.jar!/" />
+      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/push-5.0.2.aar/ab565bbabda79b9dba0c0e382be9a91a/res" />
+    </CLASSES>
+    <JAVADOC />
+    <SOURCES>
+      <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.umeng.umsdk/push/5.0.2/c19d0aa515505f1fbf1de4fa88efc82549dab7e0/push-5.0.2-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 12 - 0
.idea/libraries/Gradle__io_reactivex_rxjava2_rxandroid_2_0_1.xml

@@ -0,0 +1,12 @@
+<component name="libraryTable">
+  <library name="Gradle: io.reactivex.rxjava2:rxandroid-2.0.1">
+    <CLASSES>
+      <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/rxandroid-2.0.1.aar/c50f122c1fb6df168d238dd67f12360c/res" />
+      <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/rxandroid-2.0.1.aar/c50f122c1fb6df168d238dd67f12360c/jars/classes.jar!/" />
+    </CLASSES>
+    <JAVADOC />
+    <SOURCES>
+      <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/io.reactivex.rxjava2/rxandroid/2.0.1/67244b35fe87c5899f87151f8b63981b7c9b37db/rxandroid-2.0.1-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 11 - 0
.idea/libraries/Gradle__io_reactivex_rxjava2_rxjava_2_1_3_jar.xml

@@ -0,0 +1,11 @@
+<component name="libraryTable">
+  <library name="Gradle: io.reactivex.rxjava2:rxjava:2.1.3@jar">
+    <CLASSES>
+      <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/io.reactivex.rxjava2/rxjava/2.1.3/c6a633c63607f09f77f424b5c52522a7607cedae/rxjava-2.1.3.jar!/" />
+    </CLASSES>
+    <JAVADOC />
+    <SOURCES>
+      <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/io.reactivex.rxjava2/rxjava/2.1.3/29d73207f0725011a59e0dc02022ac4e4f8445ab/rxjava-2.1.3-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 11 - 0
.idea/libraries/Gradle__org_reactivestreams_reactive_streams_1_0_1_jar.xml

@@ -0,0 +1,11 @@
+<component name="libraryTable">
+  <library name="Gradle: org.reactivestreams:reactive-streams:1.0.1@jar">
+    <CLASSES>
+      <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.reactivestreams/reactive-streams/1.0.1/1b1c911686eb40179219466e6a59b634b9d7a748/reactive-streams-1.0.1.jar!/" />
+    </CLASSES>
+    <JAVADOC />
+    <SOURCES>
+      <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.reactivestreams/reactive-streams/1.0.1/af471e34e448bd4f1c183e9b26c85679be11035c/reactive-streams-1.0.1-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 1 - 1
.idea/misc.xml

@@ -25,7 +25,7 @@
       </value>
     </option>
   </component>
-  <component name="ProjectRootManager" version="2" languageLevel="JDK_1_7" project-jdk-name="1.8" project-jdk-type="JavaSDK">
+  <component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" project-jdk-name="1.8" project-jdk-type="JavaSDK">
     <output url="file://$PROJECT_DIR$/build/classes" />
   </component>
   <component name="ProjectType">

+ 1 - 0
.idea/modules.xml

@@ -3,6 +3,7 @@
   <component name="ProjectModuleManager">
     <modules>
       <module fileurl="file://$PROJECT_DIR$/app/app.iml" filepath="$PROJECT_DIR$/app/app.iml" />
+      <module fileurl="file://$PROJECT_DIR$/autosize/autosize.iml" filepath="$PROJECT_DIR$/autosize/autosize.iml" />
       <module fileurl="file://$PROJECT_DIR$/up-bmls.iml" filepath="$PROJECT_DIR$/up-bmls.iml" />
     </modules>
   </component>

+ 56 - 20
app/app.iml

@@ -22,7 +22,7 @@
       </configuration>
     </facet>
   </component>
-  <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_7">
+  <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
     <output url="file://$MODULE_DIR$/build/intermediates/classes/debug" />
     <output-test url="file://$MODULE_DIR$/build/intermediates/classes/test/debug" />
     <exclude-output />
@@ -98,49 +98,85 @@
     </content>
     <orderEntry type="jdk" jdkName="Android API 28 Platform" jdkType="Android SDK" />
     <orderEntry type="sourceFolder" forTests="false" />
-    <orderEntry type="library" name="Gradle: com.android.support:customview-28.0.0" level="project" />
+    <orderEntry type="library" name="Gradle: com.umeng.umsdk:push-5.0.2" level="project" />
+    <orderEntry type="library" name="Gradle: __local_aars__:D.\youpu\bmls\project\up-bmls\app\libs\IndoorscapeAlbumPlugin.jar:unspecified@jar" level="project" />
     <orderEntry type="library" name="Gradle: com.android.support:localbroadcastmanager-28.0.0" level="project" />
-    <orderEntry type="library" scope="TEST" name="Gradle: com.android.support.test:runner-1.0.2" level="project" />
     <orderEntry type="library" name="Gradle: com.android.support:support-vector-drawable-28.0.0" level="project" />
+    <orderEntry type="library" name="Gradle: com.alibaba:fastjson:1.2.47@jar" level="project" />
+    <orderEntry type="library" name="Gradle: io.reactivex.rxjava2:rxjava:2.1.3@jar" level="project" />
     <orderEntry type="library" name="Gradle: com.android.support:interpolator-28.0.0" level="project" />
     <orderEntry type="library" name="Gradle: com.android.support:support-core-utils-28.0.0" level="project" />
-    <orderEntry type="library" name="Gradle: com.android.support:support-core-ui-28.0.0" level="project" />
-    <orderEntry type="library" name="Gradle: com.android.support:slidingpanelayout-28.0.0" level="project" />
-    <orderEntry type="library" name="Gradle: android.arch.lifecycle:viewmodel-1.1.1" level="project" />
+    <orderEntry type="library" name="Gradle: com.google.code.gson:gson:2.7@jar" level="project" />
+    <orderEntry type="library" name="Gradle: com.github.bumptech.glide:glide-4.7.1" level="project" />
     <orderEntry type="library" name="Gradle: com.android.support:drawerlayout-28.0.0" level="project" />
     <orderEntry type="library" name="Gradle: com.android.support:coordinatorlayout-28.0.0" level="project" />
-    <orderEntry type="library" name="Gradle: com.android.support:collections:28.0.0@jar" level="project" />
+    <orderEntry type="library" name="Gradle: com.android.support:cardview-v7-28.0.0" level="project" />
+    <orderEntry type="library" name="Gradle: com.android.support:multidex-1.0.0" level="project" />
+    <orderEntry type="library" name="Gradle: com.jakewharton:butterknife-annotations:8.4.0@jar" level="project" />
     <orderEntry type="library" scope="TEST" name="Gradle: com.squareup:javawriter:2.1.1@jar" level="project" />
-    <orderEntry type="library" name="Gradle: com.android.support:documentfile-28.0.0" level="project" />
     <orderEntry type="library" name="Gradle: com.android.support.constraint:constraint-layout-1.1.3" level="project" />
+    <orderEntry type="library" name="Gradle: com.squareup.retrofit2:converter-gson:2.3.0@jar" level="project" />
     <orderEntry type="library" name="Gradle: com.android.support:swiperefreshlayout-28.0.0" level="project" />
+    <orderEntry type="library" name="Gradle: alipaySdk-15.6.0-20190226104053:@aar" level="project" />
+    <orderEntry type="library" name="Gradle: android.arch.lifecycle:livedata-1.1.1" level="project" />
+    <orderEntry type="library" scope="TEST" name="Gradle: javax.inject:javax.inject:1@jar" level="project" />
+    <orderEntry type="library" name="Gradle: com.android.support:versionedparcelable-28.0.0" level="project" />
+    <orderEntry type="library" name="Gradle: com.squareup.retrofit2:retrofit:2.3.0@jar" level="project" />
+    <orderEntry type="library" name="Gradle: com.umeng.umsdk:analytics:8.0.0@jar" level="project" />
+    <orderEntry type="library" name="Gradle: android.arch.core:runtime-1.1.1" level="project" />
+    <orderEntry type="library" scope="TEST" name="Gradle: com.android.support.test:monitor-1.0.2" level="project" />
+    <orderEntry type="library" name="Gradle: com.android.support:loader-28.0.0" level="project" />
+    <orderEntry type="library" name="Gradle: com.android.support:viewpager-28.0.0" level="project" />
+    <orderEntry type="library" name="Gradle: com.umeng.umsdk:common:2.0.0@jar" level="project" />
+    <orderEntry type="library" name="Gradle: com.tencent.mm.opensdk:wechat-sdk-android-with-mta:5.4.0@jar" level="project" />
+    <orderEntry type="library" name="Gradle: com.android.support:support-annotations:28.0.0@jar" level="project" />
+    <orderEntry type="library" name="Gradle: com.squareup.okhttp3:logging-interceptor:3.9.0@jar" level="project" />
+    <orderEntry type="library" name="Gradle: com.android.support.constraint:constraint-layout-solver:1.1.3@jar" level="project" />
+    <orderEntry type="library" name="Gradle: android.arch.lifecycle:runtime-1.1.1" level="project" />
+    <orderEntry type="library" scope="TEST" name="Gradle: net.sf.kxml:kxml2:2.3.0@jar" level="project" />
+    <orderEntry type="library" name="Gradle: com.android.support:customview-28.0.0" level="project" />
+    <orderEntry type="library" scope="TEST" name="Gradle: com.android.support.test:runner-1.0.2" level="project" />
+    <orderEntry type="library" name="Gradle: com.squareup.retrofit2:converter-scalars:2.3.0@jar" level="project" />
+    <orderEntry type="library" name="Gradle: com.android.support:support-core-ui-28.0.0" level="project" />
+    <orderEntry type="library" name="Gradle: com.squareup.okio:okio:1.13.0@jar" level="project" />
+    <orderEntry type="library" name="Gradle: com.android.support:slidingpanelayout-28.0.0" level="project" />
+    <orderEntry type="library" name="Gradle: android.arch.lifecycle:viewmodel-1.1.1" level="project" />
+    <orderEntry type="library" name="Gradle: com.jakewharton:butterknife-8.4.0" level="project" />
+    <orderEntry type="library" name="Gradle: com.android.support:collections:28.0.0@jar" level="project" />
+    <orderEntry type="library" name="Gradle: com.trello.rxlifecycle2:rxlifecycle:2.1.0@jar" level="project" />
+    <orderEntry type="library" name="Gradle: com.android.support:documentfile-28.0.0" level="project" />
+    <orderEntry type="library" name="Gradle: org.reactivestreams:reactive-streams:1.0.1@jar" level="project" />
+    <orderEntry type="library" name="Gradle: com.github.bumptech.glide:disklrucache:4.7.1@jar" level="project" />
+    <orderEntry type="library" name="Gradle: com.android.support:design-28.0.0" level="project" />
+    <orderEntry type="library" name="Gradle: com.android.support:recyclerview-v7-28.0.0" level="project" />
     <orderEntry type="library" name="Gradle: com.android.support:cursoradapter-28.0.0" level="project" />
     <orderEntry type="library" name="Gradle: com.android.support:asynclayoutinflater-28.0.0" level="project" />
-    <orderEntry type="library" name="Gradle: android.arch.lifecycle:livedata-1.1.1" level="project" />
     <orderEntry type="library" scope="TEST" name="Gradle: com.google.code.findbugs:jsr305:2.0.1@jar" level="project" />
+    <orderEntry type="library" name="Gradle: __local_aars__:D.\youpu\bmls\project\up-bmls\app\libs\BaiduLBS_Android.jar:unspecified@jar" level="project" />
     <orderEntry type="library" scope="TEST" name="Gradle: com.android.support.test.espresso:espresso-core-3.0.2" level="project" />
-    <orderEntry type="library" scope="TEST" name="Gradle: javax.inject:javax.inject:1@jar" level="project" />
     <orderEntry type="library" name="Gradle: android.arch.core:common:1.1.1@jar" level="project" />
-    <orderEntry type="library" name="Gradle: com.android.support:versionedparcelable-28.0.0" level="project" />
+    <orderEntry type="library" name="Gradle: io.reactivex.rxjava2:rxandroid-2.0.1" level="project" />
+    <orderEntry type="library" name="Gradle: com.trello.rxlifecycle2:rxlifecycle-components-2.1.0" level="project" />
     <orderEntry type="library" scope="TEST" name="Gradle: junit:junit:4.12@jar" level="project" />
     <orderEntry type="library" scope="TEST" name="Gradle: org.hamcrest:hamcrest-core:1.3@jar" level="project" />
-    <orderEntry type="library" name="Gradle: android.arch.core:runtime-1.1.1" level="project" />
+    <orderEntry type="library" name="Gradle: com.trello.rxlifecycle2:rxlifecycle-android-2.1.0" level="project" />
     <orderEntry type="library" name="Gradle: com.android.support:print-28.0.0" level="project" />
-    <orderEntry type="library" scope="TEST" name="Gradle: com.android.support.test:monitor-1.0.2" level="project" />
-    <orderEntry type="library" name="Gradle: com.android.support:loader-28.0.0" level="project" />
+    <orderEntry type="library" name="Gradle: com.squareup.okhttp3:okhttp:3.9.0@jar" level="project" />
     <orderEntry type="library" scope="TEST" name="Gradle: com.android.support.test.espresso:espresso-idling-resource-3.0.2" level="project" />
-    <orderEntry type="library" name="Gradle: com.android.support:viewpager-28.0.0" level="project" />
-    <orderEntry type="library" scope="TEST" name="Gradle: org.hamcrest:hamcrest-library:1.3@jar" level="project" />
+    <orderEntry type="library" name="Gradle: com.mob:MobCommons:2019.0611.2141@jar" level="project" />
+    <orderEntry type="library" name="Gradle: com.github.bumptech.glide:gifdecoder-4.7.1" level="project" />
+    <orderEntry type="library" name="Gradle: com.android.support:transition-28.0.0" level="project" />
     <orderEntry type="library" scope="TEST" name="Gradle: org.hamcrest:hamcrest-integration:1.3@jar" level="project" />
+    <orderEntry type="library" scope="TEST" name="Gradle: org.hamcrest:hamcrest-library:1.3@jar" level="project" />
     <orderEntry type="library" name="Gradle: com.android.support:support-fragment-28.0.0" level="project" />
-    <orderEntry type="library" name="Gradle: com.android.support:support-annotations:28.0.0@jar" level="project" />
+    <orderEntry type="library" name="Gradle: com.squareup.retrofit2:adapter-rxjava2:2.3.0@jar" level="project" />
+    <orderEntry type="library" name="Gradle: com.github.bumptech.glide:annotations:4.7.1@jar" level="project" />
     <orderEntry type="library" name="Gradle: android.arch.lifecycle:common:1.1.1@jar" level="project" />
     <orderEntry type="library" name="Gradle: android.arch.lifecycle:livedata-core-1.1.1" level="project" />
     <orderEntry type="library" name="Gradle: com.android.support:support-compat-28.0.0" level="project" />
     <orderEntry type="library" name="Gradle: com.android.support:animated-vector-drawable-28.0.0" level="project" />
     <orderEntry type="library" name="Gradle: com.android.support:appcompat-v7-28.0.0" level="project" />
-    <orderEntry type="library" name="Gradle: com.android.support.constraint:constraint-layout-solver:1.1.3@jar" level="project" />
-    <orderEntry type="library" name="Gradle: android.arch.lifecycle:runtime-1.1.1" level="project" />
-    <orderEntry type="library" scope="TEST" name="Gradle: net.sf.kxml:kxml2:2.3.0@jar" level="project" />
+    <orderEntry type="library" name="Gradle: com.mob:MobTools:2019.0611.2141@jar" level="project" />
+    <orderEntry type="module" module-name="autosize" />
   </component>
 </module>

+ 58 - 1
app/build.gradle

@@ -1,5 +1,5 @@
 apply plugin: 'com.android.application'
-
+apply plugin: 'com.mob.sdk'
 android {
     compileSdkVersion 28
     defaultConfig {
@@ -16,6 +16,10 @@ android {
             proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
         }
     }
+    compileOptions {
+        targetCompatibility 1.8
+        sourceCompatibility 1.8
+    }
 }
 
 dependencies {
@@ -25,4 +29,57 @@ dependencies {
     testImplementation 'junit:junit:4.12'
     androidTestImplementation 'com.android.support.test:runner:1.0.2'
     androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
+
+    /*屏幕适配(今日头条适配方案)*/
+    implementation project(':autosize')
+
+    //Rx系列
+    implementation 'io.reactivex.rxjava2:rxjava:2.1.3'
+    implementation 'com.squareup.retrofit2:retrofit:2.3.0'
+    implementation 'com.squareup.retrofit2:converter-gson:2.3.0'
+    implementation 'com.squareup.retrofit2:adapter-rxjava2:2.3.0'
+    implementation 'io.reactivex.rxjava2:rxandroid:2.0.1'
+
+    //OkHttp
+    implementation 'com.squareup.okhttp3:okhttp:3.9.0'
+    implementation 'com.squareup.okhttp3:logging-interceptor:3.9.0'
+
+    //Retrofit
+    implementation 'com.squareup.retrofit2:converter-scalars:2.3.0'
+    implementation 'com.trello.rxlifecycle2:rxlifecycle-components:2.1.0'
+
+    //FastJson
+    implementation 'com.alibaba:fastjson:1.2.47'
+    androidTestImplementation 'com.android.support.test:runner:1.0.2'
+    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
+
+    //解决Android3.0以后不能butterknife问题
+    implementation 'com.jakewharton:butterknife:8.4.0'
+    annotationProcessor 'com.jakewharton:butterknife-compiler:8.4.0'
+    implementation 'com.android.support:design:28.0.0'
+
+    //图片加载框架Glide
+    implementation 'com.github.bumptech.glide:glide:4.7.1'
+
+    /*分包*/
+    implementation 'com.android.support:multidex:1.0.0'
+
+    /*友盟统计推送相关*/
+    implementation 'com.umeng.umsdk:analytics:8.0.0'
+    implementation 'com.umeng.umsdk:common:2.0.0'
+    implementation 'com.umeng.umsdk:push:5.0.2'
+
+    /*百度地图*/
+    implementation files('libs/BaiduLBS_Android.jar')
+    implementation files('libs/IndoorscapeAlbumPlugin.jar')
+
+    /*支付宝支付集成*/
+
+    /*构建SDK大于23需要动态请求权限,详情见demo PayDemoActivity requestPermission*/
+
+    //    compile(name: 'alipaySdk-15.6.0-20190226104053', ext: 'aar')
+    implementation(name: 'alipaySdk-15.6.0-20190226104053', ext: 'aar')
+
+    /*微信开发者平台*/
+    implementation 'com.tencent.mm.opensdk:wechat-sdk-android-with-mta:+'
 }

BIN
app/libs/BaiduLBS_Android.jar


BIN
app/libs/IndoorscapeAlbumPlugin.jar


BIN
app/libs/alipaySdk-15.6.0-20190226104053.aar


BIN
app/libs/armeabi-v7a/libBaiduMapSDK_base_v5_2_1.so


BIN
app/libs/armeabi-v7a/libBaiduMapSDK_map_v5_2_1.so


BIN
app/libs/armeabi-v7a/libapp_BaiduPanoramaAppLib.so


BIN
app/libs/armeabi-v7a/libindoor.so


BIN
app/libs/armeabi-v7a/liblocSDK7b.so


BIN
app/libs/armeabi/libBaiduMapSDK_base_v5_2_1.so


BIN
app/libs/armeabi/libBaiduMapSDK_map_v5_2_1.so


BIN
app/libs/armeabi/libapp_BaiduPanoramaAppLib.so


BIN
app/libs/armeabi/libindoor.so


BIN
app/libs/armeabi/liblocSDK7b.so


BIN
app/libs/x86/libBaiduMapSDK_base_v5_2_1.so


BIN
app/libs/x86/libBaiduMapSDK_map_v5_2_1.so


BIN
app/libs/x86/libapp_BaiduPanoramaAppLib.so


BIN
app/libs/x86/libindoor.so


BIN
app/libs/x86/liblocSDK7b.so


BIN
app/libs/x86_64/libBaiduMapSDK_base_v5_2_1.so


BIN
app/libs/x86_64/libBaiduMapSDK_map_v5_2_1.so


BIN
app/libs/x86_64/libapp_BaiduPanoramaAppLib.so


BIN
app/libs/x86_64/libindoor.so


BIN
app/libs/x86_64/liblocSDK7b.so


+ 10 - 0
app/src/main/java/com/up/upbmls/adapter/Adapter.java

@@ -0,0 +1,10 @@
+package com.up.upbmls.adapter;
+
+/**
+ * @ClassName: Adapter
+ * @Description:
+ * @Author: dingchao
+ * @Date: 2019/7/9 15:57
+ */
+public class Adapter {
+}

+ 10 - 0
app/src/main/java/com/up/upbmls/alipay/Alipay.java

@@ -0,0 +1,10 @@
+package com.up.upbmls.alipay;
+
+/**
+ * @ClassName: Alipay
+ * @Description:
+ * @Author: dingchao
+ * @Date: 2019/7/9 15:58
+ */
+public class Alipay {
+}

+ 192 - 0
app/src/main/java/com/up/upbmls/base/BaseActivity.java

@@ -0,0 +1,192 @@
+package com.up.upbmls.base;
+
+import android.app.Activity;
+import android.app.Application;
+import android.content.Context;
+import android.content.pm.ActivityInfo;
+import android.graphics.Color;
+import android.os.Build;
+import android.os.Bundle;
+import android.support.annotation.ColorInt;
+import android.support.annotation.Nullable;
+import android.support.v4.graphics.ColorUtils;
+import android.support.v7.app.AppCompatActivity;
+import android.view.View;
+import android.view.Window;
+import android.view.WindowManager;
+import android.widget.Toast;
+
+import com.umeng.analytics.MobclickAgent;
+import com.umeng.message.PushAgent;
+import com.up.upbmls.R;
+import com.up.upbmls.util.StatusBarUtil;
+
+import butterknife.ButterKnife;
+import butterknife.Unbinder;
+
+/**
+ * @ClassName: BaseActivity
+ * @Description: Activity基类
+ * @Author: dingchao
+ * @Date: 2018/8/8 13:50
+ */
+public abstract class BaseActivity extends AppCompatActivity {
+
+    protected Context mContext;
+    protected Activity mActivity;
+    protected Context appContext;
+    protected Application mApplication;
+
+    protected static Toast toast;
+    protected Unbinder mUnbinder;
+
+    @Override
+    public void setContentView(int layoutResID) {
+        super.setContentView(layoutResID);
+//        setStatusBar(getStatusBarColor());
+    }
+
+    @Override
+    public void setContentView(View view) {
+        super.setContentView(view);
+
+//        setStatusBar(getStatusBarColor());
+    }
+
+    @Override
+    public void onCreate(@Nullable Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);//禁止横屏
+        mContext = this;
+        mActivity = this;
+        appContext = getApplicationContext();
+        mApplication = getApplication();
+
+        requestWindowFeature(Window.FEATURE_NO_TITLE);
+        setContentView(getLayout());
+//        注意绑定要在绑定试图之后写
+        mUnbinder = ButterKnife.bind(this);
+        PushAgent.getInstance(mContext).onAppStart();
+        initEvent();
+
+        //用来设置整体下移,状态栏沉浸
+        StatusBarUtil.setRootViewFitsSystemWindows(this, false);
+        //沉浸式代码配置
+        //当FitsSystemWindows设置 true 时,会在屏幕最上方预留出状态栏高度的 padding
+//        StatusBarUtil.setRootViewFitsSystemWindows(this, true);
+        //设置状态栏透明
+        StatusBarUtil.setTranslucentStatus(this);
+
+        //一般的手机的状态栏文字和图标都是白色的, 可如果你的应用也是纯白色的, 或导致状态栏文字看不清
+        //所以如果你是这种情况,请使用以下代码, 设置状态使用深色文字图标风格, 否则你可以选择性注释掉这个if内容
+        if (!StatusBarUtil.setStatusBarDarkTheme(this, false)) {
+            //如果不支持设置深色风格 为了兼容总不能让状态栏白白的看不清, 于是设置一个状态栏颜色为半透明,
+            //这样半透明+白=灰, 状态栏的文字能看得清
+            StatusBarUtil.setStatusBarColor(this, 0x55000000);
+        }
+        StatusBarUtil.setStatusBarDarkTheme(mActivity, true);
+        StatusBarUtil.setStatusBarColor(mActivity, mContext.getResources().getColor(R.color.color_white));//设置背景颜色
+
+
+
+        //友盟统计应用启动数据
+        PushAgent.getInstance(mContext).onAppStart();
+//        if (Build.VERSION.SDK_INT >= 28) {
+//            WindowManager.LayoutParams lp = getWindow().getAttributes();
+//            lp.layoutInDisplayCutoutMode = WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES;
+//            getWindow().setAttributes(lp);
+//        }
+
+
+    }
+
+    @Override
+    protected void onDestroy() {
+        mUnbinder.unbind();
+//        EventBus.getDefault().unregister(this);//eventbus解绑
+        super.onDestroy();
+    }
+
+
+    @Override
+    protected void onResume() {
+        super.onResume();
+        MobclickAgent.onResume(this);
+    }
+
+    @Override
+    protected void onPause() {
+        super.onPause();
+        MobclickAgent.onPause(this);
+    }
+
+
+    protected abstract int getLayout();
+
+    protected abstract void initEvent();
+
+
+
+
+
+
+    /*判断亮色还是暗色设置导航栏字体背景*/
+
+    /**
+     * Android 6.0 以上设置状态栏颜色
+     */
+    protected void setStatusBar(@ColorInt int color) {
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
+
+            // 设置状态栏底色颜色
+            getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
+            getWindow().clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
+            getWindow().setStatusBarColor(color);
+
+            // 如果亮色,设置状态栏文字为黑色
+            if (isLightColor(color)) {
+                getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
+            } else {
+                getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE);
+            }
+        }
+
+    }
+
+    public void setTextColor(boolean flagColor) {
+        if (flagColor) {//白色
+            getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE);
+        } else {//黑色
+            getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
+        }
+    }
+
+
+    /**
+     * 判断颜色是不是亮色
+     *
+     * @param color
+     * @return
+     * @from https://stackoverflow.com/questions/24260853/check-if-color-is-dark-or-light-in-android
+     */
+    private boolean isLightColor(@ColorInt int color) {
+        return ColorUtils.calculateLuminance(color) >= 0.5;
+    }
+
+    /**
+     * 获取StatusBar颜色,默认白色
+     *
+     * @return
+     */
+    protected @ColorInt
+    int getStatusBarColor() {
+        return Color.WHITE;
+    }
+
+
+//    protected void setStatusBar() {
+//        StatusBarUtil.setColor(this, getResources().getColor(R.color.white));
+//    }
+
+}
+

+ 190 - 0
app/src/main/java/com/up/upbmls/base/BaseActivity2.java

@@ -0,0 +1,190 @@
+package com.up.upbmls.base;
+
+import android.app.Activity;
+import android.app.Application;
+import android.content.Context;
+import android.content.pm.ActivityInfo;
+import android.graphics.Color;
+import android.os.Build;
+import android.os.Bundle;
+import android.support.annotation.ColorInt;
+import android.support.annotation.Nullable;
+import android.support.v4.graphics.ColorUtils;
+import android.support.v7.app.AppCompatActivity;
+import android.view.View;
+import android.view.Window;
+import android.view.WindowManager;
+import android.widget.Toast;
+
+import com.umeng.analytics.MobclickAgent;
+import com.umeng.message.PushAgent;
+
+import butterknife.ButterKnife;
+import butterknife.Unbinder;
+
+
+/**
+ * @ClassName: BaseActivity
+ * @Description: Activity基类
+ * @Author: dingchao
+ * @Date: 2018/8/8 13:50
+ */
+public abstract class BaseActivity2 extends AppCompatActivity {
+
+    protected Context mContext;
+    protected Activity mActivity;
+    protected Context appContext;
+    protected Application mApplication;
+
+    protected static Toast toast;
+    protected Unbinder mUnbinder;
+
+    @Override
+    public void setContentView(int layoutResID) {
+        super.setContentView(layoutResID);
+//        setStatusBar(getStatusBarColor());
+    }
+
+    @Override
+    public void setContentView(View view) {
+        super.setContentView(view);
+
+//        setStatusBar(getStatusBarColor());
+    }
+
+    @Override
+    protected void onCreate(@Nullable Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);//禁止横屏
+        mContext = this;
+        mActivity = this;
+        appContext = getApplicationContext();
+        mApplication = getApplication();
+
+        requestWindowFeature(Window.FEATURE_NO_TITLE);
+        setContentView(getLayout());
+//        注意绑定要在绑定试图之后写
+        mUnbinder = ButterKnife.bind(this);
+        PushAgent.getInstance(mContext).onAppStart();
+        initEvent();
+        //用来设置整体下移,状态栏沉浸
+        StatusBarUtil.setRootViewFitsSystemWindows(this, false);
+        //沉浸式代码配置
+        //当FitsSystemWindows设置 true 时,会在屏幕最上方预留出状态栏高度的 padding
+//        StatusBarUtil.setRootViewFitsSystemWindows(this, true);
+        //设置状态栏透明
+        StatusBarUtil.setTranslucentStatus(this);
+
+        //一般的手机的状态栏文字和图标都是白色的, 可如果你的应用也是纯白色的, 或导致状态栏文字看不清
+        //所以如果你是这种情况,请使用以下代码, 设置状态使用深色文字图标风格, 否则你可以选择性注释掉这个if内容
+        if (!StatusBarUtil.setStatusBarDarkTheme(this, false)) {
+            //如果不支持设置深色风格 为了兼容总不能让状态栏白白的看不清, 于是设置一个状态栏颜色为半透明,
+            //这样半透明+白=灰, 状态栏的文字能看得清
+            StatusBarUtil.setStatusBarColor(this, 0x55000000);
+        }
+//        StatusBarUtil.setStatusBarDarkTheme(mActivity, true);
+//        StatusBarUtil.setStatusBarColor(mActivity, mContext.getResources().getColor(R.color.color_white));//设置背景颜色
+
+
+
+        //友盟统计应用启动数据
+        PushAgent.getInstance(mContext).onAppStart();
+//        if (Build.VERSION.SDK_INT >= 28) {
+//            WindowManager.LayoutParams lp = getWindow().getAttributes();
+//            lp.layoutInDisplayCutoutMode = WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES;
+//            getWindow().setAttributes(lp);
+//        }
+
+
+    }
+
+    @Override
+    public void onDestroy() {
+        mUnbinder.unbind();
+//        EventBus.getDefault().unregister(this);//eventbus解绑
+        super.onDestroy();
+    }
+
+    public void showMsg(String msg) {
+        toast = Toast.makeText(appContext, "", Toast.LENGTH_SHORT);
+        toast.setText(msg);
+        toast.show();
+    }
+
+
+    protected abstract int getLayout();
+
+    protected abstract void initEvent();
+
+    @Override
+    protected void onResume() {
+        super.onResume();
+        MobclickAgent.onResume(this);
+    }
+
+    @Override
+    protected void onPause() {
+        super.onPause();
+        MobclickAgent.onPause(this);
+    }
+
+    /*判断亮色还是暗色设置导航栏字体背景*/
+
+    /**
+     * Android 6.0 以上设置状态栏颜色
+     */
+    protected void setStatusBar(@ColorInt int color) {
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
+
+            // 设置状态栏底色颜色
+            getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
+            getWindow().clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
+            getWindow().setStatusBarColor(color);
+
+            // 如果亮色,设置状态栏文字为黑色
+            if (isLightColor(color)) {
+                getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
+            } else {
+                getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE);
+            }
+        }
+
+    }
+
+    public void setTextColor(boolean flagColor) {
+        if (flagColor) {//白色
+            getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE);
+        } else {//黑色
+            getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
+        }
+    }
+
+
+    /**
+     * 判断颜色是不是亮色
+     *
+     * @param color
+     * @return
+     * @from https://stackoverflow.com/questions/24260853/check-if-color-is-dark-or-light-in-android
+     */
+    private boolean isLightColor(@ColorInt int color) {
+        return ColorUtils.calculateLuminance(color) >= 0.5;
+    }
+
+    /**
+     * 获取StatusBar颜色,默认白色
+     *
+     * @return
+     */
+    protected @ColorInt
+    int getStatusBarColor() {
+        return Color.WHITE;
+    }
+
+
+//    protected void setStatusBar() {
+//        StatusBarUtil.setColor(this, getResources().getColor(R.color.white));
+//    }
+
+}
+

+ 345 - 0
app/src/main/java/com/up/upbmls/base/BaseApplication.java

@@ -0,0 +1,345 @@
+package com.up.upbmls.base;
+
+import android.Manifest;
+import android.annotation.TargetApi;
+import android.app.Activity;
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.content.res.Configuration;
+import android.net.wifi.WifiInfo;
+import android.net.wifi.WifiManager;
+import android.os.Build;
+import android.os.Handler;
+import android.os.StrictMode;
+import android.support.multidex.MultiDex;
+import android.support.multidex.MultiDexApplication;
+import android.text.TextUtils;
+import android.util.Log;
+
+import com.baidu.mapapi.SDKInitializer;
+import com.mob.MobSDK;
+import com.umeng.commonsdk.UMConfigure;
+import com.umeng.commonsdk.statistics.common.DeviceConfig;
+import com.umeng.message.IUmengRegisterCallback;
+import com.umeng.message.MsgConstant;
+import com.umeng.message.PushAgent;
+import com.umeng.message.UTrack;
+import com.umeng.message.UmengMessageHandler;
+import com.umeng.message.UmengNotificationClickHandler;
+import com.umeng.message.entity.UMessage;
+import com.up.upbmls.util.UnCeHandler;
+
+import java.lang.reflect.Method;
+import java.net.NetworkInterface;
+import java.util.ArrayList;
+import java.util.Enumeration;
+import java.util.Locale;
+
+/**
+ * 项目启动配置Application
+ */
+public class BaseApplication extends MultiDexApplication {
+
+    static Context context;
+
+    /*友盟*/
+    public static PushAgent mPushAgent;
+    private static final String TAG = "BaseApplication";
+    public static final String UPDATE_STATUS_ACTION = "com.umeng.message.example.action.UPDATE_STATUS";
+    private Handler handler;
+
+    public static Context getContext() {
+        return context;
+    }
+
+    public void setContext(Context context) {
+        this.context = context;
+    }
+
+    @Override
+    public void onCreate() {
+        super.onCreate();
+        // android 7.0系统解决拍照的问题
+        StrictMode.VmPolicy.Builder builder = new StrictMode.VmPolicy.Builder();
+        StrictMode.setVmPolicy(builder.build());
+        builder.detectFileUriExposure();
+        context = getApplicationContext();
+        //分享初始
+        MobSDK.init(this);
+        //百度地图
+        SDKInitializer.initialize(context);
+
+        //友盟统计推送初始化
+        UMConfigure.setLogEnabled(true);//日志
+        // TODO: 2019/4/2 友盟正式账号
+//        UMConfigure.init(this, UMConfigure.DEVICE_TYPE_PHONE, "5ae0201bf43e481d43000045");
+        UMConfigure.init(this, "5ae0201bf43e481d43000045", "",
+                UMConfigure.DEVICE_TYPE_PHONE, "9c6ce6f0e1be10b9dda847e39078924d");
+//
+
+//        UMConfigure.init(this, "5c8234e83fc19544fa0006cd", "Up",
+//                UMConfigure.DEVICE_TYPE_PHONE, "10f65095d8bfc4d9f5d0dbfd798bee95");
+//        // PushSDK初始化(如使用推送SDK,必须调用此方法)
+        initUpush();
+
+        //程序异常退出重启
+        UnCeHandler catchExcep = new UnCeHandler(this);
+        Thread.setDefaultUncaughtExceptionHandler(catchExcep);
+
+//        HuaWeiRegister.register(context);
+
+
+
+        //didi研发助手
+//        DoraemonKit.install(this);
+    }
+
+    private void initUpush() {
+        mPushAgent = PushAgent.getInstance(this);
+        handler = new Handler(getMainLooper());
+        //sdk开启通知声音
+        mPushAgent.setNotificationPlaySound(MsgConstant.NOTIFICATION_PLAY_SDK_ENABLE);
+        //sdk通知栏数量
+        mPushAgent.setDisplayNotificationNumber(3);
+        // sdk关闭通知声音
+        //mPushAgent.setNotificationPlaySound(MsgConstant.NOTIFICATION_PLAY_SDK_DISABLE);
+        // 通知声音由服务端控制
+        //mPushAgent.setNotificationPlaySound(MsgConstant.NOTIFICATION_PLAY_SERVER);
+        //mPushAgent.setNotificationPlayLights(MsgConstant.NOTIFICATION_PLAY_SDK_DISABLE);
+        //mPushAgent.setNotificationPlayVibrate(MsgConstant.NOTIFICATION_PLAY_SDK_DISABLE);
+
+        UmengMessageHandler messageHandler = new UmengMessageHandler() {
+            @Override
+            public void dealWithCustomMessage(Context context, UMessage msg) {
+                super.dealWithCustomMessage(context, msg);
+                Log.e("msg.JOSN", "msg.getExtra:msg.extra----------》:" + msg.extra);
+                Log.e("msg.JOSN", "msg.getExtra:JOSN----------》:" + com.alibaba.fastjson.JSONObject.toJSONString(msg.extra));
+
+                handler.post(() -> {
+                    // TODO Auto-generated method stub
+                    // 对自定义消息的处理方式,点击或者忽略
+                    boolean isClickOrDismissed = true;
+                    if (isClickOrDismissed) {
+                        //自定义消息的点击统计
+                        UTrack.getInstance(getApplicationContext()).trackMsgClick(msg);
+                        Log.e("umeng_msg", "消息被点击");
+                    } else {
+                        //自定义消息忽略统计
+                        UTrack.getInstance(getApplicationContext()).trackMsgDismissed(msg);
+                        Log.e("umeng_msg", "消息被忽略");
+                    }
+                });
+            }
+        };
+        mPushAgent.setMessageHandler(messageHandler);
+
+        /**
+         * 自定义行为的回调处理,参考文档:高级功能-通知的展示及提醒-自定义通知打开动作
+         * UmengNotificationClickHandler是在BroadcastReceiver中被调用,故
+         * 如果需启动Activity,需添加Intent.FLAG_ACTIVITY_NEW_TASK
+         * */
+        UmengNotificationClickHandler notificationClickHandler = new UmengNotificationClickHandler() {
+            @Override
+            public void dealWithCustomAction(Context context, UMessage msg) {
+            }
+        };
+        //使用自定义的NotificationHandler,来结合友盟统计处理消息通知,参考http://bbs.umeng.com/thread-11112-1-1.html
+        //CustomNotificationHandler notificationClickHandler = new CustomNotificationHandler();
+        mPushAgent.setNotificationClickHandler(notificationClickHandler);
+        getTestDeviceInfo(context);
+        //注册推送服务,每次都调用register都会调用该接口
+        mPushAgent.register(new IUmengRegisterCallback() {
+            @Override
+            public void onSuccess(String deviceToken) {
+                Log.e(TAG, "当前手机的唯一标识device token:" + deviceToken);
+                Intent intent = new Intent();
+                intent.setAction(UPDATE_STATUS_ACTION);
+                intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+                sendBroadcast(intent);
+//                sendBroadcast(new Intent(UPDATE_STATUS_ACTION));
+            }
+
+            @Override
+            public void onFailure(String s, String s1) {
+                Log.i(TAG, "register failed: " + s + " " + s1);
+//                sendBroadcast(new Intent(UPDATE_STATUS_ACTION));
+                sendBroadcast(new Intent(UPDATE_STATUS_ACTION));
+            }
+        });
+    }
+
+//当前项目要求,在切换城市时设置别名,设置一个默认的为北京的,启动时设置的别名为数据库中存储的,切换城市弹窗时设置用户别名,所在HomeFragment2,在切换城市页面点击时更新用户别名 OpenedCityListActivity
+
+    @Override
+    public void onConfigurationChanged(Configuration newConfig) {
+        super.onConfigurationChanged(newConfig);
+
+    }
+
+    @Override
+    protected void attachBaseContext(Context base) {
+        super.attachBaseContext(base);
+        MultiDex.install(base);
+    }
+
+    public static ArrayList<Activity> list = new ArrayList<Activity>();
+
+
+    /**
+     * Activity关闭时,删除Activity列表中的Activity对象
+     */
+    public void removeActivity(Activity a) {
+        list.remove(a);
+    }
+
+    /**
+     * 向Activity列表中添加Activity对象
+     */
+    public static void addActivity(Activity a) {
+        list.add(a);
+    }
+
+
+    /**
+     * 关闭Activity列表中的所有Activity
+     */
+    public static void finishActivity() {
+        for (Activity activity : list) {
+            if (null != activity) {
+                activity.finish();
+            }
+        }
+        //杀死该应用进程
+//        android.os.Process.killProcess(android.os.Process.myPid());
+    }
+
+
+    public static String[] getTestDeviceInfo(Context context) {
+        String[] deviceInfo = new String[2];
+        try {
+            if (context != null) {
+                deviceInfo[0] = DeviceConfig.getDeviceIdForGeneral(context);
+                deviceInfo[1] = DeviceConfig.getMac(context);
+            }
+        } catch (Exception e) {
+        }
+        return deviceInfo;
+    }
+
+
+    public static String getDeviceInfo(Context context) {
+        try {
+            org.json.JSONObject json = new org.json.JSONObject();
+            android.telephony.TelephonyManager tm = (android.telephony.TelephonyManager) context
+                    .getSystemService(Context.TELEPHONY_SERVICE);
+            String device_id = null;
+            if (checkPermission(context, Manifest.permission.READ_PHONE_STATE)) {
+                device_id = tm.getDeviceId();
+            }
+            String mac = getMac(context);
+
+            json.put("mac", mac);
+            if (TextUtils.isEmpty(device_id)) {
+                device_id = mac;
+            }
+            if (TextUtils.isEmpty(device_id)) {
+                device_id = android.provider.Settings.Secure.getString(context.getContentResolver(),
+                        android.provider.Settings.Secure.ANDROID_ID);
+            }
+            json.put("device_id", device_id);
+            return json.toString();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+
+    public static String getMac(Context context) {
+        String mac = "";
+        if (context == null) {
+            return mac;
+        }
+        if (Build.VERSION.SDK_INT < 23) {
+            mac = getMacBySystemInterface(context);
+        } else {
+            mac = getMacByJavaAPI();
+            if (TextUtils.isEmpty(mac)) {
+                mac = getMacBySystemInterface(context);
+            }
+        }
+        return mac;
+
+    }
+
+    @TargetApi(9)
+    private static String getMacByJavaAPI() {
+        try {
+            Enumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces();
+            while (interfaces.hasMoreElements()) {
+                NetworkInterface netInterface = interfaces.nextElement();
+                if ("wlan0".equals(netInterface.getName()) || "eth0".equals(netInterface.getName())) {
+                    byte[] addr = netInterface.getHardwareAddress();
+                    if (addr == null || addr.length == 0) {
+                        return null;
+                    }
+                    StringBuilder buf = new StringBuilder();
+                    for (byte b : addr) {
+                        buf.append(String.format("%02X:", b));
+                    }
+                    if (buf.length() > 0) {
+                        buf.deleteCharAt(buf.length() - 1);
+                    }
+                    return buf.toString().toLowerCase(Locale.getDefault());
+                }
+            }
+        } catch (Throwable e) {
+        }
+        return null;
+    }
+
+    private static String getMacBySystemInterface(Context context) {
+        if (context == null) {
+            return "";
+        }
+        try {
+            WifiManager wifi = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
+            if (checkPermission(context, Manifest.permission.ACCESS_WIFI_STATE)) {
+                WifiInfo info = wifi.getConnectionInfo();
+                return info.getMacAddress();
+            } else {
+                return "";
+            }
+        } catch (Throwable e) {
+            return "";
+        }
+    }
+
+    public static boolean checkPermission(Context context, String permission) {
+        boolean result = false;
+        if (context == null) {
+            return result;
+        }
+        if (Build.VERSION.SDK_INT >= 23) {
+            try {
+                Class clazz = Class.forName("android.content.Context");
+                Method method = clazz.getMethod("checkSelfPermission", String.class);
+                int rest = (Integer) method.invoke(context, permission);
+                if (rest == PackageManager.PERMISSION_GRANTED) {
+                    result = true;
+                } else {
+                    result = false;
+                }
+            } catch (Throwable e) {
+                result = false;
+            }
+        } else {
+            PackageManager pm = context.getPackageManager();
+            if (pm.checkPermission(permission, context.getPackageName()) == PackageManager.PERMISSION_GRANTED) {
+                result = true;
+            }
+        }
+        return result;
+    }
+
+}

+ 139 - 0
app/src/main/java/com/up/upbmls/base/BaseFragment.java

@@ -0,0 +1,139 @@
+package com.up.upbmls.base;
+
+import android.app.Activity;
+import android.app.Application;
+import android.content.Context;
+import android.os.Bundle;
+import android.support.annotation.NonNull;
+import android.support.annotation.Nullable;
+import android.support.v4.app.Fragment;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.Toast;
+
+import butterknife.ButterKnife;
+import butterknife.Unbinder;
+
+
+/**
+ * Created by Raul_lsj on 2018/3/9.
+ */
+
+public abstract class BaseFragment extends Fragment {
+
+    protected View view;
+    protected LayoutInflater inflater;
+    private Unbinder unBinder;
+
+    protected Activity mActivity;
+    protected Context mContext;
+    protected Context appContext;
+    protected Application mApplication;
+
+    private static Toast toast;
+
+
+
+    /*懒加载相关*/
+
+    protected boolean mIsViewInitiated;
+    protected boolean mIsVisibleToUser;
+    protected boolean mIsDataInitiated;
+
+    @Override
+    public void onAttach(Context context) {
+        mActivity = (Activity) context;
+        mContext = context;
+        appContext = mActivity.getApplicationContext();
+        mApplication = mActivity.getApplication();
+        super.onAttach(context);
+    }
+
+    @Nullable
+    @Override
+    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
+        //新增判断start
+        //判断view存不存在
+        if (view != null) {
+            ViewGroup parent = (ViewGroup) view.getParent();
+            if (parent != null) {
+                //存在就将其删除
+                parent.removeView(view);
+            }
+            return view;
+        }
+        //新增判断end
+        view = inflater.inflate(getLayout(), container, false);
+        unBinder = ButterKnife.bind(this, view);
+
+        initView();
+        return view;
+    }
+
+    @Override
+    public void onCreate(@Nullable Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+//        if (!EventBus.getDefault().isRegistered(this)) {
+//            EventBus.getDefault().register(this);
+//        }
+        initEvent();
+    }
+
+
+    @Override
+    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
+        super.onViewCreated(view, savedInstanceState);
+        inflater = onGetLayoutInflater(savedInstanceState);
+    }
+
+    @Override
+    public void onDestroyView() {
+        unBinder.unbind();
+//        EventBus.getDefault().unregister(this);//eventbus解绑
+        super.onDestroyView();
+    }
+
+    public void showMsg(String msg) {
+        toast = Toast.makeText(appContext, "", Toast.LENGTH_SHORT);
+        toast.setText(msg);
+        toast.show();
+    }
+
+
+    protected abstract int getLayout();
+
+    protected abstract void initEvent();
+
+    protected abstract void initView();
+
+    /*懒加载相关*/
+    /*数据加载*/
+    protected abstract void fetchData();
+
+    @Override
+    public void setUserVisibleHint(boolean isVisibleToUser) {
+        super.setUserVisibleHint(isVisibleToUser);
+        mIsVisibleToUser = isVisibleToUser;
+        initFetchData();
+    }
+
+    @Override
+    public void onActivityCreated(Bundle savedInstanceState) {
+        super.onActivityCreated(savedInstanceState);
+
+        mIsViewInitiated = true;
+        initFetchData();
+    }
+
+    protected void initFetchData() {
+        if (mIsVisibleToUser && mIsViewInitiated && !mIsDataInitiated) {
+            //第一次可见时加载数据
+            Log.e("baseFragment", "-------------initFetchDate第一次加载页面数据");
+            fetchData();
+            mIsDataInitiated = true;
+        }
+    }
+
+}

+ 121 - 0
app/src/main/java/com/up/upbmls/util/OSUtils.java

@@ -0,0 +1,121 @@
+package com.up.upbmls.util;
+
+import android.os.Build;
+import android.text.TextUtils;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+
+/**
+ * @ClassName: OSUtils
+ * @Description:Rom类型判断的工具类
+ * @Author: dingchao
+ * @Date: 2018/11/8 15:25
+ */
+public class OSUtils {
+    public static final String ROM_MIUI = "MIUI";
+    public static final String ROM_EMUI = "EMUI";
+    public static final String ROM_FLYME = "FLYME";
+    public static final String ROM_OPPO = "OPPO";
+    public static final String ROM_SMARTISAN = "SMARTISAN";
+    public static final String ROM_VIVO = "VIVO";
+    public static final String ROM_QIKU = "QIKU";
+    private static final String KEY_VERSION_MIUI = "ro.miui.ui.version.name";
+    private static final String KEY_VERSION_EMUI = "ro.build.version.emui";
+    private static final String KEY_VERSION_OPPO = "ro.build.version.opporom";
+    private static final String KEY_VERSION_SMARTISAN = "ro.smartisan.version";
+    private static final String KEY_VERSION_VIVO = "ro.vivo.os.version";
+    private static String sName;
+    private static String sVersion;
+
+    public static boolean isEmui() {
+        return check(ROM_EMUI);
+    }
+
+    public static boolean isMiui() {
+        return check(ROM_MIUI);
+    }
+
+    public static boolean isVivo() {
+        return check(ROM_VIVO);
+    }
+
+    public static boolean isOppo() {
+        return check(ROM_OPPO);
+    }
+
+    public static boolean isFlyme() {
+        return check(ROM_FLYME);
+    }
+
+    public static boolean is360() {
+        return check(ROM_QIKU) || check("360");
+    }
+
+    public static boolean isSmartisan() {
+        return check(ROM_SMARTISAN);
+    }
+
+    public static String getName() {
+        if (sName == null) {
+            check("");
+        }
+        return sName;
+    }
+
+    public static String getVersion() {
+        if (sVersion == null) {
+            check("");
+        }
+        return sVersion;
+    }
+
+    public static boolean check(String rom) {
+        if (sName != null) {
+            return sName.equals(rom);
+        }
+        if (!TextUtils.isEmpty(sVersion = getProp(KEY_VERSION_MIUI))) {
+            sName = ROM_MIUI;
+        } else if (!TextUtils.isEmpty(sVersion = getProp(KEY_VERSION_EMUI))) {
+            sName = ROM_EMUI;
+        } else if (!TextUtils.isEmpty(sVersion = getProp(KEY_VERSION_OPPO))) {
+            sName = ROM_OPPO;
+        } else if (!TextUtils.isEmpty(sVersion = getProp(KEY_VERSION_VIVO))) {
+            sName = ROM_VIVO;
+        } else if (!TextUtils.isEmpty(sVersion = getProp(KEY_VERSION_SMARTISAN))) {
+            sName = ROM_SMARTISAN;
+        } else {
+            sVersion = Build.DISPLAY;
+            if (sVersion.toUpperCase().contains(ROM_FLYME)) {
+                sName = ROM_FLYME;
+            } else {
+                sVersion = Build.UNKNOWN;
+                sName = Build.MANUFACTURER.toUpperCase();
+            }
+        }
+        return sName.equals(rom);
+    }
+
+    public static String getProp(String name) {
+        String line = null;
+        BufferedReader input = null;
+        try {
+            Process p = Runtime.getRuntime().exec("getprop " + name);
+            input = new BufferedReader(new InputStreamReader(p.getInputStream()), 1024);
+            line = input.readLine();
+            input.close();
+        } catch (IOException ex) {
+            return null;
+        } finally {
+            if (input != null) {
+                try {
+                    input.close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+        return line;
+    }
+}

+ 208 - 0
app/src/main/java/com/up/upbmls/util/StatusBarUtil.java

@@ -0,0 +1,208 @@
+package com.up.upbmls.util;
+
+import android.annotation.SuppressLint;
+import android.annotation.TargetApi;
+import android.app.Activity;
+import android.content.Context;
+import android.graphics.Color;
+import android.os.Build;
+import android.support.annotation.IntDef;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.Window;
+import android.view.WindowManager;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+
+/**
+ * @ClassName: StatusBarUtil
+ * @Description:
+ * @Author: dingchao
+ * @Date: 2018/11/8 15:15
+ */
+public class StatusBarUtil {
+    public final static int TYPE_MIUI = 0;
+    public final static int TYPE_FLYME = 1;
+    public final static int TYPE_M = 3;//6.0
+
+    @IntDef({TYPE_MIUI, TYPE_FLYME, TYPE_M})
+    @Retention(RetentionPolicy.SOURCE)
+    @interface ViewType {
+    }
+
+    /**
+     * 修改状态栏颜色,支持4.4以上版本
+     *
+     * @param colorId 颜色
+     */
+    public static void setStatusBarColor(Activity activity, int colorId) {
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
+            Window window = activity.getWindow();
+            window.setStatusBarColor(colorId);
+        } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
+            //使用SystemBarTintManager,需要先将状态栏设置为透明
+            setTranslucentStatus(activity);
+            SystemBarTintManager systemBarTintManager = new SystemBarTintManager(activity);
+            systemBarTintManager.setStatusBarTintEnabled(true);//显示状态栏
+            systemBarTintManager.setStatusBarTintColor(colorId);//设置状态栏颜色
+        }
+    }
+
+    /**
+     * 设置状态栏透明
+     */
+    @TargetApi(19)
+    public static void setTranslucentStatus(Activity activity) {
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
+            //5.x开始需要把颜色设置透明,否则导航栏会呈现系统默认的浅灰色
+            Window window = activity.getWindow();
+            View decorView = window.getDecorView();
+            //两个 flag 要结合使用,表示让应用的主体内容占用系统状态栏的空间
+            int option = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE;
+            decorView.setSystemUiVisibility(option);
+            window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
+            window.setStatusBarColor(Color.TRANSPARENT);
+            //导航栏颜色也可以正常设置
+            //window.setNavigationBarColor(Color.TRANSPARENT);
+        } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
+            Window window = activity.getWindow();
+            WindowManager.LayoutParams attributes = window.getAttributes();
+            int flagTranslucentStatus = WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS;
+            attributes.flags |= flagTranslucentStatus;
+            //int flagTranslucentNavigation = WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION; //attributes.flags |= flagTranslucentNavigation;
+            window.setAttributes(attributes);
+        }
+    }
+
+    /**
+     * 代码实现android:fitsSystemWindows
+     *
+     * @param activity
+     */
+    public static void setRootViewFitsSystemWindows(Activity activity, boolean fitSystemWindows) {
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
+            ViewGroup winContent = (ViewGroup) activity.findViewById(android.R.id.content);
+            if (winContent.getChildCount() > 0) {
+                ViewGroup rootView = (ViewGroup) winContent.getChildAt(0);
+                if (rootView != null) {
+                    rootView.setFitsSystemWindows(fitSystemWindows);
+                }
+            }
+        }
+    }
+
+    /**
+     * 设置状态栏深色浅色切换
+     */
+    public static boolean setStatusBarDarkTheme(Activity activity, boolean dark) {
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
+            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
+                setStatusBarFontIconDark(activity, TYPE_M, dark);
+            } else if (OSUtils.isMiui()) {
+                setStatusBarFontIconDark(activity, TYPE_MIUI, dark);
+            } else if (OSUtils.isFlyme()) {
+                setStatusBarFontIconDark(activity, TYPE_FLYME, dark);
+            } else {//其他情况
+                return false;
+            }
+            return true;
+        }
+        return false;
+    }
+
+    /**
+     * 设置 状态栏深色浅色切换
+     */
+    public static boolean setStatusBarFontIconDark(Activity activity, @ViewType int type, boolean dark) {
+        switch (type) {
+            case TYPE_MIUI:
+                return setMiuiUI(activity, dark);
+            case TYPE_FLYME:
+                return setFlymeUI(activity, dark);
+            case TYPE_M:
+            default:
+                return setCommonUI(activity, dark);
+        }
+    }
+
+    //设置6.0 状态栏深色浅色切换
+    public static boolean setCommonUI(Activity activity, boolean dark) {
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
+            View decorView = activity.getWindow().getDecorView();
+            if (decorView != null) {
+                int vis = decorView.getSystemUiVisibility();
+                if (dark) {
+                    vis |= View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR;
+                } else {
+                    vis &= ~View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR;
+                }
+                if (decorView.getSystemUiVisibility() != vis) {
+                    decorView.setSystemUiVisibility(vis);
+                }
+                return true;
+            }
+        }
+        return false;
+    }
+
+    //设置Flyme 状态栏深色浅色切换
+    public static boolean setFlymeUI(Activity activity, boolean dark) {
+        try {
+            Window window = activity.getWindow();
+            WindowManager.LayoutParams lp = window.getAttributes();
+            Field darkFlag = WindowManager.LayoutParams.class.getDeclaredField("MEIZU_FLAG_DARK_STATUS_BAR_ICON");
+            Field meizuFlags = WindowManager.LayoutParams.class.getDeclaredField("meizuFlags");
+            darkFlag.setAccessible(true);
+            meizuFlags.setAccessible(true);
+            int bit = darkFlag.getInt(null);
+            int value = meizuFlags.getInt(lp);
+            if (dark) {
+                value |= bit;
+            } else {
+                value &= ~bit;
+            }
+            meizuFlags.setInt(lp, value);
+            window.setAttributes(lp);
+            return true;
+        } catch (Exception e) {
+            e.printStackTrace();
+            return false;
+        }
+    }
+
+    //设置MIUI 状态栏深色浅色切换
+    public static boolean setMiuiUI(Activity activity, boolean dark) {
+        try {
+            Window window = activity.getWindow();
+            Class<?> clazz = activity.getWindow().getClass();
+            @SuppressLint("PrivateApi") Class<?> layoutParams = Class.forName("android.view.MiuiWindowManager$LayoutParams");
+            Field field = layoutParams.getField("EXTRA_FLAG_STATUS_BAR_DARK_MODE");
+            int darkModeFlag = field.getInt(layoutParams);
+            Method extraFlagField = clazz.getDeclaredMethod("setExtraFlags", int.class, int.class);
+            extraFlagField.setAccessible(true);
+            if (dark) {    //状态栏亮色且黑色字体.
+                extraFlagField.invoke(window, darkModeFlag, darkModeFlag);
+            } else {
+                extraFlagField.invoke(window, 0, darkModeFlag);
+            }
+            return true;
+        } catch (Exception e) {
+            e.printStackTrace();
+            return false;
+        }
+    }
+
+    //获取状态栏高度
+    public static int getStatusBarHeight(Context context) {
+        int result = 0;
+        int resourceId = context.getResources().getIdentifier("status_bar_height", "dimen", "android");
+        if (resourceId > 0) {
+            result = context.getResources().getDimensionPixelSize(resourceId);
+        }
+        return result;
+    }
+}
+

+ 557 - 0
app/src/main/java/com/up/upbmls/util/SystemBarTintManager.java

@@ -0,0 +1,557 @@
+package com.up.upbmls.util;
+
+/**
+ * @ClassName: SystemBarTintManager
+ * @Description:
+ * @Author: dingchao
+ * @Date: 2018/11/8 15:14
+ */
+
+import android.annotation.SuppressLint;
+import android.annotation.TargetApi;
+import android.app.Activity;
+import android.content.Context;
+import android.content.res.Configuration;
+import android.content.res.Resources;
+import android.content.res.TypedArray;
+import android.graphics.drawable.Drawable;
+import android.os.Build;
+import android.util.DisplayMetrics;
+import android.util.TypedValue;
+import android.view.Gravity;
+import android.view.View;
+import android.view.ViewConfiguration;
+import android.view.ViewGroup;
+import android.view.Window;
+import android.view.WindowManager;
+import android.widget.FrameLayout.LayoutParams;
+
+import java.lang.reflect.Method;
+
+/**
+ * Class to manage status and navigation bar tint effects when using KitKat
+ * translucent system UI modes.
+ *
+ */
+public class SystemBarTintManager {
+
+    static {
+        // Android allows a system property to override the presence of the navigation bar.
+        // Used by the emulator.
+        // See https://github.com/android/platform_frameworks_base/blob/master/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java#L1076
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
+            try {
+                Class c = Class.forName("android.os.SystemProperties");
+                Method m = c.getDeclaredMethod("get", String.class);
+                m.setAccessible(true);
+                sNavBarOverride = (String) m.invoke(null, "qemu.hw.mainkeys");
+            } catch (Throwable e) {
+                sNavBarOverride = null;
+            }
+        }
+    }
+
+
+    /**
+     * The default system bar tint color value.
+     */
+    public static final int DEFAULT_TINT_COLOR = 0x99000000;
+
+    private static String sNavBarOverride;
+
+    private final SystemBarConfig mConfig;
+    private boolean mStatusBarAvailable;
+    private boolean mNavBarAvailable;
+    private boolean mStatusBarTintEnabled;
+    private boolean mNavBarTintEnabled;
+    private View mStatusBarTintView;
+    private View mNavBarTintView;
+
+    /**
+     * Constructor. Call this in the host activity onCreate method after its
+     * content view has been set. You should always create new instances when
+     * the host activity is recreated.
+     *
+     * @param activity The host activity.
+     */
+    @SuppressLint("ResourceType")
+    @TargetApi(19)
+    public SystemBarTintManager(Activity activity) {
+
+        Window win = activity.getWindow();
+        ViewGroup decorViewGroup = (ViewGroup) win.getDecorView();
+
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
+            // check theme attrs
+            int[] attrs = {android.R.attr.windowTranslucentStatus,
+                    android.R.attr.windowTranslucentNavigation};
+            TypedArray a = activity.obtainStyledAttributes(attrs);
+            try {
+                mStatusBarAvailable = a.getBoolean(0, false);
+                mNavBarAvailable = a.getBoolean(1, false);
+            } finally {
+                a.recycle();
+            }
+
+            // check window flags
+            WindowManager.LayoutParams winParams = win.getAttributes();
+            int bits = WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS;
+            if ((winParams.flags & bits) != 0) {
+                mStatusBarAvailable = true;
+            }
+            bits = WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION;
+            if ((winParams.flags & bits) != 0) {
+                mNavBarAvailable = true;
+            }
+        }
+
+        mConfig = new SystemBarConfig(activity, mStatusBarAvailable, mNavBarAvailable);
+        // device might not have virtual navigation keys
+        if (!mConfig.hasNavigtionBar()) {
+            mNavBarAvailable = false;
+        }
+
+        if (mStatusBarAvailable) {
+            setupStatusBarView(activity, decorViewGroup);
+        }
+        if (mNavBarAvailable) {
+            setupNavBarView(activity, decorViewGroup);
+        }
+
+    }
+
+    /**
+     * Enable tinting of the system status bar.
+     *
+     * If the platform is running Jelly Bean or earlier, or translucent system
+     * UI modes have not been enabled in either the theme or via window flags,
+     * then this method does nothing.
+     *
+     * @param enabled True to enable tinting, false to disable it (default).
+     */
+    public void setStatusBarTintEnabled(boolean enabled) {
+        mStatusBarTintEnabled = enabled;
+        if (mStatusBarAvailable) {
+            mStatusBarTintView.setVisibility(enabled ? View.VISIBLE : View.GONE);
+        }
+    }
+
+    /**
+     * Enable tinting of the system navigation bar.
+     *
+     * If the platform does not have soft navigation keys, is running Jelly Bean
+     * or earlier, or translucent system UI modes have not been enabled in either
+     * the theme or via window flags, then this method does nothing.
+     *
+     * @param enabled True to enable tinting, false to disable it (default).
+     */
+    public void setNavigationBarTintEnabled(boolean enabled) {
+        mNavBarTintEnabled = enabled;
+        if (mNavBarAvailable) {
+            mNavBarTintView.setVisibility(enabled ? View.VISIBLE : View.GONE);
+        }
+    }
+
+    /**
+     * Apply the specified color tint to all system UI bars.
+     *
+     * @param color The color of the background tint.
+     */
+    public void setTintColor(int color) {
+        setStatusBarTintColor(color);
+        setNavigationBarTintColor(color);
+    }
+
+    /**
+     * Apply the specified drawable or color resource to all system UI bars.
+     *
+     * @param res The identifier of the resource.
+     */
+    public void setTintResource(int res) {
+        setStatusBarTintResource(res);
+        setNavigationBarTintResource(res);
+    }
+
+    /**
+     * Apply the specified drawable to all system UI bars.
+     *
+     * @param drawable The drawable to use as the background, or null to remove it.
+     */
+    public void setTintDrawable(Drawable drawable) {
+        setStatusBarTintDrawable(drawable);
+        setNavigationBarTintDrawable(drawable);
+    }
+
+    /**
+     * Apply the specified alpha to all system UI bars.
+     *
+     * @param alpha The alpha to use
+     */
+    public void setTintAlpha(float alpha) {
+        setStatusBarAlpha(alpha);
+        setNavigationBarAlpha(alpha);
+    }
+
+    /**
+     * Apply the specified color tint to the system status bar.
+     *
+     * @param color The color of the background tint.
+     */
+    public void setStatusBarTintColor(int color) {
+        if (mStatusBarAvailable) {
+            mStatusBarTintView.setBackgroundColor(color);
+        }
+    }
+
+    /**
+     * Apply the specified drawable or color resource to the system status bar.
+     *
+     * @param res The identifier of the resource.
+     */
+    public void setStatusBarTintResource(int res) {
+        if (mStatusBarAvailable) {
+            mStatusBarTintView.setBackgroundResource(res);
+        }
+    }
+
+    /**
+     * Apply the specified drawable to the system status bar.
+     *
+     * @param drawable The drawable to use as the background, or null to remove it.
+     */
+    @SuppressWarnings("deprecation")
+    public void setStatusBarTintDrawable(Drawable drawable) {
+        if (mStatusBarAvailable) {
+            mStatusBarTintView.setBackgroundDrawable(drawable);
+        }
+    }
+
+    /**
+     * Apply the specified alpha to the system status bar.
+     *
+     * @param alpha The alpha to use
+     */
+    @TargetApi(11)
+    public void setStatusBarAlpha(float alpha) {
+        if (mStatusBarAvailable && Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
+            mStatusBarTintView.setAlpha(alpha);
+        }
+    }
+
+    /**
+     * Apply the specified color tint to the system navigation bar.
+     *
+     * @param color The color of the background tint.
+     */
+    public void setNavigationBarTintColor(int color) {
+        if (mNavBarAvailable) {
+            mNavBarTintView.setBackgroundColor(color);
+        }
+    }
+
+    /**
+     * Apply the specified drawable or color resource to the system navigation bar.
+     *
+     * @param res The identifier of the resource.
+     */
+    public void setNavigationBarTintResource(int res) {
+        if (mNavBarAvailable) {
+            mNavBarTintView.setBackgroundResource(res);
+        }
+    }
+
+    /**
+     * Apply the specified drawable to the system navigation bar.
+     *
+     * @param drawable The drawable to use as the background, or null to remove it.
+     */
+    @SuppressWarnings("deprecation")
+    public void setNavigationBarTintDrawable(Drawable drawable) {
+        if (mNavBarAvailable) {
+            mNavBarTintView.setBackgroundDrawable(drawable);
+        }
+    }
+
+    /**
+     * Apply the specified alpha to the system navigation bar.
+     *
+     * @param alpha The alpha to use
+     */
+    @TargetApi(11)
+    public void setNavigationBarAlpha(float alpha) {
+        if (mNavBarAvailable && Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
+            mNavBarTintView.setAlpha(alpha);
+        }
+    }
+
+    /**
+     * Get the system bar configuration.
+     *
+     * @return The system bar configuration for the current device configuration.
+     */
+    public SystemBarConfig getConfig() {
+        return mConfig;
+    }
+
+    /**
+     * Is tinting enabled for the system status bar?
+     *
+     * @return True if enabled, False otherwise.
+     */
+    public boolean isStatusBarTintEnabled() {
+        return mStatusBarTintEnabled;
+    }
+
+    /**
+     * Is tinting enabled for the system navigation bar?
+     *
+     * @return True if enabled, False otherwise.
+     */
+    public boolean isNavBarTintEnabled() {
+        return mNavBarTintEnabled;
+    }
+
+    private void setupStatusBarView(Context context, ViewGroup decorViewGroup) {
+        mStatusBarTintView = new View(context);
+        LayoutParams params = new LayoutParams(LayoutParams.MATCH_PARENT, mConfig.getStatusBarHeight());
+        params.gravity = Gravity.TOP;
+        if (mNavBarAvailable && !mConfig.isNavigationAtBottom()) {
+            params.rightMargin = mConfig.getNavigationBarWidth();
+        }
+        mStatusBarTintView.setLayoutParams(params);
+        mStatusBarTintView.setBackgroundColor(DEFAULT_TINT_COLOR);
+        mStatusBarTintView.setVisibility(View.GONE);
+        decorViewGroup.addView(mStatusBarTintView);
+    }
+
+    private void setupNavBarView(Context context, ViewGroup decorViewGroup) {
+        mNavBarTintView = new View(context);
+        LayoutParams params;
+        if (mConfig.isNavigationAtBottom()) {
+            params = new LayoutParams(LayoutParams.MATCH_PARENT, mConfig.getNavigationBarHeight());
+            params.gravity = Gravity.BOTTOM;
+        } else {
+            params = new LayoutParams(mConfig.getNavigationBarWidth(), LayoutParams.MATCH_PARENT);
+            params.gravity = Gravity.RIGHT;
+        }
+        mNavBarTintView.setLayoutParams(params);
+        mNavBarTintView.setBackgroundColor(DEFAULT_TINT_COLOR);
+        mNavBarTintView.setVisibility(View.GONE);
+        decorViewGroup.addView(mNavBarTintView);
+    }
+
+    /**
+     * Class which describes system bar sizing and other characteristics for the current
+     * device configuration.
+     *
+     */
+    public static class SystemBarConfig {
+
+        private static final String STATUS_BAR_HEIGHT_RES_NAME = "status_bar_height";
+        private static final String NAV_BAR_HEIGHT_RES_NAME = "navigation_bar_height";
+        private static final String NAV_BAR_HEIGHT_LANDSCAPE_RES_NAME = "navigation_bar_height_landscape";
+        private static final String NAV_BAR_WIDTH_RES_NAME = "navigation_bar_width";
+        private static final String SHOW_NAV_BAR_RES_NAME = "config_showNavigationBar";
+
+        private final boolean mTranslucentStatusBar;
+        private final boolean mTranslucentNavBar;
+        private final int mStatusBarHeight;
+        private final int mActionBarHeight;
+        private final boolean mHasNavigationBar;
+        private final int mNavigationBarHeight;
+        private final int mNavigationBarWidth;
+        private final boolean mInPortrait;
+        private final float mSmallestWidthDp;
+
+        private SystemBarConfig(Activity activity, boolean translucentStatusBar, boolean traslucentNavBar) {
+            Resources res = activity.getResources();
+            mInPortrait = (res.getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT);
+            mSmallestWidthDp = getSmallestWidthDp(activity);
+            mStatusBarHeight = getInternalDimensionSize(res, STATUS_BAR_HEIGHT_RES_NAME);
+            mActionBarHeight = getActionBarHeight(activity);
+            mNavigationBarHeight = getNavigationBarHeight(activity);
+            mNavigationBarWidth = getNavigationBarWidth(activity);
+            mHasNavigationBar = (mNavigationBarHeight > 0);
+            mTranslucentStatusBar = translucentStatusBar;
+            mTranslucentNavBar = traslucentNavBar;
+        }
+
+        @TargetApi(14)
+        private int getActionBarHeight(Context context) {
+            int result = 0;
+            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
+                TypedValue tv = new TypedValue();
+                context.getTheme().resolveAttribute(android.R.attr.actionBarSize, tv, true);
+                result = TypedValue.complexToDimensionPixelSize(tv.data, context.getResources().getDisplayMetrics());
+            }
+            return result;
+        }
+
+        @TargetApi(14)
+        private int getNavigationBarHeight(Context context) {
+            Resources res = context.getResources();
+            int result = 0;
+            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
+                if (hasNavBar(context)) {
+                    String key;
+                    if (mInPortrait) {
+                        key = NAV_BAR_HEIGHT_RES_NAME;
+                    } else {
+                        key = NAV_BAR_HEIGHT_LANDSCAPE_RES_NAME;
+                    }
+                    return getInternalDimensionSize(res, key);
+                }
+            }
+            return result;
+        }
+
+        @TargetApi(14)
+        private int getNavigationBarWidth(Context context) {
+            Resources res = context.getResources();
+            int result = 0;
+            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
+                if (hasNavBar(context)) {
+                    return getInternalDimensionSize(res, NAV_BAR_WIDTH_RES_NAME);
+                }
+            }
+            return result;
+        }
+
+        @TargetApi(14)
+        private boolean hasNavBar(Context context) {
+            Resources res = context.getResources();
+            int resourceId = res.getIdentifier(SHOW_NAV_BAR_RES_NAME, "bool", "android");
+            if (resourceId != 0) {
+                boolean hasNav = res.getBoolean(resourceId);
+                // check override flag (see static block)
+                if ("1".equals(sNavBarOverride)) {
+                    hasNav = false;
+                } else if ("0".equals(sNavBarOverride)) {
+                    hasNav = true;
+                }
+                return hasNav;
+            } else { // fallback
+                return !ViewConfiguration.get(context).hasPermanentMenuKey();
+            }
+        }
+
+        private int getInternalDimensionSize(Resources res, String key) {
+            int result = 0;
+            int resourceId = res.getIdentifier(key, "dimen", "android");
+            if (resourceId > 0) {
+                result = res.getDimensionPixelSize(resourceId);
+            }
+            return result;
+        }
+
+        @SuppressLint("NewApi")
+        private float getSmallestWidthDp(Activity activity) {
+            DisplayMetrics metrics = new DisplayMetrics();
+            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
+                activity.getWindowManager().getDefaultDisplay().getRealMetrics(metrics);
+            } else {
+                // TODO this is not correct, but we don't really care pre-kitkat
+                activity.getWindowManager().getDefaultDisplay().getMetrics(metrics);
+            }
+            float widthDp = metrics.widthPixels / metrics.density;
+            float heightDp = metrics.heightPixels / metrics.density;
+            return Math.min(widthDp, heightDp);
+        }
+
+        /**
+         * Should a navigation bar appear at the bottom of the screen in the current
+         * device configuration? A navigation bar may appear on the right side of
+         * the screen in certain configurations.
+         *
+         * @return True if navigation should appear at the bottom of the screen, False otherwise.
+         */
+        public boolean isNavigationAtBottom() {
+            return (mSmallestWidthDp >= 600 || mInPortrait);
+        }
+
+        /**
+         * Get the height of the system status bar.
+         *
+         * @return The height of the status bar (in pixels).
+         */
+        public int getStatusBarHeight() {
+            return mStatusBarHeight;
+        }
+
+        /**
+         * Get the height of the action bar.
+         *
+         * @return The height of the action bar (in pixels).
+         */
+        public int getActionBarHeight() {
+            return mActionBarHeight;
+        }
+
+        /**
+         * Does this device have a system navigation bar?
+         *
+         * @return True if this device uses soft key navigation, False otherwise.
+         */
+        public boolean hasNavigtionBar() {
+            return mHasNavigationBar;
+        }
+
+        /**
+         * Get the height of the system navigation bar.
+         *
+         * @return The height of the navigation bar (in pixels). If the device does not have
+         * soft navigation keys, this will always return 0.
+         */
+        public int getNavigationBarHeight() {
+            return mNavigationBarHeight;
+        }
+
+        /**
+         * Get the width of the system navigation bar when it is placed vertically on the screen.
+         *
+         * @return The width of the navigation bar (in pixels). If the device does not have
+         * soft navigation keys, this will always return 0.
+         */
+        public int getNavigationBarWidth() {
+            return mNavigationBarWidth;
+        }
+
+        /**
+         * Get the layout inset for any system UI that appears at the top of the screen.
+         *
+         * @param withActionBar True to include the height of the action bar, False otherwise.
+         * @return The layout inset (in pixels).
+         */
+        public int getPixelInsetTop(boolean withActionBar) {
+            return (mTranslucentStatusBar ? mStatusBarHeight : 0) + (withActionBar ? mActionBarHeight : 0);
+        }
+
+        /**
+         * Get the layout inset for any system UI that appears at the bottom of the screen.
+         *
+         * @return The layout inset (in pixels).
+         */
+        public int getPixelInsetBottom() {
+            if (mTranslucentNavBar && isNavigationAtBottom()) {
+                return mNavigationBarHeight;
+            } else {
+                return 0;
+            }
+        }
+
+        /**
+         * Get the layout inset for any system UI that appears at the right of the screen.
+         *
+         * @return The layout inset (in pixels).
+         */
+        public int getPixelInsetRight() {
+            if (mTranslucentNavBar && !isNavigationAtBottom()) {
+                return mNavigationBarWidth;
+            } else {
+                return 0;
+            }
+        }
+
+    }
+
+}

+ 404 - 0
app/src/main/java/com/up/upbmls/util/Tool.java

@@ -0,0 +1,404 @@
+package com.up.upbmls.util;
+
+import android.app.Activity;
+import android.content.Context;
+import android.content.SharedPreferences;
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager;
+import android.graphics.Bitmap;
+import android.graphics.Matrix;
+import android.os.Build;
+import android.util.DisplayMetrics;
+import android.util.Log;
+import android.view.View;
+import android.view.Window;
+import android.view.inputmethod.InputMethodManager;
+
+import com.alibaba.fastjson.JSON;
+
+import java.io.File;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * @ClassName: Tool
+ * @Description: 杂项Util工具类
+ * @Author: dingchao
+ * @Date: 2018/8/24 17:09
+ */
+public class Tool {
+    /**
+     * 判断文件是否存在方法
+     *
+     * @param icon_path
+     * @return
+     */
+    public static boolean isFileExist(String icon_path) {
+        File file = new File(icon_path);
+        if (file.exists()) {
+            return true;
+        }
+        return false;
+    }
+
+
+    /**
+     * 获取屏幕的宽度
+     */
+    public final static int getWindowsWidth(Activity activity) {
+        DisplayMetrics dm = new DisplayMetrics();
+        activity.getWindowManager().getDefaultDisplay().getMetrics(dm);
+        return dm.widthPixels;
+    }
+
+    /**
+     * 获取屏幕的高度
+     */
+
+    public final static int getWindowsHeight(Activity activity) {
+        DisplayMetrics dm = new DisplayMetrics();
+        activity.getWindowManager().getDefaultDisplay().getMetrics(dm);
+        return dm.heightPixels;
+    }
+
+
+    // 验证是否是手机号
+    public static boolean isPhoneNum(String str) {
+        Pattern p = Pattern
+                .compile("^((13[0-9])|(14[0-9])|(15[0-9])|(16[0-9])|(17[0-9])|(18[0-9])|(19[0-9])|(15[^4,\\D])|(18[0,5-9]))\\d{8}$");
+
+        Matcher m = p.matcher(str);
+
+        return m.matches();
+    }
+
+ public static boolean isPhoneNum3(String str) {
+        Pattern p = Pattern
+                .compile("\\d{2,5}\\d{7,8}");
+
+        Matcher m = p.matcher(str);
+
+        return m.matches();
+    }
+
+    /**
+     * 阿里正则电话号码
+     * @param input
+     * @return
+     */
+    public static boolean isTel(final CharSequence input) {
+        return isMatch("^0\\d{2,3}[- ]?\\d{7,8}", input);
+    }
+    //手机号^((13[0-9])|(14[5,7])|(15[0-3,5-9])|(16[6])|(17[0,1,3,5-8])|(18[0-9])|(19[1,8,9]))\\d{8}$
+    public static boolean isMobileExact(final CharSequence input) {
+        return isMatch("^((13[0-9])|(14[5,7])|(15[0-3,5-9])|(16[6])|(17[0,1,3,5-8])|(18[0-9])|(19[1,8,9]))\\d{8}$", input);
+    }
+
+
+    public static boolean isMatch(final String regex, final CharSequence input) {
+        return input != null && input.length() > 0 && Pattern.matches(regex, input);
+    }
+
+
+    //座机号
+    public static boolean isPhone(final String str) {
+        Pattern p1 = null, p2 = null;
+        Matcher m = null;
+        boolean b = false;
+        p1 = Pattern.compile("^[0][1-9]{2,3}[0-9]{5,10}$");  // 验证带区号的
+        p2 = Pattern.compile("^[1-9]{1}[0-9]{5,8}$");         // 验证没有区号的
+        if (str.length() > 9) {
+            m = p1.matcher(str);
+            b = m.matches();
+        } else {
+            m = p2.matcher(str);
+            b = m.matches();
+        }
+        return b;
+    }
+//    public static void saveUser(Context context, UserTokenInfoEntity userEntity) {
+//        SharedPreferences sp = context.getSharedPreferences("MPB_USER", Activity.MODE_PRIVATE);
+//        String jsonStr = JSON.toJSONString(userEntity); //将对象转换成Json
+//        SharedPreferences.Editor editor;//获取编辑器
+//        editor = sp.edit();
+//        editor.putString("KEY_USER_DATA", jsonStr);
+//        editor.commit(); //提交
+//    }
+
+
+    /*处理手机号中心四个星格式方法*/
+    public static String FormatPhone(String str, String updateText, int start, int end) {
+        //处理用户手机号,中间四位数*表示
+        StringBuilder sb = new StringBuilder(str);
+        sb.replace(start, end, updateText);
+        return sb.toString();
+    }
+
+
+    /*校验银行卡号是否符合规则*/
+
+    /**
+     * 匹配Luhn算法:可用于检测银行卡卡号
+     *
+     * @param cardNo * @return
+     */
+    public static boolean matchLuhn(String cardNo) {
+        int[] cardNoArr = new int[cardNo.length()];
+        for (int i = 0; i < cardNo.length(); i++) {
+            cardNoArr[i] = Integer.valueOf(String.valueOf(cardNo.charAt(i)));
+        }
+        for (int i = cardNoArr.length - 2; i >= 0; i -= 2) {
+            cardNoArr[i] <<= 1;
+            cardNoArr[i] = cardNoArr[i] / 10 + cardNoArr[i] % 10;
+        }
+        int sum = 0;
+        for (int i = 0; i < cardNoArr.length; i++) {
+            sum += cardNoArr[i];
+        }
+        return sum % 10 == 0;
+    }
+
+
+    /*软键盘管理*/
+    public static void hideKeyboard(Activity context) {
+        InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
+        if (imm.isActive()) {
+            if (context.getCurrentFocus().getWindowToken() != null) {
+                imm.hideSoftInputFromWindow(context.getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
+            }
+        }
+    }
+
+    public static void hideKeyboard(Context context,View view) {
+        InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
+        if (imm.isActive()) {
+            if (view.getWindowToken() != null) {
+                imm.hideSoftInputFromWindow(view.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
+            }
+        }
+    }
+    /**
+     * 设置缩略图
+     *
+     * @param bitMap
+     * @param needRecycle
+     * @return
+     */
+    public static Bitmap createBitmapThumbnail(Bitmap bitMap, boolean needRecycle) {
+        int width = bitMap.getWidth();
+        int height = bitMap.getHeight();
+        // 设置想要的大小
+        int newWidth = 80;
+        int newHeight = 80;
+        // 计算缩放比例
+        float scaleWidth = ((float) newWidth) / width;
+        float scaleHeight = ((float) newHeight) / height;
+        // 取得想要缩放的matrix参数
+        Matrix matrix = new Matrix();
+        matrix.postScale(scaleWidth, scaleHeight);
+        // 得到新的图片
+        Bitmap newBitMap = Bitmap.createBitmap(bitMap, 0, 0, width, height,
+                matrix, true);
+        if (needRecycle) bitMap.recycle();
+        return newBitMap;
+    }
+
+
+    /**
+     * 我国公民的身份证号码特点如下
+     * 1.长度18位
+     * 2.第1-17号只能为数字
+     * 3.第18位只能是数字或者x
+     * 4.第7-14位表示特有人的年月日信息
+     * 请实现身份证号码合法性判断的函数,函数返回值:
+     * 1.如果身份证合法返回0
+     * 2.如果身份证长度不合法返回1
+     * 3.如果第1-17位含有非数字的字符返回2
+     * 4.如果第18位不是数字也不是x返回3
+     * 5.如果身份证号的出生日期非法返回4
+     *
+     * @since 0.0.1
+     */
+    public static int validator(String id) {
+        String str = "[1-9]{2}[0-9]{4}(19|20)[0-9]{2}"
+                + "((0[1-9]{1})|(1[1-2]{1}))((0[1-9]{1})|([1-2]{1}[0-9]{1}|(3[0-1]{1})))"
+                + "[0-9]{3}[0-9X]{1}";
+        Pattern pattern = Pattern.compile(str);
+        return pattern.matcher(id).matches() ? 0 : 1;
+    }
+
+    /**
+     * 退出程序
+     */
+    public static void exitApp() {
+        android.os.Process.killProcess(android.os.Process.myPid());
+        System.exit(0);
+    }
+
+
+    /* 获取本地软件版本号​
+     */
+    public static int getLocalVersion(Context ctx) {
+        int localVersion = 0;
+        try {
+            PackageInfo packageInfo = ctx.getApplicationContext()
+                    .getPackageManager()
+                    .getPackageInfo(ctx.getPackageName(), 0);
+            localVersion = packageInfo.versionCode;
+            Log.d("TAG", "当前版本号:" + localVersion);
+        } catch (PackageManager.NameNotFoundException e) {
+            e.printStackTrace();
+        }
+        return localVersion;
+    }
+
+    public static String getLocalVersionName(Context ctx) {
+        String localVersion = "";
+        try {
+            PackageInfo packageInfo = ctx.getApplicationContext()
+                    .getPackageManager()
+                    .getPackageInfo(ctx.getPackageName(), 0);
+            localVersion = packageInfo.versionName;
+            Log.d("TAG", "当前版本号:" + localVersion);
+        } catch (PackageManager.NameNotFoundException e) {
+            e.printStackTrace();
+        }
+        return localVersion;
+    }
+
+//
+//    //        SharedPreferences存储用户对象
+//    public static void saveUser(Context context, UserTokenInfoEntity userEntity) {
+//        SharedPreferences sp = context.getSharedPreferences("ZPB_USER", Activity.MODE_PRIVATE);//创建sp对象,如果有key为"SP_PEOPLE"的sp就取出,否则就创建一个此key的sp对象
+//        String jsonStr = JSON.toJSONString(userEntity); //将对象转换成Json
+//        Log.e("login", "数据库中保存的用户json:" + jsonStr);
+//        SharedPreferences.Editor editor;//获取编辑器
+//        editor = sp.edit();
+//        editor.putString("KEY_USER_DATA", jsonStr); //存入json串
+//        editor.commit(); //提交
+//    }
+//
+//    //SharedPreferences获取用户对象
+//    public static UserTokenInfoEntity getUser(Context context) {
+//        UserTokenInfoEntity userEntity = null;
+//        SharedPreferences sp = context.getSharedPreferences("ZPB_USER", Activity.MODE_PRIVATE);//创建sp对象,如果有key为"SP_PEOPLE"的sp就取出
+//        String peopleJson = sp.getString("KEY_USER_DATA", "");  //取出key为"KEY_PEOPLE_DATA"的值,如果值为空,则将第二个参数作为默认值赋值
+//        Log.e("login", "数据库中取出的用户json:" + peopleJson);
+//        if (peopleJson != "")  //防空判断
+//        {
+//            userEntity = JSON.parseObject(peopleJson, UserTokenInfoEntity.class); //将json字符串转换成 people对象
+//        }
+//        return userEntity;
+//    }
+//
+//
+//    public static void saveMsg(Context context, MsgTypeEntity userAddress) {
+//        SharedPreferences sp = context.getSharedPreferences("ZPB_USER_MSG", Activity.MODE_PRIVATE);//创建sp对象,如果有key为"SP_PEOPLE"的sp就取出,否则就创建一个此key的sp对象
+//        String jsonStr = JSON.toJSONString(userAddress); //将对象转换成Json
+//        Log.e("login", "数据库中保存的用户地址json:" + jsonStr);
+//        SharedPreferences.Editor editor;//获取编辑器
+//        editor = sp.edit();
+//        editor.putString("KEY_USER_DATA_MSG", jsonStr); //存入json串
+//        editor.commit(); //提交
+//    }
+//
+//
+//    //SharedPreferences获取用户对象
+//    public static MsgTypeEntity getUserMsg(Context context) {
+//        MsgTypeEntity userAddress = null;
+//        SharedPreferences sp = context.getSharedPreferences("ZPB_USER_MSG", Activity.MODE_PRIVATE);//创建sp对象,如果有key为"SP_PEOPLE"的sp就取出
+//        String peopleJson = sp.getString("KEY_USER_DATA_MSG", "");  //取出key为"KEY_PEOPLE_DATA"的值,如果值为空,则将第二个参数作为默认值赋值
+//        Log.e("login", "数据库中取出的用户地址json:" + peopleJson);
+//        if (peopleJson != "")  //防空判断
+//        {
+//            userAddress = JSON.parseObject(peopleJson, MsgTypeEntity.class); //将json字符串转换成 people对象
+//        }
+//        return userAddress;
+//    }
+//
+//
+//    //    SharedPreferences存储用户对象
+//    public static void saveAddress(Context context, UserAddress userAddress) {
+//        SharedPreferences sp = context.getSharedPreferences("ZPB_USER_ADDRESS", Activity.MODE_PRIVATE);//创建sp对象,如果有key为"SP_PEOPLE"的sp就取出,否则就创建一个此key的sp对象
+//        String jsonStr = JSON.toJSONString(userAddress); //将对象转换成Json
+//        Log.e("login", "数据库中保存的用户地址json:" + jsonStr);
+//        SharedPreferences.Editor editor;//获取编辑器
+//        editor = sp.edit();
+//        editor.putString("KEY_USER_DATA_ADDRESS", jsonStr); //存入json串
+//        editor.commit(); //提交
+//    }
+//
+//
+//    //SharedPreferences获取用户对象
+//    public static UserAddress getUserAddress(Context context) {
+//        UserAddress userAddress = null;
+//        SharedPreferences sp = context.getSharedPreferences("ZPB_USER_ADDRESS", Activity.MODE_PRIVATE);//创建sp对象,如果有key为"SP_PEOPLE"的sp就取出
+//        String peopleJson = sp.getString("KEY_USER_DATA_ADDRESS", "");  //取出key为"KEY_PEOPLE_DATA"的值,如果值为空,则将第二个参数作为默认值赋值
+//        Log.e("login", "数据库中取出的用户地址json:" + peopleJson);
+//        if (peopleJson != "")  //防空判断
+//        {
+//            userAddress = JSON.parseObject(peopleJson, UserAddress.class); //将json字符串转换成 people对象
+//        }
+//        return userAddress;
+//    }
+
+
+    //SharedPreferences删除清空用户对象
+    public static String deleteUser(Context context) {
+        SharedPreferences sp = context.getSharedPreferences("ZPB_USER", Activity.MODE_PRIVATE);//创建sp对象,如果有key为"SP_PEOPLE"的sp就取出
+        SharedPreferences.Editor editor = sp.edit();
+        editor.clear();
+        editor.commit();
+        Log.e("userdel", "userdel:清除用户成功");
+        return "退出登录操作成功";
+    }
+
+    public static boolean isEmail(String string) {
+        if (string == null) return false;
+        String regEx1 = "^([a-z0-9A-Z]+[-|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}$";
+        Pattern p;
+        Matcher m;
+        p = Pattern.compile(regEx1);
+        m = p.matcher(string);
+        if (m.matches()) return true;
+        else return false;
+    }
+
+
+    /**
+     * 180115 隐藏 魅族、Nexus、华为等底部的虚拟导航按键,避免遮挡内容
+     *
+     * @param activity 需要隐藏底部导航按键的Activity
+     */
+    public static void hideBottomUIMenu(Activity activity) {
+        //隐藏虚拟按键,并且全屏
+        if (Build.VERSION.SDK_INT < 19) { // lower api
+            View v = activity.getWindow().getDecorView();
+            v.setSystemUiVisibility(View.GONE);
+        } else if (Build.VERSION.SDK_INT >= 19) {
+            View decorView = activity.getWindow().getDecorView();
+            int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY | View
+                    .SYSTEM_UI_FLAG_FULLSCREEN;
+            decorView.setSystemUiVisibility(uiOptions);
+        }
+    }
+
+    public static void solveNavigationBar(Window window) {
+
+        //保持布局状态
+        int uiOptions = View.SYSTEM_UI_FLAG_LAYOUT_STABLE |
+                //布局位于状态栏下方
+                View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION |
+                //全屏
+                View.SYSTEM_UI_FLAG_FULLSCREEN |
+                //隐藏导航栏
+                View.SYSTEM_UI_FLAG_HIDE_NAVIGATION |
+                View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN;
+        if (Build.VERSION.SDK_INT >= 19) {
+            uiOptions |= 0x00001000;
+        } else {
+            uiOptions |= View.SYSTEM_UI_FLAG_LOW_PROFILE;
+        }
+        window.getDecorView().setSystemUiVisibility(uiOptions);
+    }
+}

+ 78 - 0
app/src/main/java/com/up/upbmls/util/UnCeHandler.java

@@ -0,0 +1,78 @@
+package com.up.upbmls.util;
+
+import android.annotation.SuppressLint;
+import android.app.AlarmManager;
+import android.app.PendingIntent;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Looper;
+import android.util.Log;
+import android.widget.Toast;
+
+import com.up.upbmls.MainActivity;
+import com.up.upbmls.base.BaseApplication;
+
+
+/**
+ * @ClassName: UnCeHandler
+ * @Description:程序异常退出工具类
+ * @Author: dingchao
+ * @Date: 2019/4/2 13:46
+ */
+    public class UnCeHandler implements Thread.UncaughtExceptionHandler {
+        private Thread.UncaughtExceptionHandler mDefaultHandler;
+        public static final String TAG = "CatchExcep";
+        BaseApplication application;
+
+        public UnCeHandler(BaseApplication application){
+            //获取系统默认的UncaughtException处理器
+            mDefaultHandler = Thread.getDefaultUncaughtExceptionHandler();
+            this.application = application;
+        }
+
+        @Override
+        public void uncaughtException(Thread thread, Throwable ex) {
+            if(!handleException(ex) && mDefaultHandler != null){
+                //如果用户没有处理则让系统默认的异常处理器来处理
+                mDefaultHandler.uncaughtException(thread, ex);
+            }else{
+                try{
+                    Thread.sleep(2000);
+                }catch (InterruptedException e){
+                    Log.e(TAG, "error : ", e);
+                }
+                Intent intent = new Intent(application.getApplicationContext(), MainActivity.class);
+                @SuppressLint("WrongConstant") PendingIntent restartIntent = PendingIntent.getActivity(
+                        application.getApplicationContext(), 0, intent, Intent.FLAG_ACTIVITY_NEW_TASK);
+                //退出程序
+                AlarmManager mgr = (AlarmManager)application.getSystemService(Context.ALARM_SERVICE);
+                mgr.set(AlarmManager.RTC, System.currentTimeMillis() + 1000,
+                        restartIntent); // 1秒钟后重启应用
+                Tool.exitApp();
+//                application.finishActivity();
+            }
+        }
+
+        /**
+         * 自定义错误处理,收集错误信息 发送错误报告等操作均在此完成.
+         *
+         * @param ex
+         * @return true:如果处理了该异常信息;否则没有处理返回false.
+         */
+        private boolean handleException(Throwable ex) {
+            if (ex == null) {
+                return false;
+            }
+            //使用Toast来显示异常信息
+            new Thread(){
+                @Override
+                public void run() {
+                    Looper.prepare();
+                    Toast.makeText(application.getApplicationContext(), "很抱歉,程序出现异常,即将退出.",Toast.LENGTH_SHORT).show();
+//                    Tool.exitApp();
+                    Looper.loop();
+                }
+            }.start();
+            return true;
+        }
+    }

+ 10 - 0
app/src/main/java/com/up/upbmls/view/View.java

@@ -0,0 +1,10 @@
+package com.up.upbmls.view;
+
+/**
+ * @ClassName: View
+ * @Description:
+ * @Author: dingchao
+ * @Date: 2019/7/9 15:57
+ */
+public class View {
+}

+ 3 - 0
app/src/main/res/values/colors.xml

@@ -3,4 +3,7 @@
     <color name="colorPrimary">#3F51B5</color>
     <color name="colorPrimaryDark">#303F9F</color>
     <color name="colorAccent">#FF4081</color>
+
+
+    <color name="color_white">#FFFFFF</color>
 </resources>

+ 24 - 2
app/src/main/res/values/styles.xml

@@ -1,11 +1,33 @@
 <resources>
 
+
     <!-- Base application theme. -->
-    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
+    <style name="AppTheme" parent="Base.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>
+        <item name="colorAccent">@color/colorPrimary</item>
+        <!--设置无标题-->
+        <item name="windowNoTitle">true</item>
+        <item name="android:windowActionBar">false</item>
+
+    </style>
+
+    <style name="AppTheme.TranslucentStatus">
+        <item name="android:windowTranslucentStatus">true</item>
     </style>
 
+    <style name="AppTheme2" 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/colorPrimary</item>
+        <!--设置无标题-->
+        <item name="windowNoTitle">true</item>
+        <item name="android:windowActionBar">false</item>
+        <!--设置短暂白屏-->
+        <!--<item name="android:windowIsTranslucent">true</item>-->
+        <item name="android:windowBackground">@android:color/transparent</item>
+        <!--<item name="android:windowBackground"></item>--><!--可以设置图片-->
+    </style>
 </resources>

+ 19 - 6
build.gradle

@@ -1,15 +1,19 @@
 // Top-level build file where you can add configuration options common to all sub-projects/modules.
 
 buildscript {
-    
+
     repositories {
         google()
-        jcenter()
+        //阿里镜像
+        maven{ url 'http://maven.aliyun.com/nexus/content/groups/public/'}
+//        jcenter()
+        maven { url 'https://dl.bintray.com/umsdk/release' }
     }
     dependencies {
         classpath 'com.android.tools.build:gradle:3.1.2'
-        
-
+//        classpath 'com.mob.sdk:MobSDK:+'
+        // 注册MobSDK
+        classpath "com.mob.sdk:MobSDK:2018.0319.1724"
         // NOTE: Do not place your application dependencies here; they belong
         // in the individual module build.gradle files
     }
@@ -17,11 +21,20 @@ buildscript {
 
 allprojects {
     repositories {
+//        jcenter()
+        //阿里镜像
+        maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
+        maven { url "https://jitpack.io" }
+        mavenCentral()
+        maven { url 'https://dl.bintray.com/umsdk/release' }
         google()
-        jcenter()
+        // 添加下面的内容
+        flatDir {
+            dirs 'libs'
+        }
     }
 }
 
 task clean(type: Delete) {
     delete rootProject.buildDir
-}
+}

+ 0 - 0
settings.gradle


Some files were not shown because too many files changed in this diff