Browse Source

Merge branch 'developer' of https://gitlab.com/Arisono/SkWeiChat-Baidu into feature

Arison 7 years ago
parent
commit
4ac925cff3
77 changed files with 2780 additions and 507 deletions
  1. 1 74
      WeiChat/build.gradle
  2. 226 9
      WeiChat/proguard-rules.pro
  3. 13 11
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/OAActivity.java
  4. 1 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/me/MeFragment.java
  5. 3 3
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/message/MessageFragment.java
  6. 1 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/platform/task/TaskActivity.java
  7. BIN
      WeiChat/src/main/res/drawable-xhdpi/oa_next.png
  8. 28 4
      WeiChat/src/main/res/layout/activity_book_add.xml
  9. 28 8
      WeiChat/src/main/res/layout/activity_business_add.xml
  10. 103 77
      WeiChat/src/main/res/layout/activity_expense_reimbursement.xml
  11. 1 3
      WeiChat/src/main/res/layout/activity_subscription2.xml
  12. 5 7
      WeiChat/src/main/res/layout/fragment_me.xml
  13. 11 9
      WeiChat/src/main/res/layout/item_subscription_first.xml
  14. 10 8
      WeiChat/src/main/res/layout/item_subscription_more.xml
  15. 1 0
      WeiChat/src/main/res/layout/listview_item_header.xml
  16. 0 32
      WeiChat/src/main/res/layout/recycler_empty_view.xml
  17. 4 5
      app_core/common/src/main/java/com/core/app/MyApplication.java
  18. 1 1
      app_core/common/src/main/java/com/core/utils/helper/AvatarHelper.java
  19. 1 1
      app_core/common/src/main/java/com/core/widget/crouton/Crouton.java
  20. BIN
      app_core/common/src/main/res/drawable-hdpi/avatar_round.png
  21. BIN
      app_core/common/src/main/res/drawable-hdpi/bg_me_top.png
  22. BIN
      app_core/common/src/main/res/drawable-hdpi/changyongyu.png
  23. BIN
      app_core/common/src/main/res/drawable-hdpi/common_toolbar_me_bg.png
  24. BIN
      app_core/common/src/main/res/drawable-xhdpi/avatar_round.png
  25. BIN
      app_core/common/src/main/res/drawable-xhdpi/bg_me_top.png
  26. BIN
      app_core/common/src/main/res/drawable-xhdpi/changyongyu.png
  27. BIN
      app_core/common/src/main/res/drawable-xhdpi/common_toolbar_me_bg.png
  28. BIN
      app_core/common/src/main/res/drawable-xhdpi/oa_next.png
  29. BIN
      app_core/common/src/main/res/drawable-xxhdpi/avatar_round.png
  30. BIN
      app_core/common/src/main/res/drawable-xxhdpi/bg_me_top.png
  31. BIN
      app_core/common/src/main/res/drawable-xxhdpi/changyongyu.png
  32. BIN
      app_core/common/src/main/res/drawable-xxhdpi/common_toolbar_me_bg.png
  33. 2 2
      app_core/common/src/main/res/drawable/ic_oa_list.xml
  34. 4 0
      app_core/common/src/main/res/drawable/oa_next.xml
  35. 2 2
      app_core/common/src/main/res/drawable/shape_process_linear.xml
  36. 36 5
      app_core/common/src/main/res/layout/act_taskerp_add.xml
  37. 1 0
      app_core/common/src/main/res/layout/activity_approval.xml
  38. 4 8
      app_core/common/src/main/res/layout/activity_subscription2.xml
  39. 1 1
      app_core/common/src/main/res/layout/item_approval_node.xml
  40. 11 9
      app_core/common/src/main/res/layout/item_subscription_first.xml
  41. 10 8
      app_core/common/src/main/res/layout/item_subscription_more.xml
  42. 0 5
      app_core/common/src/main/res/layout/layout_menu_person_info.xml
  43. 24 26
      app_core/common/src/main/res/layout/recycler_empty_view.xml
  44. 1 1
      app_core/common/src/main/res/values/colors.xml
  45. 224 15
      app_modular/appbooking/proguard-rules.pro
  46. 40 6
      app_modular/appbooking/src/main/res/layout/activity_bbooking_add.xml
  47. 225 16
      app_modular/appcontact/proguard-rules.pro
  48. 1 1
      app_modular/appcontact/src/main/java/com/uas/appcontact/adapter/FriendSortAdapter.java
  49. 224 15
      app_modular/applogin/proguard-rules.pro
  50. 7 0
      app_modular/applogin/src/main/res/drawable/shape_edittext_white_cursor.xml
  51. 4 2
      app_modular/applogin/src/main/res/layout/activity_login.xml
  52. 225 16
      app_modular/appme/proguard-rules.pro
  53. 225 16
      app_modular/appmessages/proguard-rules.pro
  54. 2 0
      app_modular/appmessages/src/main/java/com/modular/appmessages/activity/ApprovalActivity.java
  55. 16 1
      app_modular/appmessages/src/main/java/com/modular/appmessages/activity/ApprovalNewListActivity.java
  56. 11 0
      app_modular/appmessages/src/main/java/com/modular/appmessages/activity/RealTimeFormActivity.java
  57. 3 2
      app_modular/appmessages/src/main/java/com/modular/appmessages/adapter/ApprovalAdapter.java
  58. 12 2
      app_modular/appmessages/src/main/java/com/modular/appmessages/widget/SignRefreshLayout.java
  59. 37 12
      app_modular/appmessages/src/main/res/layout/activity_real_time_form.xml
  60. 227 10
      app_modular/appmoments/proguard-rules.pro
  61. 225 16
      app_modular/apptasks/proguard-rules.pro
  62. 225 16
      app_modular/apputils/proguard-rules.pro
  63. 55 0
      app_modular/apputils/src/main/java/com/modular/apputils/adapter/LinearItemDecoration.java
  64. 1 2
      app_modular/apputils/src/main/java/com/modular/apputils/utils/SignUtils.java
  65. 2 1
      app_modular/apputils/src/main/java/com/modular/apputils/widget/MenuVoiceSearchView.java
  66. 1 1
      app_modular/apputils/src/main/res/drawable/radian_hollow_white_bg.xml
  67. 2 1
      app_modular/apputils/src/main/res/layout/action_device_cycle_count.xml
  68. 5 4
      app_modular/apputils/src/main/res/layout/item_approval_list.xml
  69. 6 8
      app_modular/apputils/src/main/res/layout/menu_seach_include.xml
  70. 1 0
      app_modular/apputils/src/main/res/layout/simply_refresh_recyclerview.xml
  71. 225 16
      app_modular/appworks/proguard-rules.pro
  72. 1 2
      app_modular/appworks/src/main/java/com/uas/appworks/CRM/erp/activity/DeviceDataFormAddActivity.java
  73. 2 1
      app_modular/appworks/src/main/java/com/uas/appworks/OA/erp/activity/form/DataFormDetailActivity.java
  74. 2 1
      app_modular/appworks/src/main/java/com/uas/appworks/OA/erp/activity/form/TravelDataFormDetailActivity.java
  75. 8 1
      app_modular/appworks/src/main/java/com/uas/appworks/OA/erp/adapter/WorkLogsAdapter.java
  76. 1 1
      app_modular/appworks/src/main/java/com/uas/appworks/OA/erp/utils/AutoErpSigninUitl.java
  77. 1 1
      build.gradle

+ 1 - 74
WeiChat/build.gradle

@@ -1,7 +1,6 @@
 apply plugin: 'com.android.application'
 apply plugin: 'com.getkeepsafe.dexcount'
 apply plugin: 'me.tatarka.retrolambda'
-apply plugin: 'AndResGuard'
 
 //定义时间
 def releaseTime() {
@@ -101,7 +100,7 @@ android {
     buildTypes {
         release {
             minifyEnabled false
-            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
+            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
             signingConfig signingConfigs.config
         }
         debug {
@@ -147,78 +146,6 @@ android {
     }*/
 }
 
-andResGuard {
-    // mappingFile = file("./resource_mapping.txt")
-    mappingFile = null
-    use7zip = true
-    useSign = true
-    // 打开这个开关,会keep住所有资源的原始路径,只混淆资源的名字
-    keepRoot = false
-    whiteList = [
-            // for your icon
-            "R.drawable.uuu",
-            // for fabric
-            "R.string.com.crashlytics.*",
-            // for google-services
-            "R.string.google_app_id",
-            "R.string.gcm_defaultSenderId",
-            "R.string.default_web_client_id",
-            "R.string.ga_trackingId",
-            "R.string.firebase_database_url",
-            "R.string.google_api_key",
-            "R.string.google_crash_reporting_api_key",
-            "R.dimen.rc_*",
-            //for umeng
-            "R.anim.umeng*",
-            "R.string.umeng*",
-            "R.string.UM*",
-            "R.string.tb_*",
-            "R.layout.umeng*",
-            "R.layout.socialize_*",
-            "R.layout.*messager*",
-            "R.layout.tb_*",
-            "R.color.umeng*",
-            "R.color.tb_*",
-            "R.style.*UM*",
-            "R.style.rc_*",
-            "R.style.umeng*",
-            "R.drawable.umeng*",
-            "R.drawable.tb_*",
-            "R.drawable.sina*",
-            "R.drawable.qq_*",
-            "R.drawable.tb_*",
-            "R.id.umeng*",
-            "R.id.*messager*",
-            "R.id.rc_*",
-            "R.id.progress_bar_parent",
-            "R.id.socialize_*",
-            "R.id.webView",
-            //for jpush
-            "R.drawable.jpush_notification_icon"
-    ]
-    compressFilePattern = [
-            "*.png",
-            "*.jpg",
-            "*.jpeg",
-            "*.gif",
-    ]
-    sevenzip {
-        artifact = 'com.tencent.mm:SevenZip:1.2.13'
-        //path = "/usr/local/bin/7za"
-    }
-
-    /**
-     * 可选: 如果不设置则会默认覆盖assemble输出的apk
-     **/
-    // finalApkBackupPath = "${project.rootDir}/final.apk"
-
-    /**
-     * 可选: 指定v1签名时生成jar文件的摘要算法
-     * 默认值为“SHA-1”
-     **/
-    // digestalg = "SHA-256"
-}
-
 dependencies {
     compile fileTree(include: ['*.jar'], dir: 'libs')
     testCompile deps.junit

+ 226 - 9
WeiChat/proguard-rules.pro

@@ -3,15 +3,232 @@
 # in C:\Android\sdk/tools/proguard/proguard-android.txt
 # You can edit the include path and order by changing the proguardFiles
 # directive in build.gradle.
+
+###############################
+#
+# 公共部分(固定不变)
 #
-# For more details, see
-#   http://developer.android.com/guide/developing/tools/proguard.html
+###############################
+#1.基本指令区
+# 代码混淆压缩比,在0~7之间,默认为5,一般不做修改
+-optimizationpasses 5
+# 混合时不使用大小写混合,混合后的类名为小写
+-dontusemixedcaseclassnames
+# 指定不去忽略非公共库的类
+-dontskipnonpubliclibraryclasses
+# 这句话能够使我们的项目混淆后产生映射文件
+# 包含有类名->混淆后类名的映射关系
+-verbose
+# 指定不去忽略非公共库的类成员
+-dontskipnonpubliclibraryclassmembers
+# 不做预校验,preverify是proguard的四个步骤之一,Android不需要preverify,去掉这一步能够加快混淆速度。
+-dontpreverify
+# 保留Annotation不混淆
+-keepattributes *Annotation*,InnerClasses
+# 避免混淆泛型
+-keepattributes Signature
+# 抛出异常时保留代码行号
+-keepattributes SourceFile,LineNumberTable
+# 指定混淆是采用的算法,后面的参数是一个过滤器
+# 这个过滤器是谷歌推荐的算法,一般不做更改
+-optimizations !code/simplification/cast,!field/*,!class/merging/*
+
+#2.默认保留区
+# 保留我们使用的四大组件,自定义的Application等等这些类不被混淆
+# 因为这些子类都有可能被外部调用
+-keep public class * extends android.app.Activity
+-keep public class * extends android.app.Application
+-keep public class * extends android.app.Service
+-keep public class * extends android.content.BroadcastReceiver
+-keep public class * extends android.content.ContentProvider
+-keep public class * extends android.app.backup.BackupAgentHelper
+-keep public class * extends android.preference.Preference
+-keep public class * extends android.view.View
+-keep public class com.android.vending.licensing.ILicensingService
+# 保留support下的所有类及其内部类
+-keep class android.support.** {*;}
+# 保留继承的
+-keep public class * extends android.support.v4.**
+-keep public class * extends android.support.v7.**
+-keep public class * extends android.support.annotation.**
+# 保留R下面的资源
+-keep class **.R$* {*;}
+
+# 保留本地native方法不被混淆
+-keepclasseswithmembernames class * {
+    native <methods>;
+}
+# 保留在Activity中的方法参数是view的方法,
+# 这样以来我们在layout中写的onClick就不会被影响
+-keepclassmembers class * extends android.app.Activity{
+    public void *(android.view.View);
+}
+# 保留枚举类不被混淆
+-keepclassmembers enum * {
+    public static **[] values();
+    public static ** valueOf(java.lang.String);
+}
+# 保留我们自定义控件(继承自View)不被混淆
+-keep public class * extends android.view.View{
+    *** get*();
+    void set*(***);
+    public <init>(android.content.Context);
+    public <init>(android.content.Context, android.util.AttributeSet);
+    public <init>(android.content.Context, android.util.AttributeSet, int);
+}
+-keepclasseswithmembers class * {
+    public <init>(android.content.Context, android.util.AttributeSet);
+    public <init>(android.content.Context, android.util.AttributeSet, int);
+}
+
+# 保留Parcelable序列化类不被混淆
+-keep class * implements android.os.Parcelable {
+    public static final android.os.Parcelable$Creator *;
+}
+# 保留Serializable序列化的类不被混淆
+-keepclassmembers class * implements java.io.Serializable {
+    static final long serialVersionUID;
+    private static final java.io.ObjectStreamField[] serialPersistentFields;
+    !static !transient <fields>;
+    !private <fields>;
+    !private <methods>;
+    private void writeObject(java.io.ObjectOutputStream);
+    private void readObject(java.io.ObjectInputStream);
+    java.lang.Object writeReplace();
+    java.lang.Object readResolve();
+}
+# 对于带有回调函数的onXXEvent、**On*Listener的,不能被混淆
+-keepclassmembers class * {
+    void *(**On*Event);
+}
 
-# Add any project specific keep options here:
+#3.webview
+-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+   public *;
+}
+-keepclassmembers class * extends android.webkit.webViewClient {
+    public void *(android.webkit.WebView, java.lang.String, android.graphics.Bitmap);
+    public boolean *(android.webkit.WebView, java.lang.String);
+}
+-keepclassmembers class * extends android.webkit.webViewClient {
+    public void *(android.webkit.webView, jav.lang.String);
+}
+#移除Log类打印各个等级日志的代码,打正式包的时候可以做为禁log使用
+#这里可以作为禁止log打印的功能使用,另外的一种实现方案是通过BuildConfig.DEBUG的变量来控制
+-assumenosideeffects class android.util.Log {
+    public static *** v(...);
+    public static *** i(...);
+    public static *** d(...);
+    public static *** w(...);
+    public static *** e(...);
+}
+
+
+###############################
+#
+# 第三方jar包
+#
+###############################
+-keep class com.baidu.** {*;}
+-keep class vi.com.** {*;}
+-dontwarn com.baidu.**
+
+-keep class com.uuzuche.lib_zxing.** {*;}
+-keep class com.andreabaccega.** {*;}
+-keep class com.github.clans.fab.** {*;}
+-keep class com.yalantis.phoenix.** {*;}
+-keep class com.baoyz.swipemenulistview.** {*;}
+-keep class com.viewpagerindicator.** {*;}
+-keep class com.afollestad.materialdialogs.** {*;}
+-keep class com.github.mikephil.charting.** {*;}
+-keep class com.module.recyclerlibrary.** {*;}
+-keep class com.handmark.pulltorefresh.library.** {*;}
+-keep class cc.cloudist.acplibrary.** {*;}
+
+-keep class android.arch.core.internal.** {*;}
+-keep class android.arch.lifecycle.** {*;}
+-keep class com.alibaba.fastjson.** {*;}
+-dontwarn com.alibaba.fastjson.**
+-keep class android.support.graphics.drawable.** {*;}
+-keep class com.facebook.stetho.** {*;}
+-keep class javax.annotation.** {*;}
+-keep class com.lidroid.xutils.** {*;}
+-keep class okhttp3.** {*;}
+-keep class okio.** {*;}
+-dontwarn okio.**
+-keep class org.apache.** {*;}
+-keep class org.junit.** {*;}
+-keep class junit.** {*;}
+-keep class org.hamcrest.** {*;}
+
+-keep class sun.misc.Unsafe {*;}
+-keep class com.google.gson.** {*;}
+-keep class com.google.gson.stream.** {*;}
+-keep class com.android.volley.** {*;}
+
+-keep class butterknife.** {*;}
+-dontwarn butterknife.internal.**
+-keep class **$$ViewBinder { *; }
+
+-keep class cat.ereza.customactivityoncrash.** {*;}
+-keep class uk.co.senab.photoview.** {*;}
+-keep class com.flipboard.bottomsheet.** {*;}
+-keep class flipboard.bottomsheet.** {*;}
+-keep class com.bumptech.glide.** {*;}
+-keep class com.chad.library.** {*;}
+-keep class com.tonicartos.widget.stickygridheaders.** {*;}
+-keep class com.orhanobut.logger.** {*;}
+-keep class com.readystatesoftware.systembartint.** {*;}
+-keep class com.scwang.smartrefresh.** {*;}
+-keep class com.squareup.** {*;}
+-keep class com.tencent.** {*;}
+-keep class com.umeng.analytics.** {*;}
+-keep class com.youth.banner.** {*;}
+-keep class de.hdodenhof.circleimageview.** {*;}
+-keep class rx.** {*;}
+-keep class org.joda.time.** {*;}
+-keep class me.gujun.android.taggroup.** {*;}
+-keep class me.zhanghai.android.materialprogressbar.** {*;}
+-keep class android.net.** {*;}
+-keep class com.android.internal.http.multipart.** {*;}
+-keep class pl.droidsonroids.gif.** {*;}
+-keep class se.emilsjolander.stickylistheaders.** {*;}
+-keep class com.alipay.** {*;}
+-dontwarn com.alipay.**
+-keep class com.tencent.mm.sdk.** {
+   *;
+}
+
+###############################
+#
+# 自己的代码
+# 引用的其他Module可以直接在app的这个混淆文件里配置
+#
+###############################
+#实体类
+-keep class com.modular.booking.model.** {*;}
+-keep class com.uas.appcontact.model.** {*;}
+-keep class com.modular.login.model.** {*;}
+-keep class com.modular.booking.model.** {*;}
+-keep class com.uas.appme.settings.model.** {*;}
+-keep class com.modular.appmessages.model.** {*;}
+-keep class com.modular.apputils.model.** {*;}
+-keep class com.uas.appworks.model.** {*;}
+-keep class com.xzjmyk.pm.activity.bean.** {*;}
+-keep class com.modular.apputils.model.** {*;}
+#自定义控件
+-keep class com.core.widget.** {*;}
+-keep class com.modular.booking.widget.** {*;}
+-keep class com.uas.appcontact.ui.widget.stickylistheaders.** {*;}
+-keep class com.uas.appme.widget.** {*;}
+-keep class com.modular.appmessages.widget.** {*;}
+-keep class com.modular.apputils.widget.** {*;}
+-keep class com.uas.appworks.widget.** {*;}
+-keep class com.ipaulpro.afilechooser.** {*;}
+-keep class com.roamer.slidelistview.** {*;}
+-keep class com.xzjmyk.pm.activity.view.** {*;}
+-keep class com.xzjmyk.pm.activity.video.** {*;}
+-keep class com.modular.apputils.utils.** {*;}
+#与js互相调用的类
+-keep class com.com.xzjmyk.pm.activity.ui.erp.activity.WebViewCommActivity.JSWebView
 
-# If your project uses WebView with JS, uncomment the following
-# and specify the fully qualified class name to the JavaScript interface
-# class:
-#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
-#   public *;
-#}

+ 13 - 11
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/OAActivity.java

@@ -368,7 +368,7 @@ public class OAActivity extends SupportToolBarActivity implements View.OnClickLi
                         intent.putExtra("data", object.toString());
                         startActivityForResult(intent, isMe ? 0x20 : 0x21);
                     } else {
-                        showToast(  getString(R.string.outplan_undone));
+                        showToast(getString(R.string.outplan_undone));
                     }
                 }
             }
@@ -425,6 +425,8 @@ public class OAActivity extends SupportToolBarActivity implements View.OnClickLi
     }
 
     private void initView() {
+        subord_log.setTextColor(getResources().getColor(R.color.approval_select_tab));
+        subord_log_tag.setBackgroundResource(R.color.approval_select_tab);
         isCrm = !(getIntent() == null || getIntent().getIntExtra("type", 0) != 1);
         Intent intent = getIntent();
         workDailyAdd = intent.getStringExtra("WorkDailyAdd");
@@ -459,7 +461,7 @@ public class OAActivity extends SupportToolBarActivity implements View.OnClickLi
         LinearLayout.LayoutParams linearParams = (LinearLayout.LayoutParams) viewPager.getLayoutParams(); // 取控件mGrid当前的布局参数   搜索
         linearParams.height = (getResources().getDisplayMetrics().heightPixels * 1 / 3);// 当控件的高强制设成50象素
         viewPager.setLayoutParams(linearParams); // 使设置好的布局参数应用到控件myGrid
-        pagerAdapter = new OACalenderViewPagerAdapter(ct,curDate);
+        pagerAdapter = new OACalenderViewPagerAdapter(ct, curDate);
         viewPager.setAdapter(pagerAdapter);
         viewPager.setCurrentItem(OACalenderViewPagerAdapter.MAX_NUM / 2);
         //判断是否是管理员
@@ -722,7 +724,7 @@ public class OAActivity extends SupportToolBarActivity implements View.OnClickLi
             lastTime = System.currentTimeMillis();
             if (!StringUtil.isEmpty(workDailyAdd) && "WorkDailyAdd".equals(workDailyAdd)) {
             } else {
-             showToast(error);
+                showToast(error);
             }
         }
 
@@ -744,9 +746,9 @@ public class OAActivity extends SupportToolBarActivity implements View.OnClickLi
             adapter.setModels(showModel);
             adapter.notifyDataSetChanged();
             emptyLayout.showEmpty();
-            CommonUtil.textSpanForStyle(all_task_num, getString(R.string.work_calender) + "   "+0, 0 + "", getResources().getColor(R.color.approval_select_tab));
-            CommonUtil.textSpanForStyle(ok_task_num, getString(R.string.done) + "   "+0, 0 + "", getResources().getColor(R.color.approval_select_tab));
-            CommonUtil.textSpanForStyle(uok_task_num, getString(R.string.undone) +"   "+ 0, 0 + "", getResources().getColor(R.color.approval_select_tab));
+            CommonUtil.textSpanForStyle(all_task_num, getString(R.string.work_calender) + "   " + 0, 0 + "", getResources().getColor(R.color.approval_select_tab));
+            CommonUtil.textSpanForStyle(ok_task_num, getString(R.string.done) + "   " + 0, 0 + "", getResources().getColor(R.color.approval_select_tab));
+            CommonUtil.textSpanForStyle(uok_task_num, getString(R.string.undone) + "   " + 0, 0 + "", getResources().getColor(R.color.approval_select_tab));
             return;
         }
         int ok = 0, size = 0;
@@ -761,9 +763,9 @@ public class OAActivity extends SupportToolBarActivity implements View.OnClickLi
         }
         if (ListUtils.isEmpty(filterModels))
             emptyLayout.showEmpty();
-        CommonUtil.textSpanForStyle(all_task_num, getString(R.string.work_calender) + size, size + "", getResources().getColor(R.color.orange_text));
-        CommonUtil.textSpanForStyle(ok_task_num, getString(R.string.done) + ok, ok + "", getResources().getColor(R.color.orange_text));
-        CommonUtil.textSpanForStyle(uok_task_num, getString(R.string.undone) + (size - ok), (size - ok) + "", getResources().getColor(R.color.orange_text));
+        CommonUtil.textSpanForStyle(all_task_num, getString(R.string.work_calender) + "   " + size, size + "", getResources().getColor(R.color.approval_select_tab));
+        CommonUtil.textSpanForStyle(ok_task_num, getString(R.string.done) + "   " + ok, ok + "", getResources().getColor(R.color.approval_select_tab));
+        CommonUtil.textSpanForStyle(uok_task_num, getString(R.string.undone) + "   " + (size - ok), (size - ok) + "", getResources().getColor(R.color.approval_select_tab));
         //当前日期小于等于选中日期
         if (adapter == null) {
             adapter = new OAAdapter(ct, util, filterModels);
@@ -877,9 +879,9 @@ public class OAActivity extends SupportToolBarActivity implements View.OnClickLi
             setDateToListener(meInt);
             ok_scale.setVisibility(View.INVISIBLE);
             my_log.setTextColor(getResources().getColor(R.color.approval_select_tab));
+            my_log_tag.setBackgroundResource(R.color.approval_select_tab);
             subord_log.setTextColor(getResources().getColor(R.color.text_main));
             subord_log_tag.setBackgroundResource(R.color.item_line);
-            my_log_tag.setBackgroundResource(R.color.approval_select_tab);
         } else {
             setDateToListener(otherInt);
             ok_scale.setVisibility(View.VISIBLE);
@@ -954,7 +956,7 @@ public class OAActivity extends SupportToolBarActivity implements View.OnClickLi
                     if (hasOther) {
                         chaneTAG(false);
                     } else {
-                        showToast( getString(R.string.account_notice1));
+                        showToast(getString(R.string.account_notice1));
                     }
                 break;
             case R.id.my_log://我的工作日志

+ 1 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/me/MeFragment.java

@@ -499,7 +499,7 @@ public class MeFragment extends SupportToolBarFragment implements View.OnClickLi
     public void onActivityResult(int requestCode, int resultCode, Intent data) {
         super.onActivityResult(requestCode, resultCode, data);
         if (requestCode == 1 && resultCode == Activity.RESULT_OK) {// 个人资料更新了
-            AvatarHelper.getInstance().displayAvatar(MyApplication.getInstance().mLoginUser.getUserId(), mAvatarImg, true);
+            AvatarHelper.getInstance().displayCircular(MyApplication.getInstance().mLoginUser.getUserId(), mAvatarImg, true);
             mNickNameTv.setText(MyApplication.getInstance().mLoginUser.getNickName());
         }
         if (requestCode == REQUEST_CODE && resultCode == Activity.RESULT_OK && data != null) {

+ 3 - 3
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/message/MessageFragment.java

@@ -5,7 +5,6 @@ import android.content.Intent;
 import android.os.Bundle;
 import android.provider.Settings;
 import android.support.v7.widget.AppCompatTextView;
-import android.support.v7.widget.DividerItemDecoration;
 import android.support.v7.widget.LinearLayoutManager;
 import android.support.v7.widget.RecyclerView;
 import android.support.v7.widget.Toolbar;
@@ -50,6 +49,7 @@ import com.modular.appmessages.model.MessageNew;
 import com.modular.appmessages.presenter.MessagePresenter;
 import com.modular.appmessages.presenter.imp.IMessageView;
 import com.modular.appmessages.widget.SignRefreshLayout;
+import com.modular.apputils.adapter.LinearItemDecoration;
 import com.uas.appme.pedometer.view.UURanking;
 import com.xzjmyk.pm.activity.R;
 import com.xzjmyk.pm.activity.ui.platform.task.TaskActivity;
@@ -194,7 +194,7 @@ public class MessageFragment extends SupportToolBarFragment implements IMessageV
         mSignRefreshLayout = findViewById(R.id.mSignRefreshLayout);
         mRecyclerView = findViewById(R.id.mRecyclerView);
         mRecyclerView.setLayoutManager(new LinearLayoutManager(ct));
-        mRecyclerView.addItemDecoration(new DividerItemDecoration(ct, LinearLayout.VERTICAL));
+        mRecyclerView.addItemDecoration(new LinearItemDecoration());
         presenter = new MessagePresenter(mContext, this, unReaderListener);
         signView = mSignRefreshLayout.getSignView();
         if (signView != null) {
@@ -328,7 +328,7 @@ public class MessageFragment extends SupportToolBarFragment implements IMessageV
                         work = (WorkModel) tag;
                     }
                 }
-                if (!NetUtils.isNetWorkConnected(ct)) {
+                if (NetUtils.isNetWorkConnected(ct)) {
                     presenter.signWork(work);
                 } else {
                     showToact(R.string.networks_out);

+ 1 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/platform/task/TaskActivity.java

@@ -264,7 +264,7 @@ public class TaskActivity extends SupportToolBarActivity implements OnClickListe
         mEmptyLayout.setShowEmptyButton(false);
         mEmptyLayout.setShowErrorButton(false);
         mEmptyLayout.setShowLoadingButton(false);
-//        mEmptyLayout.showEmpty();
+        mEmptyLayout.showEmpty();
         //加载网络数据
         new Thread(new getallprocess_run()).start();
 //        sendResquestForServer("START", 2);

BIN
WeiChat/src/main/res/drawable-xhdpi/oa_next.png


+ 28 - 4
WeiChat/src/main/res/layout/activity_book_add.xml

@@ -21,7 +21,13 @@
                 style="@style/item_menu_tag"
                 android:gravity="center_vertical"
                 android:text="@string/booking_object" />
-
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginLeft="40dp"
+                android:layout_marginTop="@dimen/padding"
+                android:text="*"
+                android:textColor="@color/red" />
             <TextView
                 android:id="@+id/tv_book_object"
                 style="@style/item_menu_input"
@@ -41,7 +47,13 @@
                 android:gravity="center_vertical"
                 android:text="@string/times"
                 android:textColor="@color/hintColor" />
-
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginLeft="40dp"
+                android:layout_marginTop="@dimen/padding"
+                android:text="*"
+                android:textColor="@color/red" />
             <TextView
                 android:id="@+id/tv_book_times"
                 style="@style/item_menu_input"
@@ -62,7 +74,13 @@
                 android:layout_alignParentTop="true"
                 android:gravity="center_vertical"
                 android:text="@string/address" />
-
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginLeft="40dp"
+                android:layout_marginTop="@dimen/padding"
+                android:text="*"
+                android:textColor="@color/red" />
             <TextView
                 android:id="@+id/tv_book_address"
                 style="@style/item_menu_input"
@@ -85,7 +103,13 @@
                 android:layout_alignParentTop="true"
                 android:gravity="center_vertical"
                 android:text="@string/booking_topic" />
-
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginLeft="40dp"
+                android:layout_marginTop="@dimen/padding"
+                android:text="*"
+                android:textColor="@color/red" />
             <EditText
                 android:id="@+id/tv_book_topic"
                 style="@style/item_menu_input"

+ 28 - 8
WeiChat/src/main/res/layout/activity_business_add.xml

@@ -69,11 +69,12 @@
                     android:text="@string/business_name"
                     android:textColor="@color/text_main"
                     android:textSize="@dimen/text_main" />
+
                 <TextView
                     style="@style/form_relative_left_text"
                     android:layout_marginLeft="10dp"
                     android:layout_toRightOf="@+id/tv_leave_mankind"
-                    android:visibility="gone"
+                    android:visibility="visible"
                     android:text="*"
                     android:textColor="@color/red" />
                 <com.andreabaccega.widget.FormEditText xmlns:editTextFormExample="http://schemas.android.com/apk/res-auto"
@@ -125,7 +126,7 @@
                     android:layout_marginLeft="10dp"
                     android:layout_toRightOf="@+id/tv_leave_category"
                     android:text="*"
-                    android:visibility="gone"
+                    android:visibility="visible"
                     android:textColor="@color/red" />
                 <com.andreabaccega.widget.FormEditText xmlns:editTextFormExample="http://schemas.android.com/apk/res-auto"
                     android:id="@+id/et_business_source"
@@ -160,7 +161,7 @@
                     android:layout_marginLeft="25dp"
                     android:layout_toRightOf="@+id/tv_leave_reason"
                     android:text="*"
-                    android:visibility="gone"
+                    android:visibility="visible"
                     android:textColor="@color/red" />
                 <com.andreabaccega.widget.FormEditText xmlns:editTextFormExample="http://schemas.android.com/apk/res-auto"
                     android:id="@+id/et_business"
@@ -234,7 +235,7 @@
                     android:layout_marginLeft="10dp"
                     android:layout_toRightOf="@+id/tv_set_"
                     android:text="*"
-                    android:visibility="gone"
+                    android:visibility="visible"
                     android:textColor="@color/red" />
                 <com.andreabaccega.widget.FormEditText xmlns:editTextFormExample="http://schemas.android.com/apk/res-auto"
                     android:id="@+id/et_business_jieDuan"
@@ -259,12 +260,18 @@
                 android:background="@color/item_color2">
 
                 <TextView
-
+android:id="@+id/company_name_tv"
                     style="@style/form_relative_left_text"
                     android:text="@string/Company_Name"
                     android:textColor="@color/text_main"
                     android:textSize="@dimen/text_main" />
-
+                <TextView
+                    style="@style/form_relative_left_text"
+                    android:layout_marginLeft="10dp"
+                    android:layout_toRightOf="@+id/company_name_tv"
+                    android:text="*"
+                    android:visibility="visible"
+                    android:textColor="@color/red" />
                 <com.andreabaccega.widget.FormEditText xmlns:editTextFormExample="http://schemas.android.com/apk/res-auto"
                     android:id="@+id/et_company_name"
                     style="@style/form_relative_right_text"
@@ -285,11 +292,18 @@
 
 
                 <TextView
+                    android:id="@+id/company_address_tv"
                     style="@style/form_relative_left_text"
                     android:text="@string/enterprise_address"
                     android:textColor="@color/text_main"
                     android:textSize="@dimen/text_main" />
-
+                <TextView
+                    style="@style/form_relative_left_text"
+                    android:layout_marginLeft="10dp"
+                    android:layout_toRightOf="@+id/company_address_tv"
+                    android:text="*"
+                    android:visibility="visible"
+                    android:textColor="@color/red" />
                 <com.andreabaccega.widget.FormEditText xmlns:editTextFormExample="http://schemas.android.com/apk/res-auto"
                     android:id="@+id/et_company_address"
                     style="@style/form_relative_right_text"
@@ -313,7 +327,13 @@
                     android:text="@string/Business_license_number"
                     android:textColor="@color/text_main"
                     android:textSize="@dimen/text_main" />
-
+                <TextView
+                    style="@style/form_relative_left_text"
+                    android:layout_marginLeft="10dp"
+                    android:layout_toRightOf="@+id/tv_date_businesslicense"
+                    android:text="*"
+                    android:visibility="visible"
+                    android:textColor="@color/red" />
                 <com.andreabaccega.widget.FormEditText xmlns:editTextFormExample="http://schemas.android.com/apk/res-auto"
                     android:id="@+id/et_company_businesslicense"
                     style="@style/form_relative_right_text"

+ 103 - 77
WeiChat/src/main/res/layout/activity_expense_reimbursement.xml

@@ -2,8 +2,7 @@
 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:whatever="http://schemas.android.com/apk/res-auto"
     android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    >
+    android:layout_height="match_parent">
 
     <ScrollView
         android:layout_width="match_parent"
@@ -22,8 +21,8 @@
 
             <RelativeLayout
                 style="@style/IMTbleLine2"
-                android:minHeight="40dp"
-                android:background="@color/white">
+                android:background="@color/white"
+                android:minHeight="40dp">
 
                 <TextView
                     android:id="@+id/name_tv"
@@ -33,10 +32,22 @@
                     android:textColor="@color/text_main"
                     android:textSize="15sp" />
 
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_alignTop="@id/name_tv"
+                    android:layout_toRightOf="@id/name_tv"
+                    android:text="*"
+                    android:textColor="@color/red" />
+
                 <com.andreabaccega.widget.FormEditText
                     android:id="@+id/reimbursement_title_fet"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
+                    android:layout_alignBaseline="@+id/name_tv"
+                    android:layout_alignBottom="@+id/name_tv"
+                    android:layout_alignParentEnd="true"
+                    android:layout_alignParentRight="true"
                     android:background="@null"
                     android:gravity="center_vertical|right"
                     android:hint="@string/common_input"
@@ -46,11 +57,7 @@
                     android:textSize="15sp"
                     whatever:customRegexp="^[A-Za-z\u4e00-\u9fa5]{1,30}+$"
                     whatever:testErrorString="限制30个之内有效中英文字符"
-                    whatever:testType="regexp"
-                    android:layout_alignBaseline="@+id/name_tv"
-                    android:layout_alignBottom="@+id/name_tv"
-                    android:layout_alignParentRight="true"
-                    android:layout_alignParentEnd="true" />
+                    whatever:testType="regexp" />
             </RelativeLayout>
 
             <View
@@ -70,21 +77,27 @@
                     android:text="@string/Reimbursement_type"
                     android:textColor="@color/text_main"
                     android:textSize="15sp" />
-
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_alignTop="@id/type_left"
+                    android:layout_toRightOf="@id/type_left"
+                    android:text="*"
+                    android:textColor="@color/red" />
                 <com.andreabaccega.widget.FormEditText xmlns:editTextFormExample="http://schemas.android.com/apk/res-auto"
-                    android:layout_toRightOf="@+id/type_left"
                     android:id="@+id/reimbursement_type_fet"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
                     android:layout_alignParentRight="true"
+                    android:layout_toRightOf="@+id/type_left"
                     android:background="@null"
+                    android:ellipsize="end"
                     android:gravity="center_vertical|right"
                     android:hint="@string/common_select"
                     android:padding="10dp"
-                    android:textColor="@color/dark_dark_grey"
-                    android:textSize="15sp"
                     android:singleLine="true"
-                    android:ellipsize="end"/>
+                    android:textColor="@color/dark_dark_grey"
+                    android:textSize="15sp" />
 
                 <ImageView
                     style="@style/IMTbleLine_ArrowImg"
@@ -106,12 +119,19 @@
 
 
                 <TextView
+                    android:id="@+id/reimbursement_type"
                     style="@style/form_relative_left_text"
                     android:layout_marginLeft="0dp"
                     android:text="@string/currency"
                     android:textColor="@color/text_main"
                     android:textSize="15sp" />
-
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_alignTop="@id/reimbursement_type"
+                    android:layout_toRightOf="@id/reimbursement_type"
+                    android:text="*"
+                    android:textColor="@color/red" />
                 <com.andreabaccega.widget.FormEditText xmlns:editTextFormExample="http://schemas.android.com/apk/res-auto"
                     android:id="@+id/reimbursement_currency_fet"
                     android:layout_width="100dp"
@@ -121,9 +141,9 @@
                     android:background="@null"
                     android:gravity="center_vertical|right"
                     android:padding="10dp"
+                    android:text="RMB"
                     android:textColor="@color/dark_dark_grey"
-                    android:textSize="15sp"
-                    android:text="RMB"/>
+                    android:textSize="15sp" />
 
                 <ImageView
                     style="@style/IMTbleLine_ArrowImg"
@@ -143,27 +163,26 @@
 
             <RelativeLayout
                 android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                >
+                android:layout_height="wrap_content">
 
                 <TextView
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
-                    android:text="@string/Consumer_details"
-                    android:textColor="@color/text_main"
                     android:layout_marginLeft="10dp"
-                    android:layout_marginTop="10dp"/>
+                    android:layout_marginTop="10dp"
+                    android:text="@string/Consumer_details"
+                    android:textColor="@color/text_main" />
 
                 <TextView
                     android:id="@+id/add_details_tv"
                     android:layout_width="100dp"
                     android:layout_height="wrap_content"
                     android:layout_alignParentRight="true"
-                    android:text="@string/new_add"
-                    android:textColor="@color/blue"
-                    android:padding="10dp"
                     android:layout_marginRight="5dp"
-                    android:gravity="right"/>
+                    android:gravity="right"
+                    android:padding="10dp"
+                    android:text="@string/new_add"
+                    android:textColor="@color/blue" />
             </RelativeLayout>
 
 
@@ -171,58 +190,60 @@
                 android:id="@+id/detail_table_ll"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
-                android:orientation="vertical"
-                android:layout_alignParentTop="true"
                 android:layout_alignParentLeft="true"
-                android:layout_alignParentStart="true">
+                android:layout_alignParentStart="true"
+                android:layout_alignParentTop="true"
+                android:orientation="vertical">
+
                 <LinearLayout
                     android:id="@+id/detail_table_top_ll"
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
-                    android:orientation="vertical"
                     android:layout_marginLeft="10dp"
-                    android:layout_marginRight="10dp">
-                    <View
-                        style="@style/expense_table_h_1dp"/>
+                    android:layout_marginRight="10dp"
+                    android:orientation="vertical">
+
+                    <View style="@style/expense_table_h_1dp" />
+
                     <LinearLayout
                         android:layout_width="match_parent"
                         android:layout_height="wrap_content"
                         android:orientation="horizontal">
-                        <View
-                            style="@style/expense_table_v_1dp"/>
+
+                        <View style="@style/expense_table_v_1dp" />
+
                         <TextView
-                            android:text="@string/type"
                             android:layout_width="0dp"
                             android:layout_height="wrap_content"
+                            android:layout_gravity="center_vertical"
                             android:layout_weight="2"
                             android:paddingLeft="10dp"
-                            android:layout_gravity="center_vertical"/>
-                        <View
-                            style="@style/expense_table_v_1dp"/>
+                            android:text="@string/type" />
+
+                        <View style="@style/expense_table_v_1dp" />
+
                         <TextView
-                            android:text="@string/Amount_of_money"
                             android:layout_width="0dp"
                             android:layout_height="wrap_content"
+                            android:layout_gravity="center_vertical"
                             android:layout_weight="2"
                             android:paddingLeft="10dp"
-                            android:layout_gravity="center_vertical"
-                            />
-                        <View
-                            style="@style/expense_table_v_1dp"/>
+                            android:text="@string/Amount_of_money" />
+
+                        <View style="@style/expense_table_v_1dp" />
+
                         <TextView
-                            android:text="@string/common_delete"
                             android:layout_width="0dp"
                             android:layout_height="wrap_content"
-                            android:layout_weight="1"
                             android:layout_gravity="center_vertical"
-                            android:gravity="center"/>
-                        <View
-                            style="@style/expense_table_v_1dp"
-                            />
+                            android:layout_weight="1"
+                            android:gravity="center"
+                            android:text="@string/common_delete" />
+
+                        <View style="@style/expense_table_v_1dp" />
                     </LinearLayout>
 
-                    <View
-                        style="@style/expense_table_h_1dp"/>
+                    <View style="@style/expense_table_h_1dp" />
                 </LinearLayout>
 
                 <com.core.widget.MyListView
@@ -230,9 +251,8 @@
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
                     android:layout_marginLeft="10dp"
-                    android:layout_marginRight="10dp"
-                    >
-                </com.core.widget.MyListView>
+                    android:layout_marginRight="10dp"></com.core.widget.MyListView>
+
                 <LinearLayout
                     android:id="@+id/detail_table_bottom_ll"
                     android:layout_width="match_parent"
@@ -240,75 +260,80 @@
                     android:layout_marginLeft="10dp"
                     android:layout_marginRight="10dp"
                     android:orientation="vertical">
+
                     <RelativeLayout
                         android:layout_width="match_parent"
                         android:layout_height="wrap_content">
 
                         <View
                             android:id="@+id/left_view_v"
-                            style="@style/expense_table_v_1dp"/>
+                            style="@style/expense_table_v_1dp" />
 
                         <View
                             android:id="@+id/right_view_v"
-                            android:layout_alignParentRight="true"
-                            style="@style/expense_table_v_1dp"/>
+                            style="@style/expense_table_v_1dp"
+                            android:layout_alignParentRight="true" />
+
                         <TextView
                             android:id="@+id/automatic_calculation_tv"
-                            android:layout_toRightOf="@id/left_view_v"
                             android:layout_width="wrap_content"
                             android:layout_height="wrap_content"
-                            android:text="自动计算"
                             android:layout_centerVertical="true"
                             android:layout_marginLeft="10dp"
+                            android:layout_toRightOf="@id/left_view_v"
+                            android:text="自动计算"
                             android:textColor="@color/blue"
-                            android:visibility="gone"/>
+                            android:visibility="gone" />
 
                         <TextView
                             android:id="@+id/i_calculation_tv"
-                            android:layout_toRightOf="@id/automatic_calculation_tv"
                             android:layout_width="wrap_content"
                             android:layout_height="wrap_content"
-                            android:text="@string/calculator_name"
                             android:layout_centerVertical="true"
                             android:layout_marginLeft="10dp"
+                            android:layout_toRightOf="@id/automatic_calculation_tv"
+                            android:text="@string/calculator_name"
                             android:textColor="@color/blue"
-                            android:visibility="gone"
-                            />
+                            android:visibility="gone" />
+
                         <TextView
                             android:id="@+id/sum_money_tv"
                             android:layout_width="wrap_content"
                             android:layout_height="wrap_content"
-                            android:layout_toLeftOf="@+id/right_view_v"
                             android:layout_alignParentRight="true"
-                            android:layout_marginRight="30dp"
                             android:layout_centerVertical="true"
-                            android:textColor="@color/red"/>
+                            android:layout_marginRight="30dp"
+                            android:layout_toLeftOf="@+id/right_view_v"
+                            android:textColor="@color/red" />
+
                         <TextView
                             android:layout_width="wrap_content"
                             android:layout_height="wrap_content"
-                            android:text="@string/all_Amount_of_money"
-                            android:layout_toLeftOf="@+id/sum_money_tv"
                             android:layout_centerVertical="true"
                             android:layout_marginRight="10dp"
-                            android:textColor="@color/text_main"/>
+                            android:layout_toLeftOf="@+id/sum_money_tv"
+                            android:text="@string/all_Amount_of_money"
+                            android:textColor="@color/text_main" />
                     </RelativeLayout>
-                    <View
-                        style="@style/expense_table_h_1dp"/>
+
+                    <View style="@style/expense_table_h_1dp" />
                 </LinearLayout>
 
             </LinearLayout>
+
             <View
-                android:layout_marginTop="10dp"
                 android:layout_width="match_parent"
                 android:layout_height="20px"
+                android:layout_marginTop="10dp"
                 android:background="@color/item_line" />
+
             <TextView
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
-                android:text="@string/Add_invoice"
-                android:textColor="@color/text_main"
                 android:layout_marginLeft="10dp"
-                android:layout_marginTop="10dp"/>
+                android:layout_marginTop="10dp"
+                android:text="@string/Add_invoice"
+                android:textColor="@color/text_main" />
 
             <LinearLayout
                 android:id="@+id/select_img_layout"
@@ -328,6 +353,7 @@
                     android:stretchMode="columnWidth"
                     android:verticalSpacing="3dp" />
             </LinearLayout>
+
             <LinearLayout
                 android:id="@+id/bottom_layout"
                 android:layout_width="match_parent"

+ 1 - 3
WeiChat/src/main/res/layout/activity_subscription2.xml

@@ -19,9 +19,7 @@
             android:layout_alignParentLeft="true"
             android:layout_alignParentStart="true"
             android:layout_marginBottom="@dimen/padding"
-            android:layout_alignParentTop="true"
-            android:paddingLeft="@dimen/sub_padding"
-            android:paddingRight="@dimen/sub_padding" />
+            android:layout_alignParentTop="true" />
     </com.module.recyclerlibrary.ui.refresh.simlpe.SimpleRefreshLayout>
 
 

+ 5 - 7
WeiChat/src/main/res/layout/fragment_me.xml

@@ -21,16 +21,15 @@
 
             <ImageView
                 android:id="@+id/avatar_img"
-                android:layout_width="94dp"
-                android:layout_height="94dp"
+                android:layout_width="86dp"
+                android:layout_height="86dp"
                 android:layout_alignParentBottom="true"
                 android:layout_centerHorizontal="true"
                 android:layout_marginBottom="8dp"
                 android:contentDescription="@string/app_name"
-                android:padding="2dp"
+                android:padding="1dp"
                 android:background="@drawable/radian_hollow_white_bg"
-                android:scaleType="fitXY"
-                android:src="@drawable/avatar_normal_u" />
+                android:scaleType="fitXY"                 />
 
 
             <LinearLayout
@@ -65,6 +64,7 @@
                     android:id="@+id/editInfoIv"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
+                    android:padding="@dimen/paddingMin"
                     android:src="@drawable/ic_me_info_edit" />
             </LinearLayout>
 
@@ -92,7 +92,6 @@
                 android:layout_height="@dimen/next_height"
                 android:layout_alignParentRight="true"
                 android:layout_centerVertical="true"
-
                 android:background="@drawable/oa_next"
                 android:contentDescription="@string/app_name" />
         </RelativeLayout>
@@ -119,7 +118,6 @@
                 android:layout_height="@dimen/next_height"
                 android:layout_alignParentRight="true"
                 android:layout_centerVertical="true"
-
                 android:background="@drawable/oa_next"
                 android:contentDescription="@string/app_name" />
         </RelativeLayout>

+ 11 - 9
WeiChat/src/main/res/layout/item_subscription_first.xml

@@ -1,16 +1,18 @@
 <?xml version="1.0" encoding="utf-8"?>
 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:padding="10dp"
-    android:background="@color/white"
-    android:orientation="vertical">
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginLeft="15dp"
+                android:layout_marginRight="15dp"
+                android:background="@color/white"
+                android:orientation="vertical"
+                android:padding="10dp">
 
     <ImageView
         android:id="@+id/item_image"
-        android:scaleType="fitXY"
         android:layout_width="match_parent"
-        android:layout_height="130dp" />
+        android:layout_height="130dp"
+        android:scaleType="fitXY" />
 
     <RelativeLayout
         android:layout_width="match_parent"
@@ -31,10 +33,10 @@
             android:id="@+id/item_title_tv"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:lines="1"
-            android:ellipsize="end"
             android:layout_alignParentLeft="true"
             android:layout_toLeftOf="@id/item_isr_tv"
+            android:ellipsize="end"
+            android:lines="1"
             android:text="hhhh"
             android:textColor="@color/white"
             android:textSize="@dimen/text_main" />

+ 10 - 8
WeiChat/src/main/res/layout/item_subscription_more.xml

@@ -1,10 +1,12 @@
 <?xml version="1.0" encoding="utf-8"?>
 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="70dp"
-    android:background="@color/white"
-    android:orientation="vertical"
-    android:padding="10dp">
+                android:layout_width="match_parent"
+                android:layout_height="70dp"
+                android:layout_marginLeft="15dp"
+                android:layout_marginRight="15dp"
+                android:background="@color/white"
+                android:orientation="vertical"
+                android:padding="10dp">
 
     <ImageView
         android:id="@+id/item_image"
@@ -17,10 +19,10 @@
         android:id="@+id/item_isr_tv"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
+        android:layout_marginRight="10dp"
         android:layout_marginTop="10dp"
         android:layout_toLeftOf="@id/item_image"
         android:text="aaaa"
-        android:layout_marginRight="10dp"
         android:textSize="@dimen/text_hine" />
 
     <TextView
@@ -29,9 +31,9 @@
         android:layout_height="wrap_content"
         android:layout_alignParentLeft="true"
         android:layout_toLeftOf="@id/item_isr_tv"
-        android:text="hhhh"
-        android:lines="1"
         android:ellipsize="end"
+        android:lines="1"
+        android:text="hhhh"
         android:textColor="@color/text_main"
         android:textSize="@dimen/text_main" />
 

+ 1 - 0
WeiChat/src/main/res/layout/listview_item_header.xml

@@ -22,6 +22,7 @@
             android:layout_gravity="left"
             android:drawablePadding="5dp"
             android:padding="10dp"
+            android:textColor="@color/titleBlue"
             android:text="基本信息"/>
 
         <TextView

+ 0 - 32
WeiChat/src/main/res/layout/recycler_empty_view.xml

@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:orientation="vertical"
-    android:layout_height="wrap_content">
-
-    <View
-        android:id="@+id/top"
-        android:layout_width="match_parent"
-        android:layout_height="200dp" />
-
-    <TextView
-        android:id="@+id/tv"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_below="@id/top"
-        android:layout_gravity="center"
-        android:layout_marginTop="16dp"
-        android:drawableTop="@drawable/ic_empty"
-        android:gravity="center"
-        android:text="@string/common_list_empty"
-        android:textColor="@color/gray_light" />
-
-
-    <View
-        android:layout_width="match_parent"
-        android:layout_height="0dp"
-        android:layout_weight="1"
-        android:minHeight="200dp"
-      />
-
-</LinearLayout>

+ 4 - 5
app_core/common/src/main/java/com/core/app/MyApplication.java

@@ -299,12 +299,11 @@ public class MyApplication extends BaseApplication {
                 .bitmapConfig(Bitmap.Config.RGB_565).
                         cacheInMemory(true)
                 .cacheOnDisc(true)
-                .displayer(new RoundedBitmapDisplayer(10))
-//                .displayer(new RoundedBitmapDisplayer(10))
+                .displayer(new RoundedBitmapDisplayer(20))
                 .resetViewBeforeLoading(true)
-                .showImageForEmptyUri(R.drawable.avatar_normal)
-                .showImageOnFail(R.drawable.avatar_normal)
-                .showImageOnLoading(R.drawable.avatar_normal)
+                .showImageForEmptyUri(R.drawable.avatar_round)
+                .showImageOnFail(R.drawable.avatar_round)
+                .showImageOnLoading(R.drawable.avatar_round)
                 .build();
 
         mAvatarNormalImageOptions = new DisplayImageOptions.Builder()

+ 1 - 1
app_core/common/src/main/java/com/core/utils/helper/AvatarHelper.java

@@ -276,7 +276,7 @@ public class AvatarHelper {
         if (isThumb) {
             ImageLoader.getInstance().displayImage(url, imageView, MyApplication.mAvatarRoundImageOptions);
         } else {
-            ImageLoader.getInstance().displayImage(url, imageView, MyApplication.mAvatarNormalImageOptions);
+            ImageLoader.getInstance().displayImage(url, imageView, MyApplication.mAvatarRoundImageOptions);
         }
     }
 

+ 1 - 1
app_core/common/src/main/java/com/core/widget/crouton/Crouton.java

@@ -274,7 +274,7 @@ public final class Crouton {
      */
     public static Crouton makeText(Activity activity, CharSequence text, int color, int time, ViewGroup viewGroup) {
         Style customColor = new Style.Builder().setBackgroundColorValue(color)
-                .setGravity(Gravity.BOTTOM).build();
+                .setGravity(Gravity.CENTER).build();
         Configuration customConfiguration = new Configuration.Builder().setDuration(time).build();
         return new Crouton(activity, text, customColor, viewGroup).setConfiguration(customConfiguration);
     }

BIN
app_core/common/src/main/res/drawable-hdpi/avatar_round.png


BIN
app_core/common/src/main/res/drawable-hdpi/bg_me_top.png


BIN
app_core/common/src/main/res/drawable-hdpi/changyongyu.png


BIN
app_core/common/src/main/res/drawable-hdpi/common_toolbar_me_bg.png


BIN
app_core/common/src/main/res/drawable-xhdpi/avatar_round.png


BIN
app_core/common/src/main/res/drawable-xhdpi/bg_me_top.png


BIN
app_core/common/src/main/res/drawable-xhdpi/changyongyu.png


BIN
app_core/common/src/main/res/drawable-xhdpi/common_toolbar_me_bg.png


BIN
app_core/common/src/main/res/drawable-xhdpi/oa_next.png


BIN
app_core/common/src/main/res/drawable-xxhdpi/avatar_round.png


BIN
app_core/common/src/main/res/drawable-xxhdpi/bg_me_top.png


BIN
app_core/common/src/main/res/drawable-xxhdpi/changyongyu.png


BIN
app_core/common/src/main/res/drawable-xxhdpi/common_toolbar_me_bg.png


+ 2 - 2
app_core/common/src/main/res/drawable/ic_oa_list.xml

@@ -1,7 +1,7 @@
 <vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="18dp"
+    android:width="20dp"
     android:height="20dp"
-    android:viewportHeight="14"
+    android:viewportHeight="18"
     android:viewportWidth="19">
     <path
         android:fillColor="#FFFFFF"

+ 4 - 0
app_core/common/src/main/res/drawable/oa_next.xml

@@ -0,0 +1,4 @@
+<vector android:height="24dp" android:viewportHeight="1024"
+    android:viewportWidth="1024" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
+    <path android:fillColor="#D4D4D4" android:pathData="M769.79,476.03 L416.48,125.92c-18.85,-18.66 -49.22,-18.53 -67.87,0.32 -18.66,18.82 -18.53,49.22 0.32,67.87l319.46,316.58 -318.18,321.06c-18.66,18.82 -18.53,49.22 0.32,67.87 9.34,9.28 21.57,13.92 33.79,13.92 12.35,0 24.7,-4.74 34.08,-14.21l350.11,-353.31c0.51,-0.51 0.67,-1.25 1.18,-1.79 0.13,-0.13 0.29,-0.16 0.42,-0.29C788.74,525.09 788.64,494.69 769.79,476.03z"/>
+</vector>

+ 2 - 2
app_core/common/src/main/res/drawable/shape_process_linear.xml

@@ -7,10 +7,10 @@
         android:bottomLeftRadius="100dp">
     </corners>
     <stroke
-        android:width="1dp"
+        android:width="1px"
         android:color="#fbfbfb">
     </stroke>
     <solid
-        android:color="@color/antionbarcolor">
+        android:color="@color/white">
     </solid>
 </shape>

+ 36 - 5
app_core/common/src/main/res/layout/act_taskerp_add.xml

@@ -23,7 +23,13 @@
                 android:layout_centerVertical="true"
                 android:layout_marginLeft="10dp"
                 android:text="@string/task_title" />
-
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_alignTop="@id/tv_title"
+                android:layout_toRightOf="@id/tv_title"
+                android:text="*"
+                android:textColor="@color/red" />
             <EditText
                 android:id="@+id/et_title"
                 style="@style/form_relative_right_text"
@@ -47,7 +53,14 @@
                 android:gravity="bottom"
                 android:text="@string/task_detail" />
 
-
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_alignTop="@id/detailsTV"
+                android:layout_toRightOf="@id/detailsTV"
+                android:layout_marginTop="@dimen/padding"
+                android:text="*"
+                android:textColor="@color/red" />
             <ImageView
                 android:id="@+id/voice_search_iv"
                 android:layout_width="20dp"
@@ -81,7 +94,13 @@
                 android:layout_centerVertical="true"
                 android:layout_marginLeft="10dp"
                 android:text="@string/task_executor" />
-
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_alignTop="@id/tv_task_peoples"
+                android:layout_toRightOf="@id/tv_task_peoples"
+                android:text="*"
+                android:textColor="@color/red" />
             <ScrollView
                 android:layout_width="wrap_content"
                 android:layout_height="match_parent"
@@ -130,7 +149,13 @@
                 android:layout_centerVertical="true"
                 android:layout_marginLeft="10dp"
                 android:text="@string/task_starttime" />
-
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_alignTop="@id/tv_startime"
+                android:layout_toRightOf="@id/tv_startime"
+                android:text="*"
+                android:textColor="@color/red" />
             <TextView
                 android:id="@+id/et_startime"
                 style="@style/form_relative_right_text"
@@ -161,7 +186,13 @@
                 android:layout_centerVertical="true"
                 android:layout_marginLeft="10dp"
                 android:text="@string/task_endtime" />
-
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_alignTop="@id/tv_task_startime"
+                android:layout_toRightOf="@id/tv_task_startime"
+                android:text="*"
+                android:textColor="@color/red" />
             <TextView
                 android:id="@+id/et_endtime"
                 style="@style/form_relative_right_text"

+ 1 - 0
app_core/common/src/main/res/layout/activity_approval.xml

@@ -42,6 +42,7 @@
             android:id="@+id/commonWordsIV"
             android:layout_width="20dp"
             android:layout_height="20dp"
+            android:layout_marginRight="@dimen/padding"
             android:layout_alignParentEnd="true"
             android:layout_alignParentRight="true"
             android:layout_alignTop="@+id/voiceIV"

+ 4 - 8
app_core/common/src/main/res/layout/activity_subscription2.xml

@@ -1,10 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:background="@color/item_line">
-
-
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:background="@color/item_line">
 
 
     <com.module.recyclerlibrary.ui.refresh.simlpe.SimpleRefreshLayout
@@ -18,9 +16,7 @@
             android:layout_height="match_parent"
             android:layout_alignParentLeft="true"
             android:layout_alignParentStart="true"
-            android:layout_alignParentTop="true"
-            android:paddingLeft="@dimen/sub_padding"
-            android:paddingRight="@dimen/sub_padding" />
+            android:layout_alignParentTop="true" />
     </com.module.recyclerlibrary.ui.refresh.simlpe.SimpleRefreshLayout>
 
 

+ 1 - 1
app_core/common/src/main/res/layout/item_approval_node.xml

@@ -107,7 +107,7 @@
             android:layout_below="@id/keyTv"
             android:layout_toLeftOf="@id/statusTv"
             android:layout_toRightOf="@id/handIv"
-            android:textColor="#999999"
+            android:textColor="@color/done_approval"
             android:textSize="@dimen/text_min" />
     </RelativeLayout>
 </LinearLayout>

+ 11 - 9
app_core/common/src/main/res/layout/item_subscription_first.xml

@@ -1,16 +1,18 @@
 <?xml version="1.0" encoding="utf-8"?>
 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:padding="10dp"
-    android:background="@color/white"
-    android:orientation="vertical">
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginLeft="15dp"
+                android:layout_marginRight="15dp"
+                android:background="@color/white"
+                android:orientation="vertical"
+                android:padding="10dp">
 
     <ImageView
         android:id="@+id/item_image"
-        android:scaleType="fitXY"
         android:layout_width="match_parent"
-        android:layout_height="130dp" />
+        android:layout_height="130dp"
+        android:scaleType="fitXY" />
 
     <RelativeLayout
         android:layout_width="match_parent"
@@ -31,10 +33,10 @@
             android:id="@+id/item_title_tv"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:lines="1"
-            android:ellipsize="end"
             android:layout_alignParentLeft="true"
             android:layout_toLeftOf="@id/item_isr_tv"
+            android:ellipsize="end"
+            android:lines="1"
             android:text="hhhh"
             android:textColor="@color/white"
             android:textSize="@dimen/text_main" />

+ 10 - 8
app_core/common/src/main/res/layout/item_subscription_more.xml

@@ -1,10 +1,12 @@
 <?xml version="1.0" encoding="utf-8"?>
 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="70dp"
-    android:background="@color/white"
-    android:orientation="vertical"
-    android:padding="10dp">
+                android:layout_width="match_parent"
+                android:layout_height="70dp"
+                android:layout_marginLeft="15dp"
+                android:layout_marginRight="15dp"
+                android:background="@color/white"
+                android:orientation="vertical"
+                android:padding="10dp">
 
     <ImageView
         android:id="@+id/item_image"
@@ -17,10 +19,10 @@
         android:id="@+id/item_isr_tv"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
+        android:layout_marginRight="10dp"
         android:layout_marginTop="10dp"
         android:layout_toLeftOf="@id/item_image"
         android:text="aaaa"
-        android:layout_marginRight="10dp"
         android:textSize="@dimen/text_hine" />
 
     <TextView
@@ -29,9 +31,9 @@
         android:layout_height="wrap_content"
         android:layout_alignParentLeft="true"
         android:layout_toLeftOf="@id/item_isr_tv"
-        android:text="hhhh"
-        android:lines="1"
         android:ellipsize="end"
+        android:lines="1"
+        android:text="hhhh"
         android:textColor="@color/text_main"
         android:textSize="@dimen/text_main" />
 

+ 0 - 5
app_core/common/src/main/res/layout/layout_menu_person_info.xml

@@ -43,11 +43,6 @@
         android:text="@string/cancel_attention"
         />
 
-    <View
-        android:layout_width="match_parent"
-        android:layout_height="0.3dp"
-        android:background="@color/button_invalid" />
-
     <TextView
         android:id="@+id/basic_info_delete_all"
         style="@style/commonPopCancelItem"

+ 24 - 26
app_core/common/src/main/res/layout/recycler_empty_view.xml

@@ -1,32 +1,30 @@
 <?xml version="1.0" encoding="utf-8"?>
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:orientation="vertical"
-    android:layout_height="wrap_content">
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:background="#FFFFFF">
 
-    <View
-        android:id="@+id/top"
-        android:layout_width="match_parent"
-        android:layout_height="200dp" />
-
-    <TextView
-        android:id="@+id/tv"
-        android:layout_width="match_parent"
+    <LinearLayout
+        android:layout_width="wrap_content"
         android:layout_height="wrap_content"
-        android:layout_below="@id/top"
-        android:layout_gravity="center"
-        android:layout_marginTop="16dp"
-        android:drawableTop="@drawable/ic_empty"
-        android:gravity="center"
-        android:text="@string/common_list_empty"
-        android:textColor="@color/gray_light" />
+        android:layout_centerInParent="true"
+        android:gravity="center_horizontal"
+        android:orientation="vertical">
+
+        <pl.droidsonroids.gif.GifImageView
+            android:id="@+id/emptyImg"
+            android:layout_width="110dp"
+            android:layout_height="110dp"
+            android:scaleType="fitEnd"
+            android:src="@drawable/gif_empty_view" />
 
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginBottom="90dp"
+            android:text="数据为空"
+            android:textSize="14sp" />
 
-    <View
-        android:layout_width="match_parent"
-        android:layout_height="0dp"
-        android:layout_weight="1"
-        android:minHeight="200dp"
-      />
+    </LinearLayout>
 
-</LinearLayout>
+</RelativeLayout>

+ 1 - 1
app_core/common/src/main/res/values/colors.xml

@@ -346,7 +346,7 @@
     <!--B2B商务-->
     <color name="b2b_tab_bg">#f2f8fc</color>
     <color name="b2b_tab_selected">#2F95DD</color>
-    <color name="b2b_btn_todo">#00ff00</color>
+    <color name="b2b_btn_todo">#19CD25</color>
     <color name="b2b_btn_done">#62B1CB</color>
     <color name="b2b_btn_end">#AAAAAA</color>
 

+ 224 - 15
app_modular/appbooking/proguard-rules.pro

@@ -3,23 +3,232 @@
 # in C:\Android\sdk/tools/proguard/proguard-android.txt
 # You can edit the include path and order by changing the proguardFiles
 # directive in build.gradle.
+
+###############################
+#
+# 公共部分(固定不变)
 #
-# For more details, see
-#   http://developer.android.com/guide/developing/tools/proguard.html
+###############################
+#1.基本指令区
+# 代码混淆压缩比,在0~7之间,默认为5,一般不做修改
+-optimizationpasses 5
+# 混合时不使用大小写混合,混合后的类名为小写
+-dontusemixedcaseclassnames
+# 指定不去忽略非公共库的类
+-dontskipnonpubliclibraryclasses
+# 这句话能够使我们的项目混淆后产生映射文件
+# 包含有类名->混淆后类名的映射关系
+-verbose
+# 指定不去忽略非公共库的类成员
+-dontskipnonpubliclibraryclassmembers
+# 不做预校验,preverify是proguard的四个步骤之一,Android不需要preverify,去掉这一步能够加快混淆速度。
+-dontpreverify
+# 保留Annotation不混淆
+-keepattributes *Annotation*,InnerClasses
+# 避免混淆泛型
+-keepattributes Signature
+# 抛出异常时保留代码行号
+-keepattributes SourceFile,LineNumberTable
+# 指定混淆是采用的算法,后面的参数是一个过滤器
+# 这个过滤器是谷歌推荐的算法,一般不做更改
+-optimizations !code/simplification/cast,!field/*,!class/merging/*
+
+#2.默认保留区
+# 保留我们使用的四大组件,自定义的Application等等这些类不被混淆
+# 因为这些子类都有可能被外部调用
+-keep public class * extends android.app.Activity
+-keep public class * extends android.app.Application
+-keep public class * extends android.app.Service
+-keep public class * extends android.content.BroadcastReceiver
+-keep public class * extends android.content.ContentProvider
+-keep public class * extends android.app.backup.BackupAgentHelper
+-keep public class * extends android.preference.Preference
+-keep public class * extends android.view.View
+-keep public class com.android.vending.licensing.ILicensingService
+# 保留support下的所有类及其内部类
+-keep class android.support.** {*;}
+# 保留继承的
+-keep public class * extends android.support.v4.**
+-keep public class * extends android.support.v7.**
+-keep public class * extends android.support.annotation.**
+# 保留R下面的资源
+-keep class **.R$* {*;}
+
+# 保留本地native方法不被混淆
+-keepclasseswithmembernames class * {
+    native <methods>;
+}
+# 保留在Activity中的方法参数是view的方法,
+# 这样以来我们在layout中写的onClick就不会被影响
+-keepclassmembers class * extends android.app.Activity{
+    public void *(android.view.View);
+}
+# 保留枚举类不被混淆
+-keepclassmembers enum * {
+    public static **[] values();
+    public static ** valueOf(java.lang.String);
+}
+# 保留我们自定义控件(继承自View)不被混淆
+-keep public class * extends android.view.View{
+    *** get*();
+    void set*(***);
+    public <init>(android.content.Context);
+    public <init>(android.content.Context, android.util.AttributeSet);
+    public <init>(android.content.Context, android.util.AttributeSet, int);
+}
+-keepclasseswithmembers class * {
+    public <init>(android.content.Context, android.util.AttributeSet);
+    public <init>(android.content.Context, android.util.AttributeSet, int);
+}
 
-# Add any project specific keep options here:
+# 保留Parcelable序列化类不被混淆
+-keep class * implements android.os.Parcelable {
+    public static final android.os.Parcelable$Creator *;
+}
+# 保留Serializable序列化的类不被混淆
+-keepclassmembers class * implements java.io.Serializable {
+    static final long serialVersionUID;
+    private static final java.io.ObjectStreamField[] serialPersistentFields;
+    !static !transient <fields>;
+    !private <fields>;
+    !private <methods>;
+    private void writeObject(java.io.ObjectOutputStream);
+    private void readObject(java.io.ObjectInputStream);
+    java.lang.Object writeReplace();
+    java.lang.Object readResolve();
+}
+# 对于带有回调函数的onXXEvent、**On*Listener的,不能被混淆
+-keepclassmembers class * {
+    void *(**On*Event);
+}
 
-# If your project uses WebView with JS, uncomment the following
-# and specify the fully qualified class name to the JavaScript interface
-# class:
-#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
-#   public *;
-#}
+#3.webview
+-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+   public *;
+}
+-keepclassmembers class * extends android.webkit.webViewClient {
+    public void *(android.webkit.WebView, java.lang.String, android.graphics.Bitmap);
+    public boolean *(android.webkit.WebView, java.lang.String);
+}
+-keepclassmembers class * extends android.webkit.webViewClient {
+    public void *(android.webkit.webView, jav.lang.String);
+}
+#移除Log类打印各个等级日志的代码,打正式包的时候可以做为禁log使用
+#这里可以作为禁止log打印的功能使用,另外的一种实现方案是通过BuildConfig.DEBUG的变量来控制
+-assumenosideeffects class android.util.Log {
+    public static *** v(...);
+    public static *** i(...);
+    public static *** d(...);
+    public static *** w(...);
+    public static *** e(...);
+}
+
+
+###############################
+#
+# 第三方jar包
+#
+###############################
+-keep class com.baidu.** {*;}
+-keep class vi.com.** {*;}
+-dontwarn com.baidu.**
 
-# Uncomment this to preserve the line number information for
-# debugging stack traces.
-#-keepattributes SourceFile,LineNumberTable
+-keep class com.uuzuche.lib_zxing.** {*;}
+-keep class com.andreabaccega.** {*;}
+-keep class com.github.clans.fab.** {*;}
+-keep class com.yalantis.phoenix.** {*;}
+-keep class com.baoyz.swipemenulistview.** {*;}
+-keep class com.viewpagerindicator.** {*;}
+-keep class com.afollestad.materialdialogs.** {*;}
+-keep class com.github.mikephil.charting.** {*;}
+-keep class com.module.recyclerlibrary.** {*;}
+-keep class com.handmark.pulltorefresh.library.** {*;}
+-keep class cc.cloudist.acplibrary.** {*;}
+
+-keep class android.arch.core.internal.** {*;}
+-keep class android.arch.lifecycle.** {*;}
+-keep class com.alibaba.fastjson.** {*;}
+-dontwarn com.alibaba.fastjson.**
+-keep class android.support.graphics.drawable.** {*;}
+-keep class com.facebook.stetho.** {*;}
+-keep class javax.annotation.** {*;}
+-keep class com.lidroid.xutils.** {*;}
+-keep class okhttp3.** {*;}
+-keep class okio.** {*;}
+-dontwarn okio.**
+-keep class org.apache.** {*;}
+-keep class org.junit.** {*;}
+-keep class junit.** {*;}
+-keep class org.hamcrest.** {*;}
+
+-keep class sun.misc.Unsafe {*;}
+-keep class com.google.gson.** {*;}
+-keep class com.google.gson.stream.** {*;}
+-keep class com.android.volley.** {*;}
+
+-keep class butterknife.** {*;}
+-dontwarn butterknife.internal.**
+-keep class **$$ViewBinder { *; }
+
+-keep class cat.ereza.customactivityoncrash.** {*;}
+-keep class uk.co.senab.photoview.** {*;}
+-keep class com.flipboard.bottomsheet.** {*;}
+-keep class flipboard.bottomsheet.** {*;}
+-keep class com.bumptech.glide.** {*;}
+-keep class com.chad.library.** {*;}
+-keep class com.tonicartos.widget.stickygridheaders.** {*;}
+-keep class com.orhanobut.logger.** {*;}
+-keep class com.readystatesoftware.systembartint.** {*;}
+-keep class com.scwang.smartrefresh.** {*;}
+-keep class com.squareup.** {*;}
+-keep class com.tencent.** {*;}
+-keep class com.umeng.analytics.** {*;}
+-keep class com.youth.banner.** {*;}
+-keep class de.hdodenhof.circleimageview.** {*;}
+-keep class rx.** {*;}
+-keep class org.joda.time.** {*;}
+-keep class me.gujun.android.taggroup.** {*;}
+-keep class me.zhanghai.android.materialprogressbar.** {*;}
+-keep class android.net.** {*;}
+-keep class com.android.internal.http.multipart.** {*;}
+-keep class pl.droidsonroids.gif.** {*;}
+-keep class se.emilsjolander.stickylistheaders.** {*;}
+-keep class com.alipay.** {*;}
+-dontwarn com.alipay.**
+-keep class com.tencent.mm.sdk.** {
+   *;
+}
+
+###############################
+#
+# 自己的代码
+# 引用的其他Module可以直接在app的这个混淆文件里配置
+#
+###############################
+#实体类
+-keep class com.modular.booking.model.** {*;}
+-keep class com.uas.appcontact.model.** {*;}
+-keep class com.modular.login.model.** {*;}
+-keep class com.modular.booking.model.** {*;}
+-keep class com.uas.appme.settings.model.** {*;}
+-keep class com.modular.appmessages.model.** {*;}
+-keep class com.modular.apputils.model.** {*;}
+-keep class com.uas.appworks.model.** {*;}
+-keep class com.xzjmyk.pm.activity.bean.** {*;}
+-keep class com.modular.apputils.model.** {*;}
+#自定义控件
+-keep class com.core.widget.** {*;}
+-keep class com.modular.booking.widget.** {*;}
+-keep class com.uas.appcontact.ui.widget.stickylistheaders.** {*;}
+-keep class com.uas.appme.widget.** {*;}
+-keep class com.modular.appmessages.widget.** {*;}
+-keep class com.modular.apputils.widget.** {*;}
+-keep class com.uas.appworks.widget.** {*;}
+-keep class com.ipaulpro.afilechooser.** {*;}
+-keep class com.roamer.slidelistview.** {*;}
+-keep class com.xzjmyk.pm.activity.view.** {*;}
+-keep class com.xzjmyk.pm.activity.video.** {*;}
+-keep class com.modular.apputils.utils.** {*;}
+#与js互相调用的类
+-keep class com.com.xzjmyk.pm.activity.ui.erp.activity.WebViewCommActivity.JSWebView
 
-# If you keep the line number information, uncomment this to
-# hide the original source file name.
-#-renamesourcefileattribute SourceFile

+ 40 - 6
app_modular/appbooking/src/main/res/layout/activity_bbooking_add.xml

@@ -24,11 +24,18 @@
                 style="@style/item_menu">
 
                 <TextView
+                    android:id="@+id/object_tv"
                     style="@style/item_menu_tag"
                     android:gravity="center_vertical"
                     android:layout_marginLeft="5dp"
                     android:text="@string/booking_object" />
-
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginLeft="40dp"
+                    android:layout_marginTop="@dimen/padding"
+                    android:text="*"
+                    android:textColor="@color/red" />
                 <TextView
                     android:id="@+id/tv_book_object"
                     style="@style/item_menu_input"
@@ -45,11 +52,18 @@
                 style="@style/item_menu">
 
                 <TextView
+                    android:id="@+id/company_tv"
                     style="@style/item_menu_tag"
                     android:gravity="center_vertical"
                     android:layout_marginLeft="5dp"
                     android:text="@string/booking_add_company" />
-
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginLeft="40dp"
+                    android:layout_marginTop="@dimen/padding"
+                    android:text="*"
+                    android:textColor="@color/red" />
                 <TextView
                     android:id="@+id/tv_book_company"
                     style="@style/item_menu_input"
@@ -65,13 +79,19 @@
                 style="@style/item_menu">
 
                 <TextView
-
+    android:id="@+id/time_tv"
                     style="@style/item_menu_tag"
                     android:gravity="center_vertical"
                     android:text="@string/times"
                     android:layout_marginLeft="5dp"
                     android:textColor="@color/hintColor" />
-
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginLeft="40dp"
+                    android:layout_marginTop="@dimen/padding"
+                    android:text="*"
+                    android:textColor="@color/red" />
                 <TextView
                     android:id="@+id/tv_book_times"
                     style="@style/item_menu_input"
@@ -88,6 +108,7 @@
                 style="@style/item_menu">
 
                 <TextView
+                    android:id="@+id/address_tv"
                     style="@style/item_menu_tag"
                     android:layout_alignParentLeft="true"
                     android:layout_alignParentStart="true"
@@ -95,7 +116,13 @@
                     android:layout_marginLeft="5dp"
                     android:gravity="center_vertical"
                     android:text="@string/address" />
-
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginLeft="40dp"
+                    android:layout_marginTop="@dimen/padding"
+                    android:text="*"
+                    android:textColor="@color/red" />
                 <TextView
                     android:id="@+id/tv_book_address"
                     style="@style/item_menu_input"
@@ -113,6 +140,7 @@
                 style="@style/item_menu">
 
                 <TextView
+                    android:id="@+id/title_tv"
                     style="@style/item_menu_tag"
                     android:layout_alignParentLeft="true"
                     android:layout_alignParentStart="true"
@@ -120,7 +148,13 @@
                     android:gravity="center_vertical"
                     android:layout_marginLeft="5dp"
                     android:text="@string/booking_topic" />
-
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginLeft="40dp"
+                    android:layout_marginTop="@dimen/padding"
+                    android:text="*"
+                    android:textColor="@color/red" />
                 <EditText
                     android:id="@+id/tv_book_topic"
                     style="@style/item_menu_input"

+ 225 - 16
app_modular/appcontact/proguard-rules.pro

@@ -1,25 +1,234 @@
 # Add project specific ProGuard rules here.
 # By default, the flags in this file are appended to flags specified
-# in C:\Users\Bitliker\AppData\Local\Android\Sdk/tools/proguard/proguard-android.txt
+# in C:\Android\sdk/tools/proguard/proguard-android.txt
 # You can edit the include path and order by changing the proguardFiles
 # directive in build.gradle.
+
+###############################
+#
+# 公共部分(固定不变)
 #
-# For more details, see
-#   http://developer.android.com/guide/developing/tools/proguard.html
+###############################
+#1.基本指令区
+# 代码混淆压缩比,在0~7之间,默认为5,一般不做修改
+-optimizationpasses 5
+# 混合时不使用大小写混合,混合后的类名为小写
+-dontusemixedcaseclassnames
+# 指定不去忽略非公共库的类
+-dontskipnonpubliclibraryclasses
+# 这句话能够使我们的项目混淆后产生映射文件
+# 包含有类名->混淆后类名的映射关系
+-verbose
+# 指定不去忽略非公共库的类成员
+-dontskipnonpubliclibraryclassmembers
+# 不做预校验,preverify是proguard的四个步骤之一,Android不需要preverify,去掉这一步能够加快混淆速度。
+-dontpreverify
+# 保留Annotation不混淆
+-keepattributes *Annotation*,InnerClasses
+# 避免混淆泛型
+-keepattributes Signature
+# 抛出异常时保留代码行号
+-keepattributes SourceFile,LineNumberTable
+# 指定混淆是采用的算法,后面的参数是一个过滤器
+# 这个过滤器是谷歌推荐的算法,一般不做更改
+-optimizations !code/simplification/cast,!field/*,!class/merging/*
+
+#2.默认保留区
+# 保留我们使用的四大组件,自定义的Application等等这些类不被混淆
+# 因为这些子类都有可能被外部调用
+-keep public class * extends android.app.Activity
+-keep public class * extends android.app.Application
+-keep public class * extends android.app.Service
+-keep public class * extends android.content.BroadcastReceiver
+-keep public class * extends android.content.ContentProvider
+-keep public class * extends android.app.backup.BackupAgentHelper
+-keep public class * extends android.preference.Preference
+-keep public class * extends android.view.View
+-keep public class com.android.vending.licensing.ILicensingService
+# 保留support下的所有类及其内部类
+-keep class android.support.** {*;}
+# 保留继承的
+-keep public class * extends android.support.v4.**
+-keep public class * extends android.support.v7.**
+-keep public class * extends android.support.annotation.**
+# 保留R下面的资源
+-keep class **.R$* {*;}
+
+# 保留本地native方法不被混淆
+-keepclasseswithmembernames class * {
+    native <methods>;
+}
+# 保留在Activity中的方法参数是view的方法,
+# 这样以来我们在layout中写的onClick就不会被影响
+-keepclassmembers class * extends android.app.Activity{
+    public void *(android.view.View);
+}
+# 保留枚举类不被混淆
+-keepclassmembers enum * {
+    public static **[] values();
+    public static ** valueOf(java.lang.String);
+}
+# 保留我们自定义控件(继承自View)不被混淆
+-keep public class * extends android.view.View{
+    *** get*();
+    void set*(***);
+    public <init>(android.content.Context);
+    public <init>(android.content.Context, android.util.AttributeSet);
+    public <init>(android.content.Context, android.util.AttributeSet, int);
+}
+-keepclasseswithmembers class * {
+    public <init>(android.content.Context, android.util.AttributeSet);
+    public <init>(android.content.Context, android.util.AttributeSet, int);
+}
 
-# Add any project specific keep options here:
+# 保留Parcelable序列化类不被混淆
+-keep class * implements android.os.Parcelable {
+    public static final android.os.Parcelable$Creator *;
+}
+# 保留Serializable序列化的类不被混淆
+-keepclassmembers class * implements java.io.Serializable {
+    static final long serialVersionUID;
+    private static final java.io.ObjectStreamField[] serialPersistentFields;
+    !static !transient <fields>;
+    !private <fields>;
+    !private <methods>;
+    private void writeObject(java.io.ObjectOutputStream);
+    private void readObject(java.io.ObjectInputStream);
+    java.lang.Object writeReplace();
+    java.lang.Object readResolve();
+}
+# 对于带有回调函数的onXXEvent、**On*Listener的,不能被混淆
+-keepclassmembers class * {
+    void *(**On*Event);
+}
 
-# If your project uses WebView with JS, uncomment the following
-# and specify the fully qualified class name to the JavaScript interface
-# class:
-#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
-#   public *;
-#}
+#3.webview
+-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+   public *;
+}
+-keepclassmembers class * extends android.webkit.webViewClient {
+    public void *(android.webkit.WebView, java.lang.String, android.graphics.Bitmap);
+    public boolean *(android.webkit.WebView, java.lang.String);
+}
+-keepclassmembers class * extends android.webkit.webViewClient {
+    public void *(android.webkit.webView, jav.lang.String);
+}
+#移除Log类打印各个等级日志的代码,打正式包的时候可以做为禁log使用
+#这里可以作为禁止log打印的功能使用,另外的一种实现方案是通过BuildConfig.DEBUG的变量来控制
+-assumenosideeffects class android.util.Log {
+    public static *** v(...);
+    public static *** i(...);
+    public static *** d(...);
+    public static *** w(...);
+    public static *** e(...);
+}
+
+
+###############################
+#
+# 第三方jar包
+#
+###############################
+-keep class com.baidu.** {*;}
+-keep class vi.com.** {*;}
+-dontwarn com.baidu.**
 
-# Uncomment this to preserve the line number information for
-# debugging stack traces.
-#-keepattributes SourceFile,LineNumberTable
+-keep class com.uuzuche.lib_zxing.** {*;}
+-keep class com.andreabaccega.** {*;}
+-keep class com.github.clans.fab.** {*;}
+-keep class com.yalantis.phoenix.** {*;}
+-keep class com.baoyz.swipemenulistview.** {*;}
+-keep class com.viewpagerindicator.** {*;}
+-keep class com.afollestad.materialdialogs.** {*;}
+-keep class com.github.mikephil.charting.** {*;}
+-keep class com.module.recyclerlibrary.** {*;}
+-keep class com.handmark.pulltorefresh.library.** {*;}
+-keep class cc.cloudist.acplibrary.** {*;}
+
+-keep class android.arch.core.internal.** {*;}
+-keep class android.arch.lifecycle.** {*;}
+-keep class com.alibaba.fastjson.** {*;}
+-dontwarn com.alibaba.fastjson.**
+-keep class android.support.graphics.drawable.** {*;}
+-keep class com.facebook.stetho.** {*;}
+-keep class javax.annotation.** {*;}
+-keep class com.lidroid.xutils.** {*;}
+-keep class okhttp3.** {*;}
+-keep class okio.** {*;}
+-dontwarn okio.**
+-keep class org.apache.** {*;}
+-keep class org.junit.** {*;}
+-keep class junit.** {*;}
+-keep class org.hamcrest.** {*;}
+
+-keep class sun.misc.Unsafe {*;}
+-keep class com.google.gson.** {*;}
+-keep class com.google.gson.stream.** {*;}
+-keep class com.android.volley.** {*;}
+
+-keep class butterknife.** {*;}
+-dontwarn butterknife.internal.**
+-keep class **$$ViewBinder { *; }
+
+-keep class cat.ereza.customactivityoncrash.** {*;}
+-keep class uk.co.senab.photoview.** {*;}
+-keep class com.flipboard.bottomsheet.** {*;}
+-keep class flipboard.bottomsheet.** {*;}
+-keep class com.bumptech.glide.** {*;}
+-keep class com.chad.library.** {*;}
+-keep class com.tonicartos.widget.stickygridheaders.** {*;}
+-keep class com.orhanobut.logger.** {*;}
+-keep class com.readystatesoftware.systembartint.** {*;}
+-keep class com.scwang.smartrefresh.** {*;}
+-keep class com.squareup.** {*;}
+-keep class com.tencent.** {*;}
+-keep class com.umeng.analytics.** {*;}
+-keep class com.youth.banner.** {*;}
+-keep class de.hdodenhof.circleimageview.** {*;}
+-keep class rx.** {*;}
+-keep class org.joda.time.** {*;}
+-keep class me.gujun.android.taggroup.** {*;}
+-keep class me.zhanghai.android.materialprogressbar.** {*;}
+-keep class android.net.** {*;}
+-keep class com.android.internal.http.multipart.** {*;}
+-keep class pl.droidsonroids.gif.** {*;}
+-keep class se.emilsjolander.stickylistheaders.** {*;}
+-keep class com.alipay.** {*;}
+-dontwarn com.alipay.**
+-keep class com.tencent.mm.sdk.** {
+   *;
+}
+
+###############################
+#
+# 自己的代码
+# 引用的其他Module可以直接在app的这个混淆文件里配置
+#
+###############################
+#实体类
+-keep class com.modular.booking.model.** {*;}
+-keep class com.uas.appcontact.model.** {*;}
+-keep class com.modular.login.model.** {*;}
+-keep class com.modular.booking.model.** {*;}
+-keep class com.uas.appme.settings.model.** {*;}
+-keep class com.modular.appmessages.model.** {*;}
+-keep class com.modular.apputils.model.** {*;}
+-keep class com.uas.appworks.model.** {*;}
+-keep class com.xzjmyk.pm.activity.bean.** {*;}
+-keep class com.modular.apputils.model.** {*;}
+#自定义控件
+-keep class com.core.widget.** {*;}
+-keep class com.modular.booking.widget.** {*;}
+-keep class com.uas.appcontact.ui.widget.stickylistheaders.** {*;}
+-keep class com.uas.appme.widget.** {*;}
+-keep class com.modular.appmessages.widget.** {*;}
+-keep class com.modular.apputils.widget.** {*;}
+-keep class com.uas.appworks.widget.** {*;}
+-keep class com.ipaulpro.afilechooser.** {*;}
+-keep class com.roamer.slidelistview.** {*;}
+-keep class com.xzjmyk.pm.activity.view.** {*;}
+-keep class com.xzjmyk.pm.activity.video.** {*;}
+-keep class com.modular.apputils.utils.** {*;}
+#与js互相调用的类
+-keep class com.com.xzjmyk.pm.activity.ui.erp.activity.WebViewCommActivity.JSWebView
 
-# If you keep the line number information, uncomment this to
-# hide the original source file name.
-#-renamesourcefileattribute SourceFile

+ 1 - 1
app_modular/appcontact/src/main/java/com/uas/appcontact/adapter/FriendSortAdapter.java

@@ -133,7 +133,7 @@ public class FriendSortAdapter extends BaseAdapter implements SectionIndexer, St
                     AvatarHelper.getInstance().display(friend.getUserId(), holder.header_img, true, true);//设定为每次刷新都会去删除缓存重新获取数据
                     isRefeshed = false;
                 } else {
-                    AvatarHelper.getInstance().display(friend.getUserId(), holder.header_img, true, true);//不会删除缓存
+                    AvatarHelper.getInstance().display(friend.getUserId(), holder.header_img, true, false);//不会删除缓存
                 }
             }
         } else {// 这是1个房间

+ 224 - 15
app_modular/applogin/proguard-rules.pro

@@ -3,23 +3,232 @@
 # in C:\Android\sdk/tools/proguard/proguard-android.txt
 # You can edit the include path and order by changing the proguardFiles
 # directive in build.gradle.
+
+###############################
+#
+# 公共部分(固定不变)
 #
-# For more details, see
-#   http://developer.android.com/guide/developing/tools/proguard.html
+###############################
+#1.基本指令区
+# 代码混淆压缩比,在0~7之间,默认为5,一般不做修改
+-optimizationpasses 5
+# 混合时不使用大小写混合,混合后的类名为小写
+-dontusemixedcaseclassnames
+# 指定不去忽略非公共库的类
+-dontskipnonpubliclibraryclasses
+# 这句话能够使我们的项目混淆后产生映射文件
+# 包含有类名->混淆后类名的映射关系
+-verbose
+# 指定不去忽略非公共库的类成员
+-dontskipnonpubliclibraryclassmembers
+# 不做预校验,preverify是proguard的四个步骤之一,Android不需要preverify,去掉这一步能够加快混淆速度。
+-dontpreverify
+# 保留Annotation不混淆
+-keepattributes *Annotation*,InnerClasses
+# 避免混淆泛型
+-keepattributes Signature
+# 抛出异常时保留代码行号
+-keepattributes SourceFile,LineNumberTable
+# 指定混淆是采用的算法,后面的参数是一个过滤器
+# 这个过滤器是谷歌推荐的算法,一般不做更改
+-optimizations !code/simplification/cast,!field/*,!class/merging/*
+
+#2.默认保留区
+# 保留我们使用的四大组件,自定义的Application等等这些类不被混淆
+# 因为这些子类都有可能被外部调用
+-keep public class * extends android.app.Activity
+-keep public class * extends android.app.Application
+-keep public class * extends android.app.Service
+-keep public class * extends android.content.BroadcastReceiver
+-keep public class * extends android.content.ContentProvider
+-keep public class * extends android.app.backup.BackupAgentHelper
+-keep public class * extends android.preference.Preference
+-keep public class * extends android.view.View
+-keep public class com.android.vending.licensing.ILicensingService
+# 保留support下的所有类及其内部类
+-keep class android.support.** {*;}
+# 保留继承的
+-keep public class * extends android.support.v4.**
+-keep public class * extends android.support.v7.**
+-keep public class * extends android.support.annotation.**
+# 保留R下面的资源
+-keep class **.R$* {*;}
+
+# 保留本地native方法不被混淆
+-keepclasseswithmembernames class * {
+    native <methods>;
+}
+# 保留在Activity中的方法参数是view的方法,
+# 这样以来我们在layout中写的onClick就不会被影响
+-keepclassmembers class * extends android.app.Activity{
+    public void *(android.view.View);
+}
+# 保留枚举类不被混淆
+-keepclassmembers enum * {
+    public static **[] values();
+    public static ** valueOf(java.lang.String);
+}
+# 保留我们自定义控件(继承自View)不被混淆
+-keep public class * extends android.view.View{
+    *** get*();
+    void set*(***);
+    public <init>(android.content.Context);
+    public <init>(android.content.Context, android.util.AttributeSet);
+    public <init>(android.content.Context, android.util.AttributeSet, int);
+}
+-keepclasseswithmembers class * {
+    public <init>(android.content.Context, android.util.AttributeSet);
+    public <init>(android.content.Context, android.util.AttributeSet, int);
+}
 
-# Add any project specific keep options here:
+# 保留Parcelable序列化类不被混淆
+-keep class * implements android.os.Parcelable {
+    public static final android.os.Parcelable$Creator *;
+}
+# 保留Serializable序列化的类不被混淆
+-keepclassmembers class * implements java.io.Serializable {
+    static final long serialVersionUID;
+    private static final java.io.ObjectStreamField[] serialPersistentFields;
+    !static !transient <fields>;
+    !private <fields>;
+    !private <methods>;
+    private void writeObject(java.io.ObjectOutputStream);
+    private void readObject(java.io.ObjectInputStream);
+    java.lang.Object writeReplace();
+    java.lang.Object readResolve();
+}
+# 对于带有回调函数的onXXEvent、**On*Listener的,不能被混淆
+-keepclassmembers class * {
+    void *(**On*Event);
+}
 
-# If your project uses WebView with JS, uncomment the following
-# and specify the fully qualified class name to the JavaScript interface
-# class:
-#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
-#   public *;
-#}
+#3.webview
+-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+   public *;
+}
+-keepclassmembers class * extends android.webkit.webViewClient {
+    public void *(android.webkit.WebView, java.lang.String, android.graphics.Bitmap);
+    public boolean *(android.webkit.WebView, java.lang.String);
+}
+-keepclassmembers class * extends android.webkit.webViewClient {
+    public void *(android.webkit.webView, jav.lang.String);
+}
+#移除Log类打印各个等级日志的代码,打正式包的时候可以做为禁log使用
+#这里可以作为禁止log打印的功能使用,另外的一种实现方案是通过BuildConfig.DEBUG的变量来控制
+-assumenosideeffects class android.util.Log {
+    public static *** v(...);
+    public static *** i(...);
+    public static *** d(...);
+    public static *** w(...);
+    public static *** e(...);
+}
+
+
+###############################
+#
+# 第三方jar包
+#
+###############################
+-keep class com.baidu.** {*;}
+-keep class vi.com.** {*;}
+-dontwarn com.baidu.**
 
-# Uncomment this to preserve the line number information for
-# debugging stack traces.
-#-keepattributes SourceFile,LineNumberTable
+-keep class com.uuzuche.lib_zxing.** {*;}
+-keep class com.andreabaccega.** {*;}
+-keep class com.github.clans.fab.** {*;}
+-keep class com.yalantis.phoenix.** {*;}
+-keep class com.baoyz.swipemenulistview.** {*;}
+-keep class com.viewpagerindicator.** {*;}
+-keep class com.afollestad.materialdialogs.** {*;}
+-keep class com.github.mikephil.charting.** {*;}
+-keep class com.module.recyclerlibrary.** {*;}
+-keep class com.handmark.pulltorefresh.library.** {*;}
+-keep class cc.cloudist.acplibrary.** {*;}
+
+-keep class android.arch.core.internal.** {*;}
+-keep class android.arch.lifecycle.** {*;}
+-keep class com.alibaba.fastjson.** {*;}
+-dontwarn com.alibaba.fastjson.**
+-keep class android.support.graphics.drawable.** {*;}
+-keep class com.facebook.stetho.** {*;}
+-keep class javax.annotation.** {*;}
+-keep class com.lidroid.xutils.** {*;}
+-keep class okhttp3.** {*;}
+-keep class okio.** {*;}
+-dontwarn okio.**
+-keep class org.apache.** {*;}
+-keep class org.junit.** {*;}
+-keep class junit.** {*;}
+-keep class org.hamcrest.** {*;}
+
+-keep class sun.misc.Unsafe {*;}
+-keep class com.google.gson.** {*;}
+-keep class com.google.gson.stream.** {*;}
+-keep class com.android.volley.** {*;}
+
+-keep class butterknife.** {*;}
+-dontwarn butterknife.internal.**
+-keep class **$$ViewBinder { *; }
+
+-keep class cat.ereza.customactivityoncrash.** {*;}
+-keep class uk.co.senab.photoview.** {*;}
+-keep class com.flipboard.bottomsheet.** {*;}
+-keep class flipboard.bottomsheet.** {*;}
+-keep class com.bumptech.glide.** {*;}
+-keep class com.chad.library.** {*;}
+-keep class com.tonicartos.widget.stickygridheaders.** {*;}
+-keep class com.orhanobut.logger.** {*;}
+-keep class com.readystatesoftware.systembartint.** {*;}
+-keep class com.scwang.smartrefresh.** {*;}
+-keep class com.squareup.** {*;}
+-keep class com.tencent.** {*;}
+-keep class com.umeng.analytics.** {*;}
+-keep class com.youth.banner.** {*;}
+-keep class de.hdodenhof.circleimageview.** {*;}
+-keep class rx.** {*;}
+-keep class org.joda.time.** {*;}
+-keep class me.gujun.android.taggroup.** {*;}
+-keep class me.zhanghai.android.materialprogressbar.** {*;}
+-keep class android.net.** {*;}
+-keep class com.android.internal.http.multipart.** {*;}
+-keep class pl.droidsonroids.gif.** {*;}
+-keep class se.emilsjolander.stickylistheaders.** {*;}
+-keep class com.alipay.** {*;}
+-dontwarn com.alipay.**
+-keep class com.tencent.mm.sdk.** {
+   *;
+}
+
+###############################
+#
+# 自己的代码
+# 引用的其他Module可以直接在app的这个混淆文件里配置
+#
+###############################
+#实体类
+-keep class com.modular.booking.model.** {*;}
+-keep class com.uas.appcontact.model.** {*;}
+-keep class com.modular.login.model.** {*;}
+-keep class com.modular.booking.model.** {*;}
+-keep class com.uas.appme.settings.model.** {*;}
+-keep class com.modular.appmessages.model.** {*;}
+-keep class com.modular.apputils.model.** {*;}
+-keep class com.uas.appworks.model.** {*;}
+-keep class com.xzjmyk.pm.activity.bean.** {*;}
+-keep class com.modular.apputils.model.** {*;}
+#自定义控件
+-keep class com.core.widget.** {*;}
+-keep class com.modular.booking.widget.** {*;}
+-keep class com.uas.appcontact.ui.widget.stickylistheaders.** {*;}
+-keep class com.uas.appme.widget.** {*;}
+-keep class com.modular.appmessages.widget.** {*;}
+-keep class com.modular.apputils.widget.** {*;}
+-keep class com.uas.appworks.widget.** {*;}
+-keep class com.ipaulpro.afilechooser.** {*;}
+-keep class com.roamer.slidelistview.** {*;}
+-keep class com.xzjmyk.pm.activity.view.** {*;}
+-keep class com.xzjmyk.pm.activity.video.** {*;}
+-keep class com.modular.apputils.utils.** {*;}
+#与js互相调用的类
+-keep class com.com.xzjmyk.pm.activity.ui.erp.activity.WebViewCommActivity.JSWebView
 
-# If you keep the line number information, uncomment this to
-# hide the original source file name.
-#-renamesourcefileattribute SourceFile

+ 7 - 0
app_modular/applogin/src/main/res/drawable/shape_edittext_white_cursor.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+       android:shape="rectangle">
+
+    <solid android:color="@color/white" />
+    <size android:width="2dp" />
+</shape>

+ 4 - 2
app_modular/applogin/src/main/res/layout/activity_login.xml

@@ -57,7 +57,8 @@
                         android:inputType="phone"
                         android:paddingLeft="10dp"
                         android:textColor="@color/white"
-                        android:textColorHint="@color/white" />
+                        android:textColorHint="@color/white"
+                        android:textCursorDrawable="@drawable/shape_edittext_white_cursor" />
                 </LinearLayout>
 
                 <LinearLayout
@@ -79,7 +80,8 @@
                         android:hint="@string/rpassword"
                         android:paddingLeft="10dp"
                         android:textColor="@color/white"
-                        android:textColorHint="@color/white" />
+                        android:textColorHint="@color/white"
+                        android:textCursorDrawable="@drawable/shape_edittext_white_cursor" />
                 </LinearLayout>
 
                 <TextView

+ 225 - 16
app_modular/appme/proguard-rules.pro

@@ -1,25 +1,234 @@
 # Add project specific ProGuard rules here.
 # By default, the flags in this file are appended to flags specified
-# in E:\Android-Studio\sdk/tools/proguard/proguard-android.txt
+# in C:\Android\sdk/tools/proguard/proguard-android.txt
 # You can edit the include path and order by changing the proguardFiles
 # directive in build.gradle.
+
+###############################
+#
+# 公共部分(固定不变)
 #
-# For more details, see
-#   http://developer.android.com/guide/developing/tools/proguard.html
+###############################
+#1.基本指令区
+# 代码混淆压缩比,在0~7之间,默认为5,一般不做修改
+-optimizationpasses 5
+# 混合时不使用大小写混合,混合后的类名为小写
+-dontusemixedcaseclassnames
+# 指定不去忽略非公共库的类
+-dontskipnonpubliclibraryclasses
+# 这句话能够使我们的项目混淆后产生映射文件
+# 包含有类名->混淆后类名的映射关系
+-verbose
+# 指定不去忽略非公共库的类成员
+-dontskipnonpubliclibraryclassmembers
+# 不做预校验,preverify是proguard的四个步骤之一,Android不需要preverify,去掉这一步能够加快混淆速度。
+-dontpreverify
+# 保留Annotation不混淆
+-keepattributes *Annotation*,InnerClasses
+# 避免混淆泛型
+-keepattributes Signature
+# 抛出异常时保留代码行号
+-keepattributes SourceFile,LineNumberTable
+# 指定混淆是采用的算法,后面的参数是一个过滤器
+# 这个过滤器是谷歌推荐的算法,一般不做更改
+-optimizations !code/simplification/cast,!field/*,!class/merging/*
+
+#2.默认保留区
+# 保留我们使用的四大组件,自定义的Application等等这些类不被混淆
+# 因为这些子类都有可能被外部调用
+-keep public class * extends android.app.Activity
+-keep public class * extends android.app.Application
+-keep public class * extends android.app.Service
+-keep public class * extends android.content.BroadcastReceiver
+-keep public class * extends android.content.ContentProvider
+-keep public class * extends android.app.backup.BackupAgentHelper
+-keep public class * extends android.preference.Preference
+-keep public class * extends android.view.View
+-keep public class com.android.vending.licensing.ILicensingService
+# 保留support下的所有类及其内部类
+-keep class android.support.** {*;}
+# 保留继承的
+-keep public class * extends android.support.v4.**
+-keep public class * extends android.support.v7.**
+-keep public class * extends android.support.annotation.**
+# 保留R下面的资源
+-keep class **.R$* {*;}
+
+# 保留本地native方法不被混淆
+-keepclasseswithmembernames class * {
+    native <methods>;
+}
+# 保留在Activity中的方法参数是view的方法,
+# 这样以来我们在layout中写的onClick就不会被影响
+-keepclassmembers class * extends android.app.Activity{
+    public void *(android.view.View);
+}
+# 保留枚举类不被混淆
+-keepclassmembers enum * {
+    public static **[] values();
+    public static ** valueOf(java.lang.String);
+}
+# 保留我们自定义控件(继承自View)不被混淆
+-keep public class * extends android.view.View{
+    *** get*();
+    void set*(***);
+    public <init>(android.content.Context);
+    public <init>(android.content.Context, android.util.AttributeSet);
+    public <init>(android.content.Context, android.util.AttributeSet, int);
+}
+-keepclasseswithmembers class * {
+    public <init>(android.content.Context, android.util.AttributeSet);
+    public <init>(android.content.Context, android.util.AttributeSet, int);
+}
 
-# Add any project specific keep options here:
+# 保留Parcelable序列化类不被混淆
+-keep class * implements android.os.Parcelable {
+    public static final android.os.Parcelable$Creator *;
+}
+# 保留Serializable序列化的类不被混淆
+-keepclassmembers class * implements java.io.Serializable {
+    static final long serialVersionUID;
+    private static final java.io.ObjectStreamField[] serialPersistentFields;
+    !static !transient <fields>;
+    !private <fields>;
+    !private <methods>;
+    private void writeObject(java.io.ObjectOutputStream);
+    private void readObject(java.io.ObjectInputStream);
+    java.lang.Object writeReplace();
+    java.lang.Object readResolve();
+}
+# 对于带有回调函数的onXXEvent、**On*Listener的,不能被混淆
+-keepclassmembers class * {
+    void *(**On*Event);
+}
 
-# If your project uses WebView with JS, uncomment the following
-# and specify the fully qualified class name to the JavaScript interface
-# class:
-#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
-#   public *;
-#}
+#3.webview
+-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+   public *;
+}
+-keepclassmembers class * extends android.webkit.webViewClient {
+    public void *(android.webkit.WebView, java.lang.String, android.graphics.Bitmap);
+    public boolean *(android.webkit.WebView, java.lang.String);
+}
+-keepclassmembers class * extends android.webkit.webViewClient {
+    public void *(android.webkit.webView, jav.lang.String);
+}
+#移除Log类打印各个等级日志的代码,打正式包的时候可以做为禁log使用
+#这里可以作为禁止log打印的功能使用,另外的一种实现方案是通过BuildConfig.DEBUG的变量来控制
+-assumenosideeffects class android.util.Log {
+    public static *** v(...);
+    public static *** i(...);
+    public static *** d(...);
+    public static *** w(...);
+    public static *** e(...);
+}
+
+
+###############################
+#
+# 第三方jar包
+#
+###############################
+-keep class com.baidu.** {*;}
+-keep class vi.com.** {*;}
+-dontwarn com.baidu.**
 
-# Uncomment this to preserve the line number information for
-# debugging stack traces.
-#-keepattributes SourceFile,LineNumberTable
+-keep class com.uuzuche.lib_zxing.** {*;}
+-keep class com.andreabaccega.** {*;}
+-keep class com.github.clans.fab.** {*;}
+-keep class com.yalantis.phoenix.** {*;}
+-keep class com.baoyz.swipemenulistview.** {*;}
+-keep class com.viewpagerindicator.** {*;}
+-keep class com.afollestad.materialdialogs.** {*;}
+-keep class com.github.mikephil.charting.** {*;}
+-keep class com.module.recyclerlibrary.** {*;}
+-keep class com.handmark.pulltorefresh.library.** {*;}
+-keep class cc.cloudist.acplibrary.** {*;}
+
+-keep class android.arch.core.internal.** {*;}
+-keep class android.arch.lifecycle.** {*;}
+-keep class com.alibaba.fastjson.** {*;}
+-dontwarn com.alibaba.fastjson.**
+-keep class android.support.graphics.drawable.** {*;}
+-keep class com.facebook.stetho.** {*;}
+-keep class javax.annotation.** {*;}
+-keep class com.lidroid.xutils.** {*;}
+-keep class okhttp3.** {*;}
+-keep class okio.** {*;}
+-dontwarn okio.**
+-keep class org.apache.** {*;}
+-keep class org.junit.** {*;}
+-keep class junit.** {*;}
+-keep class org.hamcrest.** {*;}
+
+-keep class sun.misc.Unsafe {*;}
+-keep class com.google.gson.** {*;}
+-keep class com.google.gson.stream.** {*;}
+-keep class com.android.volley.** {*;}
+
+-keep class butterknife.** {*;}
+-dontwarn butterknife.internal.**
+-keep class **$$ViewBinder { *; }
+
+-keep class cat.ereza.customactivityoncrash.** {*;}
+-keep class uk.co.senab.photoview.** {*;}
+-keep class com.flipboard.bottomsheet.** {*;}
+-keep class flipboard.bottomsheet.** {*;}
+-keep class com.bumptech.glide.** {*;}
+-keep class com.chad.library.** {*;}
+-keep class com.tonicartos.widget.stickygridheaders.** {*;}
+-keep class com.orhanobut.logger.** {*;}
+-keep class com.readystatesoftware.systembartint.** {*;}
+-keep class com.scwang.smartrefresh.** {*;}
+-keep class com.squareup.** {*;}
+-keep class com.tencent.** {*;}
+-keep class com.umeng.analytics.** {*;}
+-keep class com.youth.banner.** {*;}
+-keep class de.hdodenhof.circleimageview.** {*;}
+-keep class rx.** {*;}
+-keep class org.joda.time.** {*;}
+-keep class me.gujun.android.taggroup.** {*;}
+-keep class me.zhanghai.android.materialprogressbar.** {*;}
+-keep class android.net.** {*;}
+-keep class com.android.internal.http.multipart.** {*;}
+-keep class pl.droidsonroids.gif.** {*;}
+-keep class se.emilsjolander.stickylistheaders.** {*;}
+-keep class com.alipay.** {*;}
+-dontwarn com.alipay.**
+-keep class com.tencent.mm.sdk.** {
+   *;
+}
+
+###############################
+#
+# 自己的代码
+# 引用的其他Module可以直接在app的这个混淆文件里配置
+#
+###############################
+#实体类
+-keep class com.modular.booking.model.** {*;}
+-keep class com.uas.appcontact.model.** {*;}
+-keep class com.modular.login.model.** {*;}
+-keep class com.modular.booking.model.** {*;}
+-keep class com.uas.appme.settings.model.** {*;}
+-keep class com.modular.appmessages.model.** {*;}
+-keep class com.modular.apputils.model.** {*;}
+-keep class com.uas.appworks.model.** {*;}
+-keep class com.xzjmyk.pm.activity.bean.** {*;}
+-keep class com.modular.apputils.model.** {*;}
+#自定义控件
+-keep class com.core.widget.** {*;}
+-keep class com.modular.booking.widget.** {*;}
+-keep class com.uas.appcontact.ui.widget.stickylistheaders.** {*;}
+-keep class com.uas.appme.widget.** {*;}
+-keep class com.modular.appmessages.widget.** {*;}
+-keep class com.modular.apputils.widget.** {*;}
+-keep class com.uas.appworks.widget.** {*;}
+-keep class com.ipaulpro.afilechooser.** {*;}
+-keep class com.roamer.slidelistview.** {*;}
+-keep class com.xzjmyk.pm.activity.view.** {*;}
+-keep class com.xzjmyk.pm.activity.video.** {*;}
+-keep class com.modular.apputils.utils.** {*;}
+#与js互相调用的类
+-keep class com.com.xzjmyk.pm.activity.ui.erp.activity.WebViewCommActivity.JSWebView
 
-# If you keep the line number information, uncomment this to
-# hide the original source file name.
-#-renamesourcefileattribute SourceFile

+ 225 - 16
app_modular/appmessages/proguard-rules.pro

@@ -1,25 +1,234 @@
 # Add project specific ProGuard rules here.
 # By default, the flags in this file are appended to flags specified
-# in C:\Users\Bitliker\AppData\Local\Android\Sdk/tools/proguard/proguard-android.txt
+# in C:\Android\sdk/tools/proguard/proguard-android.txt
 # You can edit the include path and order by changing the proguardFiles
 # directive in build.gradle.
+
+###############################
+#
+# 公共部分(固定不变)
 #
-# For more details, see
-#   http://developer.android.com/guide/developing/tools/proguard.html
+###############################
+#1.基本指令区
+# 代码混淆压缩比,在0~7之间,默认为5,一般不做修改
+-optimizationpasses 5
+# 混合时不使用大小写混合,混合后的类名为小写
+-dontusemixedcaseclassnames
+# 指定不去忽略非公共库的类
+-dontskipnonpubliclibraryclasses
+# 这句话能够使我们的项目混淆后产生映射文件
+# 包含有类名->混淆后类名的映射关系
+-verbose
+# 指定不去忽略非公共库的类成员
+-dontskipnonpubliclibraryclassmembers
+# 不做预校验,preverify是proguard的四个步骤之一,Android不需要preverify,去掉这一步能够加快混淆速度。
+-dontpreverify
+# 保留Annotation不混淆
+-keepattributes *Annotation*,InnerClasses
+# 避免混淆泛型
+-keepattributes Signature
+# 抛出异常时保留代码行号
+-keepattributes SourceFile,LineNumberTable
+# 指定混淆是采用的算法,后面的参数是一个过滤器
+# 这个过滤器是谷歌推荐的算法,一般不做更改
+-optimizations !code/simplification/cast,!field/*,!class/merging/*
+
+#2.默认保留区
+# 保留我们使用的四大组件,自定义的Application等等这些类不被混淆
+# 因为这些子类都有可能被外部调用
+-keep public class * extends android.app.Activity
+-keep public class * extends android.app.Application
+-keep public class * extends android.app.Service
+-keep public class * extends android.content.BroadcastReceiver
+-keep public class * extends android.content.ContentProvider
+-keep public class * extends android.app.backup.BackupAgentHelper
+-keep public class * extends android.preference.Preference
+-keep public class * extends android.view.View
+-keep public class com.android.vending.licensing.ILicensingService
+# 保留support下的所有类及其内部类
+-keep class android.support.** {*;}
+# 保留继承的
+-keep public class * extends android.support.v4.**
+-keep public class * extends android.support.v7.**
+-keep public class * extends android.support.annotation.**
+# 保留R下面的资源
+-keep class **.R$* {*;}
+
+# 保留本地native方法不被混淆
+-keepclasseswithmembernames class * {
+    native <methods>;
+}
+# 保留在Activity中的方法参数是view的方法,
+# 这样以来我们在layout中写的onClick就不会被影响
+-keepclassmembers class * extends android.app.Activity{
+    public void *(android.view.View);
+}
+# 保留枚举类不被混淆
+-keepclassmembers enum * {
+    public static **[] values();
+    public static ** valueOf(java.lang.String);
+}
+# 保留我们自定义控件(继承自View)不被混淆
+-keep public class * extends android.view.View{
+    *** get*();
+    void set*(***);
+    public <init>(android.content.Context);
+    public <init>(android.content.Context, android.util.AttributeSet);
+    public <init>(android.content.Context, android.util.AttributeSet, int);
+}
+-keepclasseswithmembers class * {
+    public <init>(android.content.Context, android.util.AttributeSet);
+    public <init>(android.content.Context, android.util.AttributeSet, int);
+}
 
-# Add any project specific keep options here:
+# 保留Parcelable序列化类不被混淆
+-keep class * implements android.os.Parcelable {
+    public static final android.os.Parcelable$Creator *;
+}
+# 保留Serializable序列化的类不被混淆
+-keepclassmembers class * implements java.io.Serializable {
+    static final long serialVersionUID;
+    private static final java.io.ObjectStreamField[] serialPersistentFields;
+    !static !transient <fields>;
+    !private <fields>;
+    !private <methods>;
+    private void writeObject(java.io.ObjectOutputStream);
+    private void readObject(java.io.ObjectInputStream);
+    java.lang.Object writeReplace();
+    java.lang.Object readResolve();
+}
+# 对于带有回调函数的onXXEvent、**On*Listener的,不能被混淆
+-keepclassmembers class * {
+    void *(**On*Event);
+}
 
-# If your project uses WebView with JS, uncomment the following
-# and specify the fully qualified class name to the JavaScript interface
-# class:
-#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
-#   public *;
-#}
+#3.webview
+-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+   public *;
+}
+-keepclassmembers class * extends android.webkit.webViewClient {
+    public void *(android.webkit.WebView, java.lang.String, android.graphics.Bitmap);
+    public boolean *(android.webkit.WebView, java.lang.String);
+}
+-keepclassmembers class * extends android.webkit.webViewClient {
+    public void *(android.webkit.webView, jav.lang.String);
+}
+#移除Log类打印各个等级日志的代码,打正式包的时候可以做为禁log使用
+#这里可以作为禁止log打印的功能使用,另外的一种实现方案是通过BuildConfig.DEBUG的变量来控制
+-assumenosideeffects class android.util.Log {
+    public static *** v(...);
+    public static *** i(...);
+    public static *** d(...);
+    public static *** w(...);
+    public static *** e(...);
+}
+
+
+###############################
+#
+# 第三方jar包
+#
+###############################
+-keep class com.baidu.** {*;}
+-keep class vi.com.** {*;}
+-dontwarn com.baidu.**
 
-# Uncomment this to preserve the line number information for
-# debugging stack traces.
-#-keepattributes SourceFile,LineNumberTable
+-keep class com.uuzuche.lib_zxing.** {*;}
+-keep class com.andreabaccega.** {*;}
+-keep class com.github.clans.fab.** {*;}
+-keep class com.yalantis.phoenix.** {*;}
+-keep class com.baoyz.swipemenulistview.** {*;}
+-keep class com.viewpagerindicator.** {*;}
+-keep class com.afollestad.materialdialogs.** {*;}
+-keep class com.github.mikephil.charting.** {*;}
+-keep class com.module.recyclerlibrary.** {*;}
+-keep class com.handmark.pulltorefresh.library.** {*;}
+-keep class cc.cloudist.acplibrary.** {*;}
+
+-keep class android.arch.core.internal.** {*;}
+-keep class android.arch.lifecycle.** {*;}
+-keep class com.alibaba.fastjson.** {*;}
+-dontwarn com.alibaba.fastjson.**
+-keep class android.support.graphics.drawable.** {*;}
+-keep class com.facebook.stetho.** {*;}
+-keep class javax.annotation.** {*;}
+-keep class com.lidroid.xutils.** {*;}
+-keep class okhttp3.** {*;}
+-keep class okio.** {*;}
+-dontwarn okio.**
+-keep class org.apache.** {*;}
+-keep class org.junit.** {*;}
+-keep class junit.** {*;}
+-keep class org.hamcrest.** {*;}
+
+-keep class sun.misc.Unsafe {*;}
+-keep class com.google.gson.** {*;}
+-keep class com.google.gson.stream.** {*;}
+-keep class com.android.volley.** {*;}
+
+-keep class butterknife.** {*;}
+-dontwarn butterknife.internal.**
+-keep class **$$ViewBinder { *; }
+
+-keep class cat.ereza.customactivityoncrash.** {*;}
+-keep class uk.co.senab.photoview.** {*;}
+-keep class com.flipboard.bottomsheet.** {*;}
+-keep class flipboard.bottomsheet.** {*;}
+-keep class com.bumptech.glide.** {*;}
+-keep class com.chad.library.** {*;}
+-keep class com.tonicartos.widget.stickygridheaders.** {*;}
+-keep class com.orhanobut.logger.** {*;}
+-keep class com.readystatesoftware.systembartint.** {*;}
+-keep class com.scwang.smartrefresh.** {*;}
+-keep class com.squareup.** {*;}
+-keep class com.tencent.** {*;}
+-keep class com.umeng.analytics.** {*;}
+-keep class com.youth.banner.** {*;}
+-keep class de.hdodenhof.circleimageview.** {*;}
+-keep class rx.** {*;}
+-keep class org.joda.time.** {*;}
+-keep class me.gujun.android.taggroup.** {*;}
+-keep class me.zhanghai.android.materialprogressbar.** {*;}
+-keep class android.net.** {*;}
+-keep class com.android.internal.http.multipart.** {*;}
+-keep class pl.droidsonroids.gif.** {*;}
+-keep class se.emilsjolander.stickylistheaders.** {*;}
+-keep class com.alipay.** {*;}
+-dontwarn com.alipay.**
+-keep class com.tencent.mm.sdk.** {
+   *;
+}
+
+###############################
+#
+# 自己的代码
+# 引用的其他Module可以直接在app的这个混淆文件里配置
+#
+###############################
+#实体类
+-keep class com.modular.booking.model.** {*;}
+-keep class com.uas.appcontact.model.** {*;}
+-keep class com.modular.login.model.** {*;}
+-keep class com.modular.booking.model.** {*;}
+-keep class com.uas.appme.settings.model.** {*;}
+-keep class com.modular.appmessages.model.** {*;}
+-keep class com.modular.apputils.model.** {*;}
+-keep class com.uas.appworks.model.** {*;}
+-keep class com.xzjmyk.pm.activity.bean.** {*;}
+-keep class com.modular.apputils.model.** {*;}
+#自定义控件
+-keep class com.core.widget.** {*;}
+-keep class com.modular.booking.widget.** {*;}
+-keep class com.uas.appcontact.ui.widget.stickylistheaders.** {*;}
+-keep class com.uas.appme.widget.** {*;}
+-keep class com.modular.appmessages.widget.** {*;}
+-keep class com.modular.apputils.widget.** {*;}
+-keep class com.uas.appworks.widget.** {*;}
+-keep class com.ipaulpro.afilechooser.** {*;}
+-keep class com.roamer.slidelistview.** {*;}
+-keep class com.xzjmyk.pm.activity.view.** {*;}
+-keep class com.xzjmyk.pm.activity.video.** {*;}
+-keep class com.modular.apputils.utils.** {*;}
+#与js互相调用的类
+-keep class com.com.xzjmyk.pm.activity.ui.erp.activity.WebViewCommActivity.JSWebView
 
-# If you keep the line number information, uncomment this to
-# hide the original source file name.
-#-renamesourcefileattribute SourceFile

+ 2 - 0
app_modular/appmessages/src/main/java/com/modular/appmessages/activity/ApprovalActivity.java

@@ -35,6 +35,7 @@ import com.common.system.DisplayUtil;
 import com.core.app.AppConfig;
 import com.core.app.MyApplication;
 import com.core.base.SupportToolBarActivity;
+import com.core.base.view.AndroidBug5497Workaround;
 import com.core.model.Approval;
 import com.core.model.OAConfig;
 import com.core.model.SelectBean;
@@ -187,6 +188,7 @@ public class ApprovalActivity extends SupportToolBarActivity implements IApprova
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_approval);
+        AndroidBug5497Workaround.assistActivity(this);
         initView();
     }
 

+ 16 - 1
app_modular/appmessages/src/main/java/com/modular/appmessages/activity/ApprovalNewListActivity.java

@@ -54,7 +54,6 @@ public class ApprovalNewListActivity extends SupportToolBarActivity {
         tabUnReadNum = findViewById(R.id.tabUnReadNum);
         mVoiceSearchView.addTextChangedListener(mEditChangeListener);
         findViewById(R.id.backImg).setOnClickListener(mOnClickListener);
-
         mTabLayout.setTabMode(TabLayout.MODE_FIXED);//设置tab模式,当前为系统默认模式
         mTabLayout.addTab(mTabLayout.newTab().setText(tabTitle[0]));//添加tab选项卡
         mTabLayout.addTab(mTabLayout.newTab().setText(tabTitle[1]));
@@ -62,6 +61,22 @@ public class ApprovalNewListActivity extends SupportToolBarActivity {
         ViewPageAdapter mAdapter = new ViewPageAdapter(getSupportFragmentManager());
         mViewPager.setAdapter(mAdapter);//给ViewPager设置适配器
         mTabLayout.setupWithViewPager(mViewPager);//将TabLayout和ViewPager关联起来。
+        mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
+            @Override
+            public void onPageScrolled(int i, float v, int i1) {
+
+            }
+
+            @Override
+            public void onPageSelected(int i) {
+                mVoiceSearchView.setText("");
+            }
+
+            @Override
+            public void onPageScrollStateChanged(int i) {
+
+            }
+        });
     }
 
 

+ 11 - 0
app_modular/appmessages/src/main/java/com/modular/appmessages/activity/RealTimeFormActivity.java

@@ -7,6 +7,8 @@ import android.support.v7.widget.LinearLayoutManager;
 import android.support.v7.widget.RecyclerView;
 import android.text.TextUtils;
 import android.view.View;
+import android.widget.LinearLayout;
+import android.widget.TextView;
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
@@ -43,6 +45,8 @@ public class RealTimeFormActivity extends BaseActivity {
     private int[] mGridColors = new int[]{R.color.data_inquiry_gird_menu_color1, R.color.data_inquiry_gird_menu_color2
             , R.color.data_inquiry_gird_menu_color3, R.color.data_inquiry_gird_menu_color4, R.color.data_inquiry_gird_menu_color5,
             R.color.data_inquiry_gird_menu_color6};
+    private LinearLayout mEmptyLayout;
+    private TextView mEmptyTextView;
     private boolean isB2b;
 
     @Override
@@ -113,6 +117,8 @@ public class RealTimeFormActivity extends BaseActivity {
                         mRealTimeFormMenuAdapter.notifyDataSetChanged();
                     } else {
                         ToastUtil.showToast(RealTimeFormActivity.this, "看板数据为空");
+                        mEmptyLayout.setVisibility(View.VISIBLE);
+                        mEmptyTextView.setText("看板数据为空");
                     }
                 }
 
@@ -120,6 +126,8 @@ public class RealTimeFormActivity extends BaseActivity {
                 public void onFailure(Object t) {
                     progressDialog.dismiss();
                     ToastUtil.showToast(RealTimeFormActivity.this, "看板数据获取失败");
+                    mEmptyLayout.setVisibility(View.VISIBLE);
+                    mEmptyTextView.setText("看板数据获取失败");
                 }
             }));
         }
@@ -129,6 +137,9 @@ public class RealTimeFormActivity extends BaseActivity {
         getSupportActionBar().setTitle(R.string.real_time_form);
         isB2b = ApiUtils.getApiModel() instanceof ApiPlatform;
         mRecyclerView = (RecyclerView) findViewById(R.id.real_time_form_rv);
+        mEmptyLayout = (LinearLayout) findViewById(R.id.real_time_form_empty_ll);
+        mEmptyTextView = (TextView) findViewById(R.id.real_time_form_msg_tv);
+
         mGridLayoutManager = new GridLayoutManager(this, 3, LinearLayoutManager.VERTICAL, false);
         mRecyclerView.setLayoutManager(mGridLayoutManager);
         mRealTimeFormMenuBeen = new ArrayList<>();

+ 3 - 2
app_modular/appmessages/src/main/java/com/modular/appmessages/adapter/ApprovalAdapter.java

@@ -191,6 +191,7 @@ public class ApprovalAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolde
 
     private void bindNodeView(NodeViewHolder holder, int position) {
         Approval approval = approvals.get(position);
+        LogUtil.i("gong","approval.idkey="+approval.getIdKey());
         if (position > 0 && approvals.get(position - 1).getType() == Approval.NODES_TAG || approvals.get(position - 1).getType() == Approval.NODES) {
             holder.padding.setVisibility(View.GONE);
         } else {
@@ -211,13 +212,13 @@ public class ApprovalAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolde
         int reId = R.drawable.daishenpi;
         String status = "";
         if (!StringUtil.isEmpty(approval.getIdKey())) {
-//            holder.valuesTv.setText(approval.getIdKey());
+            holder.valuesTv.setText(approval.getIdKey());
             if (approval.getIdKey().startsWith("待审批")) {
                 textColor = R.color.approvaling;
                 reId = R.drawable.daishenpi;
                 status = "等待" + "" + "审批";
             } else if (approval.getIdKey().startsWith("未通过") || approval.getIdKey().startsWith("结束") || approval.getIdKey().startsWith("不同意")) {
-                textColor = R.color.crimson;
+                textColor = R.color.done_approval;
                 reId = R.drawable.node_finished3;
                 status = "不同意";
             } else if (approval.getIdKey().startsWith("已审批") || approval.getIdKey().startsWith("变更") || approval.getIdKey().startsWith("同意")) {

+ 12 - 2
app_modular/appmessages/src/main/java/com/modular/appmessages/widget/SignRefreshLayout.java

@@ -177,8 +177,8 @@ public class SignRefreshLayout extends ViewGroup {
                     View child = getChildAt(0);
                     if (status == SIGN_REFRESH) {
                         intercept = true;
-                    } else if (child instanceof ScrollView) {
-                        intercept = svPullUpIntercept(child);
+                    } else {
+                        intercept = false;
                     }
                 } else {
                     intercept = false;
@@ -192,9 +192,18 @@ public class SignRefreshLayout extends ViewGroup {
             }
         }
         mLastYIntercept = y;
+        LogUtil.i("gong","intercept="+intercept);
         return intercept;
     }
+    private boolean rvPullUpIntercept(View child) {
+        boolean intercept = false;
+        RecyclerView recyclerChild = (RecyclerView) child;
+        if (recyclerChild.computeVerticalScrollExtent() + recyclerChild.computeVerticalScrollOffset()
+                >= recyclerChild.computeVerticalScrollRange())
+            intercept = true;
 
+        return intercept;
+    }
     private boolean svPullUpIntercept(View child) {
         boolean intercept = false;
         ScrollView scrollView = (ScrollView) child;
@@ -442,6 +451,7 @@ public class SignRefreshLayout extends ViewGroup {
             setEnablePullDown(false);
             updateStatus(SIGN_REFRESH);
         } else {
+            updateStatus(SIGN_TRY_REFRESH);
             mLayoutScroller.startScroll(0, getScrollY(), 0, -getScrollY(), SCROLL_SPEED);
             mUIHandler.postDelayed(new Runnable() {
                 @Override

+ 37 - 12
app_modular/appmessages/src/main/res/layout/activity_real_time_form.xml

@@ -1,15 +1,40 @@
 <?xml version="1.0" encoding="utf-8"?>
-<LinearLayout
-xmlns:android="http://schemas.android.com/apk/res/android"
-android:layout_width="match_parent"
-android:layout_height="match_parent"
-android:orientation="vertical"
-android:background="@color/me_menu_item_normal">
-
-<android.support.v7.widget.RecyclerView
-    android:id="@+id/real_time_form_rv"
+<FrameLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    android:overScrollMode="never"
-    android:padding="20dp"/>
-</LinearLayout>
+    android:background="@color/me_menu_item_normal">
+
+    <android.support.v7.widget.RecyclerView
+        android:id="@+id/real_time_form_rv"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:overScrollMode="never"
+        android:padding="20dp" />
+
+    <LinearLayout
+        android:id="@+id/real_time_form_empty_ll"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:layout_centerInParent="true"
+        android:background="@color/white"
+        android:gravity="center"
+        android:orientation="vertical"
+        android:visibility="gone">
+
+        <pl.droidsonroids.gif.GifImageView
+            android:layout_width="110dp"
+            android:layout_height="110dp"
+            android:scaleType="fitEnd"
+            android:src="@drawable/gif_empty_view" />
+
+        <TextView
+            android:id="@+id/real_time_form_msg_tv"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginBottom="90dp"
+            android:text="看板数据为空"
+            android:textColor="?attr/editTextColor"
+            android:textSize="14sp" />
+    </LinearLayout>
+</FrameLayout>

+ 227 - 10
app_modular/appmoments/proguard-rules.pro

@@ -1,17 +1,234 @@
 # Add project specific ProGuard rules here.
 # By default, the flags in this file are appended to flags specified
-# in D:\Android\sdk/tools/proguard/proguard-android.txt
+# in C:\Android\sdk/tools/proguard/proguard-android.txt
 # You can edit the include path and order by changing the proguardFiles
 # directive in build.gradle.
+
+###############################
+#
+# 公共部分(固定不变)
 #
-# For more details, see
-#   http://developer.android.com/guide/developing/tools/proguard.html
+###############################
+#1.基本指令区
+# 代码混淆压缩比,在0~7之间,默认为5,一般不做修改
+-optimizationpasses 5
+# 混合时不使用大小写混合,混合后的类名为小写
+-dontusemixedcaseclassnames
+# 指定不去忽略非公共库的类
+-dontskipnonpubliclibraryclasses
+# 这句话能够使我们的项目混淆后产生映射文件
+# 包含有类名->混淆后类名的映射关系
+-verbose
+# 指定不去忽略非公共库的类成员
+-dontskipnonpubliclibraryclassmembers
+# 不做预校验,preverify是proguard的四个步骤之一,Android不需要preverify,去掉这一步能够加快混淆速度。
+-dontpreverify
+# 保留Annotation不混淆
+-keepattributes *Annotation*,InnerClasses
+# 避免混淆泛型
+-keepattributes Signature
+# 抛出异常时保留代码行号
+-keepattributes SourceFile,LineNumberTable
+# 指定混淆是采用的算法,后面的参数是一个过滤器
+# 这个过滤器是谷歌推荐的算法,一般不做更改
+-optimizations !code/simplification/cast,!field/*,!class/merging/*
+
+#2.默认保留区
+# 保留我们使用的四大组件,自定义的Application等等这些类不被混淆
+# 因为这些子类都有可能被外部调用
+-keep public class * extends android.app.Activity
+-keep public class * extends android.app.Application
+-keep public class * extends android.app.Service
+-keep public class * extends android.content.BroadcastReceiver
+-keep public class * extends android.content.ContentProvider
+-keep public class * extends android.app.backup.BackupAgentHelper
+-keep public class * extends android.preference.Preference
+-keep public class * extends android.view.View
+-keep public class com.android.vending.licensing.ILicensingService
+# 保留support下的所有类及其内部类
+-keep class android.support.** {*;}
+# 保留继承的
+-keep public class * extends android.support.v4.**
+-keep public class * extends android.support.v7.**
+-keep public class * extends android.support.annotation.**
+# 保留R下面的资源
+-keep class **.R$* {*;}
+
+# 保留本地native方法不被混淆
+-keepclasseswithmembernames class * {
+    native <methods>;
+}
+# 保留在Activity中的方法参数是view的方法,
+# 这样以来我们在layout中写的onClick就不会被影响
+-keepclassmembers class * extends android.app.Activity{
+    public void *(android.view.View);
+}
+# 保留枚举类不被混淆
+-keepclassmembers enum * {
+    public static **[] values();
+    public static ** valueOf(java.lang.String);
+}
+# 保留我们自定义控件(继承自View)不被混淆
+-keep public class * extends android.view.View{
+    *** get*();
+    void set*(***);
+    public <init>(android.content.Context);
+    public <init>(android.content.Context, android.util.AttributeSet);
+    public <init>(android.content.Context, android.util.AttributeSet, int);
+}
+-keepclasseswithmembers class * {
+    public <init>(android.content.Context, android.util.AttributeSet);
+    public <init>(android.content.Context, android.util.AttributeSet, int);
+}
+
+# 保留Parcelable序列化类不被混淆
+-keep class * implements android.os.Parcelable {
+    public static final android.os.Parcelable$Creator *;
+}
+# 保留Serializable序列化的类不被混淆
+-keepclassmembers class * implements java.io.Serializable {
+    static final long serialVersionUID;
+    private static final java.io.ObjectStreamField[] serialPersistentFields;
+    !static !transient <fields>;
+    !private <fields>;
+    !private <methods>;
+    private void writeObject(java.io.ObjectOutputStream);
+    private void readObject(java.io.ObjectInputStream);
+    java.lang.Object writeReplace();
+    java.lang.Object readResolve();
+}
+# 对于带有回调函数的onXXEvent、**On*Listener的,不能被混淆
+-keepclassmembers class * {
+    void *(**On*Event);
+}
 
-# Add any project specific keep options here:
+#3.webview
+-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+   public *;
+}
+-keepclassmembers class * extends android.webkit.webViewClient {
+    public void *(android.webkit.WebView, java.lang.String, android.graphics.Bitmap);
+    public boolean *(android.webkit.WebView, java.lang.String);
+}
+-keepclassmembers class * extends android.webkit.webViewClient {
+    public void *(android.webkit.webView, jav.lang.String);
+}
+#移除Log类打印各个等级日志的代码,打正式包的时候可以做为禁log使用
+#这里可以作为禁止log打印的功能使用,另外的一种实现方案是通过BuildConfig.DEBUG的变量来控制
+-assumenosideeffects class android.util.Log {
+    public static *** v(...);
+    public static *** i(...);
+    public static *** d(...);
+    public static *** w(...);
+    public static *** e(...);
+}
+
+
+###############################
+#
+# 第三方jar包
+#
+###############################
+-keep class com.baidu.** {*;}
+-keep class vi.com.** {*;}
+-dontwarn com.baidu.**
+
+-keep class com.uuzuche.lib_zxing.** {*;}
+-keep class com.andreabaccega.** {*;}
+-keep class com.github.clans.fab.** {*;}
+-keep class com.yalantis.phoenix.** {*;}
+-keep class com.baoyz.swipemenulistview.** {*;}
+-keep class com.viewpagerindicator.** {*;}
+-keep class com.afollestad.materialdialogs.** {*;}
+-keep class com.github.mikephil.charting.** {*;}
+-keep class com.module.recyclerlibrary.** {*;}
+-keep class com.handmark.pulltorefresh.library.** {*;}
+-keep class cc.cloudist.acplibrary.** {*;}
+
+-keep class android.arch.core.internal.** {*;}
+-keep class android.arch.lifecycle.** {*;}
+-keep class com.alibaba.fastjson.** {*;}
+-dontwarn com.alibaba.fastjson.**
+-keep class android.support.graphics.drawable.** {*;}
+-keep class com.facebook.stetho.** {*;}
+-keep class javax.annotation.** {*;}
+-keep class com.lidroid.xutils.** {*;}
+-keep class okhttp3.** {*;}
+-keep class okio.** {*;}
+-dontwarn okio.**
+-keep class org.apache.** {*;}
+-keep class org.junit.** {*;}
+-keep class junit.** {*;}
+-keep class org.hamcrest.** {*;}
+
+-keep class sun.misc.Unsafe {*;}
+-keep class com.google.gson.** {*;}
+-keep class com.google.gson.stream.** {*;}
+-keep class com.android.volley.** {*;}
+
+-keep class butterknife.** {*;}
+-dontwarn butterknife.internal.**
+-keep class **$$ViewBinder { *; }
+
+-keep class cat.ereza.customactivityoncrash.** {*;}
+-keep class uk.co.senab.photoview.** {*;}
+-keep class com.flipboard.bottomsheet.** {*;}
+-keep class flipboard.bottomsheet.** {*;}
+-keep class com.bumptech.glide.** {*;}
+-keep class com.chad.library.** {*;}
+-keep class com.tonicartos.widget.stickygridheaders.** {*;}
+-keep class com.orhanobut.logger.** {*;}
+-keep class com.readystatesoftware.systembartint.** {*;}
+-keep class com.scwang.smartrefresh.** {*;}
+-keep class com.squareup.** {*;}
+-keep class com.tencent.** {*;}
+-keep class com.umeng.analytics.** {*;}
+-keep class com.youth.banner.** {*;}
+-keep class de.hdodenhof.circleimageview.** {*;}
+-keep class rx.** {*;}
+-keep class org.joda.time.** {*;}
+-keep class me.gujun.android.taggroup.** {*;}
+-keep class me.zhanghai.android.materialprogressbar.** {*;}
+-keep class android.net.** {*;}
+-keep class com.android.internal.http.multipart.** {*;}
+-keep class pl.droidsonroids.gif.** {*;}
+-keep class se.emilsjolander.stickylistheaders.** {*;}
+-keep class com.alipay.** {*;}
+-dontwarn com.alipay.**
+-keep class com.tencent.mm.sdk.** {
+   *;
+}
+
+###############################
+#
+# 自己的代码
+# 引用的其他Module可以直接在app的这个混淆文件里配置
+#
+###############################
+#实体类
+-keep class com.modular.booking.model.** {*;}
+-keep class com.uas.appcontact.model.** {*;}
+-keep class com.modular.login.model.** {*;}
+-keep class com.modular.booking.model.** {*;}
+-keep class com.uas.appme.settings.model.** {*;}
+-keep class com.modular.appmessages.model.** {*;}
+-keep class com.modular.apputils.model.** {*;}
+-keep class com.uas.appworks.model.** {*;}
+-keep class com.xzjmyk.pm.activity.bean.** {*;}
+-keep class com.modular.apputils.model.** {*;}
+#自定义控件
+-keep class com.core.widget.** {*;}
+-keep class com.modular.booking.widget.** {*;}
+-keep class com.uas.appcontact.ui.widget.stickylistheaders.** {*;}
+-keep class com.uas.appme.widget.** {*;}
+-keep class com.modular.appmessages.widget.** {*;}
+-keep class com.modular.apputils.widget.** {*;}
+-keep class com.uas.appworks.widget.** {*;}
+-keep class com.ipaulpro.afilechooser.** {*;}
+-keep class com.roamer.slidelistview.** {*;}
+-keep class com.xzjmyk.pm.activity.view.** {*;}
+-keep class com.xzjmyk.pm.activity.video.** {*;}
+-keep class com.modular.apputils.utils.** {*;}
+#与js互相调用的类
+-keep class com.com.xzjmyk.pm.activity.ui.erp.activity.WebViewCommActivity.JSWebView
 
-# If your project uses WebView with JS, uncomment the following
-# and specify the fully qualified class name to the JavaScript interface
-# class:
-#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
-#   public *;
-#}

+ 225 - 16
app_modular/apptasks/proguard-rules.pro

@@ -1,25 +1,234 @@
 # Add project specific ProGuard rules here.
 # By default, the flags in this file are appended to flags specified
-# in C:\Users\Bitliker\AppData\Local\Android\Sdk/tools/proguard/proguard-android.txt
+# in C:\Android\sdk/tools/proguard/proguard-android.txt
 # You can edit the include path and order by changing the proguardFiles
 # directive in build.gradle.
+
+###############################
+#
+# 公共部分(固定不变)
 #
-# For more details, see
-#   http://developer.android.com/guide/developing/tools/proguard.html
+###############################
+#1.基本指令区
+# 代码混淆压缩比,在0~7之间,默认为5,一般不做修改
+-optimizationpasses 5
+# 混合时不使用大小写混合,混合后的类名为小写
+-dontusemixedcaseclassnames
+# 指定不去忽略非公共库的类
+-dontskipnonpubliclibraryclasses
+# 这句话能够使我们的项目混淆后产生映射文件
+# 包含有类名->混淆后类名的映射关系
+-verbose
+# 指定不去忽略非公共库的类成员
+-dontskipnonpubliclibraryclassmembers
+# 不做预校验,preverify是proguard的四个步骤之一,Android不需要preverify,去掉这一步能够加快混淆速度。
+-dontpreverify
+# 保留Annotation不混淆
+-keepattributes *Annotation*,InnerClasses
+# 避免混淆泛型
+-keepattributes Signature
+# 抛出异常时保留代码行号
+-keepattributes SourceFile,LineNumberTable
+# 指定混淆是采用的算法,后面的参数是一个过滤器
+# 这个过滤器是谷歌推荐的算法,一般不做更改
+-optimizations !code/simplification/cast,!field/*,!class/merging/*
+
+#2.默认保留区
+# 保留我们使用的四大组件,自定义的Application等等这些类不被混淆
+# 因为这些子类都有可能被外部调用
+-keep public class * extends android.app.Activity
+-keep public class * extends android.app.Application
+-keep public class * extends android.app.Service
+-keep public class * extends android.content.BroadcastReceiver
+-keep public class * extends android.content.ContentProvider
+-keep public class * extends android.app.backup.BackupAgentHelper
+-keep public class * extends android.preference.Preference
+-keep public class * extends android.view.View
+-keep public class com.android.vending.licensing.ILicensingService
+# 保留support下的所有类及其内部类
+-keep class android.support.** {*;}
+# 保留继承的
+-keep public class * extends android.support.v4.**
+-keep public class * extends android.support.v7.**
+-keep public class * extends android.support.annotation.**
+# 保留R下面的资源
+-keep class **.R$* {*;}
+
+# 保留本地native方法不被混淆
+-keepclasseswithmembernames class * {
+    native <methods>;
+}
+# 保留在Activity中的方法参数是view的方法,
+# 这样以来我们在layout中写的onClick就不会被影响
+-keepclassmembers class * extends android.app.Activity{
+    public void *(android.view.View);
+}
+# 保留枚举类不被混淆
+-keepclassmembers enum * {
+    public static **[] values();
+    public static ** valueOf(java.lang.String);
+}
+# 保留我们自定义控件(继承自View)不被混淆
+-keep public class * extends android.view.View{
+    *** get*();
+    void set*(***);
+    public <init>(android.content.Context);
+    public <init>(android.content.Context, android.util.AttributeSet);
+    public <init>(android.content.Context, android.util.AttributeSet, int);
+}
+-keepclasseswithmembers class * {
+    public <init>(android.content.Context, android.util.AttributeSet);
+    public <init>(android.content.Context, android.util.AttributeSet, int);
+}
 
-# Add any project specific keep options here:
+# 保留Parcelable序列化类不被混淆
+-keep class * implements android.os.Parcelable {
+    public static final android.os.Parcelable$Creator *;
+}
+# 保留Serializable序列化的类不被混淆
+-keepclassmembers class * implements java.io.Serializable {
+    static final long serialVersionUID;
+    private static final java.io.ObjectStreamField[] serialPersistentFields;
+    !static !transient <fields>;
+    !private <fields>;
+    !private <methods>;
+    private void writeObject(java.io.ObjectOutputStream);
+    private void readObject(java.io.ObjectInputStream);
+    java.lang.Object writeReplace();
+    java.lang.Object readResolve();
+}
+# 对于带有回调函数的onXXEvent、**On*Listener的,不能被混淆
+-keepclassmembers class * {
+    void *(**On*Event);
+}
 
-# If your project uses WebView with JS, uncomment the following
-# and specify the fully qualified class name to the JavaScript interface
-# class:
-#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
-#   public *;
-#}
+#3.webview
+-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+   public *;
+}
+-keepclassmembers class * extends android.webkit.webViewClient {
+    public void *(android.webkit.WebView, java.lang.String, android.graphics.Bitmap);
+    public boolean *(android.webkit.WebView, java.lang.String);
+}
+-keepclassmembers class * extends android.webkit.webViewClient {
+    public void *(android.webkit.webView, jav.lang.String);
+}
+#移除Log类打印各个等级日志的代码,打正式包的时候可以做为禁log使用
+#这里可以作为禁止log打印的功能使用,另外的一种实现方案是通过BuildConfig.DEBUG的变量来控制
+-assumenosideeffects class android.util.Log {
+    public static *** v(...);
+    public static *** i(...);
+    public static *** d(...);
+    public static *** w(...);
+    public static *** e(...);
+}
+
+
+###############################
+#
+# 第三方jar包
+#
+###############################
+-keep class com.baidu.** {*;}
+-keep class vi.com.** {*;}
+-dontwarn com.baidu.**
 
-# Uncomment this to preserve the line number information for
-# debugging stack traces.
-#-keepattributes SourceFile,LineNumberTable
+-keep class com.uuzuche.lib_zxing.** {*;}
+-keep class com.andreabaccega.** {*;}
+-keep class com.github.clans.fab.** {*;}
+-keep class com.yalantis.phoenix.** {*;}
+-keep class com.baoyz.swipemenulistview.** {*;}
+-keep class com.viewpagerindicator.** {*;}
+-keep class com.afollestad.materialdialogs.** {*;}
+-keep class com.github.mikephil.charting.** {*;}
+-keep class com.module.recyclerlibrary.** {*;}
+-keep class com.handmark.pulltorefresh.library.** {*;}
+-keep class cc.cloudist.acplibrary.** {*;}
+
+-keep class android.arch.core.internal.** {*;}
+-keep class android.arch.lifecycle.** {*;}
+-keep class com.alibaba.fastjson.** {*;}
+-dontwarn com.alibaba.fastjson.**
+-keep class android.support.graphics.drawable.** {*;}
+-keep class com.facebook.stetho.** {*;}
+-keep class javax.annotation.** {*;}
+-keep class com.lidroid.xutils.** {*;}
+-keep class okhttp3.** {*;}
+-keep class okio.** {*;}
+-dontwarn okio.**
+-keep class org.apache.** {*;}
+-keep class org.junit.** {*;}
+-keep class junit.** {*;}
+-keep class org.hamcrest.** {*;}
+
+-keep class sun.misc.Unsafe {*;}
+-keep class com.google.gson.** {*;}
+-keep class com.google.gson.stream.** {*;}
+-keep class com.android.volley.** {*;}
+
+-keep class butterknife.** {*;}
+-dontwarn butterknife.internal.**
+-keep class **$$ViewBinder { *; }
+
+-keep class cat.ereza.customactivityoncrash.** {*;}
+-keep class uk.co.senab.photoview.** {*;}
+-keep class com.flipboard.bottomsheet.** {*;}
+-keep class flipboard.bottomsheet.** {*;}
+-keep class com.bumptech.glide.** {*;}
+-keep class com.chad.library.** {*;}
+-keep class com.tonicartos.widget.stickygridheaders.** {*;}
+-keep class com.orhanobut.logger.** {*;}
+-keep class com.readystatesoftware.systembartint.** {*;}
+-keep class com.scwang.smartrefresh.** {*;}
+-keep class com.squareup.** {*;}
+-keep class com.tencent.** {*;}
+-keep class com.umeng.analytics.** {*;}
+-keep class com.youth.banner.** {*;}
+-keep class de.hdodenhof.circleimageview.** {*;}
+-keep class rx.** {*;}
+-keep class org.joda.time.** {*;}
+-keep class me.gujun.android.taggroup.** {*;}
+-keep class me.zhanghai.android.materialprogressbar.** {*;}
+-keep class android.net.** {*;}
+-keep class com.android.internal.http.multipart.** {*;}
+-keep class pl.droidsonroids.gif.** {*;}
+-keep class se.emilsjolander.stickylistheaders.** {*;}
+-keep class com.alipay.** {*;}
+-dontwarn com.alipay.**
+-keep class com.tencent.mm.sdk.** {
+   *;
+}
+
+###############################
+#
+# 自己的代码
+# 引用的其他Module可以直接在app的这个混淆文件里配置
+#
+###############################
+#实体类
+-keep class com.modular.booking.model.** {*;}
+-keep class com.uas.appcontact.model.** {*;}
+-keep class com.modular.login.model.** {*;}
+-keep class com.modular.booking.model.** {*;}
+-keep class com.uas.appme.settings.model.** {*;}
+-keep class com.modular.appmessages.model.** {*;}
+-keep class com.modular.apputils.model.** {*;}
+-keep class com.uas.appworks.model.** {*;}
+-keep class com.xzjmyk.pm.activity.bean.** {*;}
+-keep class com.modular.apputils.model.** {*;}
+#自定义控件
+-keep class com.core.widget.** {*;}
+-keep class com.modular.booking.widget.** {*;}
+-keep class com.uas.appcontact.ui.widget.stickylistheaders.** {*;}
+-keep class com.uas.appme.widget.** {*;}
+-keep class com.modular.appmessages.widget.** {*;}
+-keep class com.modular.apputils.widget.** {*;}
+-keep class com.uas.appworks.widget.** {*;}
+-keep class com.ipaulpro.afilechooser.** {*;}
+-keep class com.roamer.slidelistview.** {*;}
+-keep class com.xzjmyk.pm.activity.view.** {*;}
+-keep class com.xzjmyk.pm.activity.video.** {*;}
+-keep class com.modular.apputils.utils.** {*;}
+#与js互相调用的类
+-keep class com.com.xzjmyk.pm.activity.ui.erp.activity.WebViewCommActivity.JSWebView
 
-# If you keep the line number information, uncomment this to
-# hide the original source file name.
-#-renamesourcefileattribute SourceFile

+ 225 - 16
app_modular/apputils/proguard-rules.pro

@@ -1,25 +1,234 @@
 # Add project specific ProGuard rules here.
 # By default, the flags in this file are appended to flags specified
-# in C:\Users\Bitliker\AppData\Local\Android\Sdk/tools/proguard/proguard-android.txt
+# in C:\Android\sdk/tools/proguard/proguard-android.txt
 # You can edit the include path and order by changing the proguardFiles
 # directive in build.gradle.
+
+###############################
+#
+# 公共部分(固定不变)
 #
-# For more details, see
-#   http://developer.android.com/guide/developing/tools/proguard.html
+###############################
+#1.基本指令区
+# 代码混淆压缩比,在0~7之间,默认为5,一般不做修改
+-optimizationpasses 5
+# 混合时不使用大小写混合,混合后的类名为小写
+-dontusemixedcaseclassnames
+# 指定不去忽略非公共库的类
+-dontskipnonpubliclibraryclasses
+# 这句话能够使我们的项目混淆后产生映射文件
+# 包含有类名->混淆后类名的映射关系
+-verbose
+# 指定不去忽略非公共库的类成员
+-dontskipnonpubliclibraryclassmembers
+# 不做预校验,preverify是proguard的四个步骤之一,Android不需要preverify,去掉这一步能够加快混淆速度。
+-dontpreverify
+# 保留Annotation不混淆
+-keepattributes *Annotation*,InnerClasses
+# 避免混淆泛型
+-keepattributes Signature
+# 抛出异常时保留代码行号
+-keepattributes SourceFile,LineNumberTable
+# 指定混淆是采用的算法,后面的参数是一个过滤器
+# 这个过滤器是谷歌推荐的算法,一般不做更改
+-optimizations !code/simplification/cast,!field/*,!class/merging/*
+
+#2.默认保留区
+# 保留我们使用的四大组件,自定义的Application等等这些类不被混淆
+# 因为这些子类都有可能被外部调用
+-keep public class * extends android.app.Activity
+-keep public class * extends android.app.Application
+-keep public class * extends android.app.Service
+-keep public class * extends android.content.BroadcastReceiver
+-keep public class * extends android.content.ContentProvider
+-keep public class * extends android.app.backup.BackupAgentHelper
+-keep public class * extends android.preference.Preference
+-keep public class * extends android.view.View
+-keep public class com.android.vending.licensing.ILicensingService
+# 保留support下的所有类及其内部类
+-keep class android.support.** {*;}
+# 保留继承的
+-keep public class * extends android.support.v4.**
+-keep public class * extends android.support.v7.**
+-keep public class * extends android.support.annotation.**
+# 保留R下面的资源
+-keep class **.R$* {*;}
+
+# 保留本地native方法不被混淆
+-keepclasseswithmembernames class * {
+    native <methods>;
+}
+# 保留在Activity中的方法参数是view的方法,
+# 这样以来我们在layout中写的onClick就不会被影响
+-keepclassmembers class * extends android.app.Activity{
+    public void *(android.view.View);
+}
+# 保留枚举类不被混淆
+-keepclassmembers enum * {
+    public static **[] values();
+    public static ** valueOf(java.lang.String);
+}
+# 保留我们自定义控件(继承自View)不被混淆
+-keep public class * extends android.view.View{
+    *** get*();
+    void set*(***);
+    public <init>(android.content.Context);
+    public <init>(android.content.Context, android.util.AttributeSet);
+    public <init>(android.content.Context, android.util.AttributeSet, int);
+}
+-keepclasseswithmembers class * {
+    public <init>(android.content.Context, android.util.AttributeSet);
+    public <init>(android.content.Context, android.util.AttributeSet, int);
+}
 
-# Add any project specific keep options here:
+# 保留Parcelable序列化类不被混淆
+-keep class * implements android.os.Parcelable {
+    public static final android.os.Parcelable$Creator *;
+}
+# 保留Serializable序列化的类不被混淆
+-keepclassmembers class * implements java.io.Serializable {
+    static final long serialVersionUID;
+    private static final java.io.ObjectStreamField[] serialPersistentFields;
+    !static !transient <fields>;
+    !private <fields>;
+    !private <methods>;
+    private void writeObject(java.io.ObjectOutputStream);
+    private void readObject(java.io.ObjectInputStream);
+    java.lang.Object writeReplace();
+    java.lang.Object readResolve();
+}
+# 对于带有回调函数的onXXEvent、**On*Listener的,不能被混淆
+-keepclassmembers class * {
+    void *(**On*Event);
+}
 
-# If your project uses WebView with JS, uncomment the following
-# and specify the fully qualified class name to the JavaScript interface
-# class:
-#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
-#   public *;
-#}
+#3.webview
+-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+   public *;
+}
+-keepclassmembers class * extends android.webkit.webViewClient {
+    public void *(android.webkit.WebView, java.lang.String, android.graphics.Bitmap);
+    public boolean *(android.webkit.WebView, java.lang.String);
+}
+-keepclassmembers class * extends android.webkit.webViewClient {
+    public void *(android.webkit.webView, jav.lang.String);
+}
+#移除Log类打印各个等级日志的代码,打正式包的时候可以做为禁log使用
+#这里可以作为禁止log打印的功能使用,另外的一种实现方案是通过BuildConfig.DEBUG的变量来控制
+-assumenosideeffects class android.util.Log {
+    public static *** v(...);
+    public static *** i(...);
+    public static *** d(...);
+    public static *** w(...);
+    public static *** e(...);
+}
+
+
+###############################
+#
+# 第三方jar包
+#
+###############################
+-keep class com.baidu.** {*;}
+-keep class vi.com.** {*;}
+-dontwarn com.baidu.**
 
-# Uncomment this to preserve the line number information for
-# debugging stack traces.
-#-keepattributes SourceFile,LineNumberTable
+-keep class com.uuzuche.lib_zxing.** {*;}
+-keep class com.andreabaccega.** {*;}
+-keep class com.github.clans.fab.** {*;}
+-keep class com.yalantis.phoenix.** {*;}
+-keep class com.baoyz.swipemenulistview.** {*;}
+-keep class com.viewpagerindicator.** {*;}
+-keep class com.afollestad.materialdialogs.** {*;}
+-keep class com.github.mikephil.charting.** {*;}
+-keep class com.module.recyclerlibrary.** {*;}
+-keep class com.handmark.pulltorefresh.library.** {*;}
+-keep class cc.cloudist.acplibrary.** {*;}
+
+-keep class android.arch.core.internal.** {*;}
+-keep class android.arch.lifecycle.** {*;}
+-keep class com.alibaba.fastjson.** {*;}
+-dontwarn com.alibaba.fastjson.**
+-keep class android.support.graphics.drawable.** {*;}
+-keep class com.facebook.stetho.** {*;}
+-keep class javax.annotation.** {*;}
+-keep class com.lidroid.xutils.** {*;}
+-keep class okhttp3.** {*;}
+-keep class okio.** {*;}
+-dontwarn okio.**
+-keep class org.apache.** {*;}
+-keep class org.junit.** {*;}
+-keep class junit.** {*;}
+-keep class org.hamcrest.** {*;}
+
+-keep class sun.misc.Unsafe {*;}
+-keep class com.google.gson.** {*;}
+-keep class com.google.gson.stream.** {*;}
+-keep class com.android.volley.** {*;}
+
+-keep class butterknife.** {*;}
+-dontwarn butterknife.internal.**
+-keep class **$$ViewBinder { *; }
+
+-keep class cat.ereza.customactivityoncrash.** {*;}
+-keep class uk.co.senab.photoview.** {*;}
+-keep class com.flipboard.bottomsheet.** {*;}
+-keep class flipboard.bottomsheet.** {*;}
+-keep class com.bumptech.glide.** {*;}
+-keep class com.chad.library.** {*;}
+-keep class com.tonicartos.widget.stickygridheaders.** {*;}
+-keep class com.orhanobut.logger.** {*;}
+-keep class com.readystatesoftware.systembartint.** {*;}
+-keep class com.scwang.smartrefresh.** {*;}
+-keep class com.squareup.** {*;}
+-keep class com.tencent.** {*;}
+-keep class com.umeng.analytics.** {*;}
+-keep class com.youth.banner.** {*;}
+-keep class de.hdodenhof.circleimageview.** {*;}
+-keep class rx.** {*;}
+-keep class org.joda.time.** {*;}
+-keep class me.gujun.android.taggroup.** {*;}
+-keep class me.zhanghai.android.materialprogressbar.** {*;}
+-keep class android.net.** {*;}
+-keep class com.android.internal.http.multipart.** {*;}
+-keep class pl.droidsonroids.gif.** {*;}
+-keep class se.emilsjolander.stickylistheaders.** {*;}
+-keep class com.alipay.** {*;}
+-dontwarn com.alipay.**
+-keep class com.tencent.mm.sdk.** {
+   *;
+}
+
+###############################
+#
+# 自己的代码
+# 引用的其他Module可以直接在app的这个混淆文件里配置
+#
+###############################
+#实体类
+-keep class com.modular.booking.model.** {*;}
+-keep class com.uas.appcontact.model.** {*;}
+-keep class com.modular.login.model.** {*;}
+-keep class com.modular.booking.model.** {*;}
+-keep class com.uas.appme.settings.model.** {*;}
+-keep class com.modular.appmessages.model.** {*;}
+-keep class com.modular.apputils.model.** {*;}
+-keep class com.uas.appworks.model.** {*;}
+-keep class com.xzjmyk.pm.activity.bean.** {*;}
+-keep class com.modular.apputils.model.** {*;}
+#自定义控件
+-keep class com.core.widget.** {*;}
+-keep class com.modular.booking.widget.** {*;}
+-keep class com.uas.appcontact.ui.widget.stickylistheaders.** {*;}
+-keep class com.uas.appme.widget.** {*;}
+-keep class com.modular.appmessages.widget.** {*;}
+-keep class com.modular.apputils.widget.** {*;}
+-keep class com.uas.appworks.widget.** {*;}
+-keep class com.ipaulpro.afilechooser.** {*;}
+-keep class com.roamer.slidelistview.** {*;}
+-keep class com.xzjmyk.pm.activity.view.** {*;}
+-keep class com.xzjmyk.pm.activity.video.** {*;}
+-keep class com.modular.apputils.utils.** {*;}
+#与js互相调用的类
+-keep class com.com.xzjmyk.pm.activity.ui.erp.activity.WebViewCommActivity.JSWebView
 
-# If you keep the line number information, uncomment this to
-# hide the original source file name.
-#-renamesourcefileattribute SourceFile

+ 55 - 0
app_modular/apputils/src/main/java/com/modular/apputils/adapter/LinearItemDecoration.java

@@ -0,0 +1,55 @@
+package com.modular.apputils.adapter;
+
+import android.graphics.Canvas;
+import android.graphics.Paint;
+import android.graphics.Rect;
+import android.support.v7.widget.RecyclerView;
+import android.view.View;
+
+/**
+ * Created by Bitlike on 2018/1/12.
+ */
+
+public class LinearItemDecoration extends RecyclerView.ItemDecoration {
+    private int dividerHeight;
+    private Paint dividerPaint;
+
+    public LinearItemDecoration() {
+        dividerHeight = 1;
+        dividerPaint = new Paint();
+        dividerPaint.setColor(0xf2f2f2);
+    }
+
+    //可以实现类似绘制背景的效果,内容在上面
+    @Override
+    public void onDraw(Canvas c, RecyclerView parent, RecyclerView.State state) {
+        super.onDraw(c, parent, state);
+        int childCount = parent.getChildCount();
+        int left = parent.getPaddingLeft();
+        int right = parent.getWidth() - parent.getPaddingRight();
+        for (int i = 0; i < childCount - 1; i++) {
+            View view = parent.getChildAt(i);
+            float top = view.getBottom();
+            float bottom = view.getBottom() + dividerHeight;
+            c.drawRect(left, top, right, bottom, dividerPaint);
+        }
+
+
+    }
+
+//    //可以绘制在内容的上面,覆盖内容
+//    @Override
+//    public void onDrawOver(Canvas c, RecyclerView parent, RecyclerView.State state) {
+//        super.onDrawOver(c, parent, state);
+//        Paint paint=   new Paint();
+//        paint.setColor(Color.RED);
+//        c.drawText("这个是onDrawOver",20,20,paint);
+//    }
+
+    //可以实现类似padding的效果
+    @Override
+    public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
+        super.getItemOffsets(outRect, view, parent, state);
+        outRect.bottom = dividerHeight;//类似加了一个bottom padding
+    }
+}

+ 1 - 2
app_modular/apputils/src/main/java/com/modular/apputils/utils/SignUtils.java

@@ -22,7 +22,6 @@ import com.core.net.http.http.OAHttpHelper;
 import com.core.net.http.http.OnHttpResultListener;
 import com.core.net.http.http.Request;
 import com.core.net.location.BdLocationHelper;
-import com.core.net.utils.NetUtils;
 import com.core.utils.BaiduMapUtil;
 import com.core.utils.CommonInterface;
 import com.modular.apputils.R;
@@ -258,7 +257,7 @@ public class SignUtils implements OnHttpResultListener {
             WorkModelDao.getInstance().update(model);
         }
 
-        VoiceUtils.signVoice(R.raw.voice_work);
+        VoiceUtils.signVoice(R.raw.voice_sign);
         if (this.mSignListener != null) {
             this.mSignListener.sign(true, "打卡成功");
         }

+ 2 - 1
app_modular/apputils/src/main/java/com/modular/apputils/widget/MenuVoiceSearchView.java

@@ -42,8 +42,9 @@ public class MenuVoiceSearchView extends RelativeLayout {
 
     public MenuVoiceSearchView(Context context, AttributeSet attrs, int defStyleAttr) {
         super(context, attrs, defStyleAttr);
+        this.setFocusableInTouchMode(true);
         LayoutInflater.from(context).inflate(R.layout.menu_seach_include, this);
-        search_edit = (ClearEditText) findViewById(R.id.search_edit);
+        search_edit =  findViewById(R.id.search_edit);
         findViewById(R.id.voice_search_iv).setOnClickListener(new OnClickListener() {
             @Override
             public void onClick(View v) {

+ 1 - 1
app_modular/apputils/src/main/res/drawable/radian_hollow_white_bg.xml

@@ -14,6 +14,6 @@
         android:bottomRightRadius="360dp"/>
 
     <stroke
-        android:width="4dp"
+        android:width="2dp"
         android:color="@color/white"/>
 </shape>

+ 2 - 1
app_modular/apputils/src/main/res/layout/action_device_cycle_count.xml

@@ -26,9 +26,10 @@
             android:layout_centerInParent="true"
             android:layout_marginLeft="50dp"
             android:layout_marginRight="50dp"
-            android:background="@drawable/shape_process_linear"
             android:orientation="horizontal" />
 
+
+
         <ImageView
             android:id="@+id/addImg"
             android:layout_width="wrap_content"

+ 5 - 4
app_modular/apputils/src/main/res/layout/item_approval_list.xml

@@ -6,9 +6,10 @@
     <RelativeLayout
         android:layout_width="match_parent"
         android:layout_height="60dp"
-        android:layout_marginTop="@dimen/padding"
+        android:layout_marginTop="@dimen/paddingMin"
+        android:layout_marginBottom="@dimen/paddingMin"
         android:layout_marginLeft="@dimen/padding"
-        android:elevation="4dp"
+        android:elevation="2dp"
         android:layout_marginRight="@dimen/padding"
         android:padding="@dimen/padding"
         android:background="@drawable/radian_white_utils_bg">
@@ -26,7 +27,7 @@
             android:layout_height="wrap_content"
             android:layout_alignParentRight="true"
             android:layout_alignTop="@id/headImage"
-            android:textColor="#FF333333"
+            android:textColor="@color/done_approval"
             android:textSize="12sp" />
 
         <TextView
@@ -49,7 +50,7 @@
             android:layout_below="@id/titleTv"
             android:layout_toRightOf="@id/headImage"
             android:layout_marginTop="4dp"
-            android:textColor="#FF333333"
+            android:textColor="@color/done_approval"
             android:textSize="12sp" />
     </RelativeLayout>
 

+ 6 - 8
app_modular/apputils/src/main/res/layout/menu_seach_include.xml

@@ -1,8 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <merge xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
-    android:layout_height="48dp"
-    android:background="@drawable/bg_bar">
+    android:focusableInTouchMode="true"
+    android:layout_height="48dp">
 
     <com.core.widget.ClearEditText
         android:id="@+id/search_edit"
@@ -14,14 +14,11 @@
         android:drawableRight="@drawable/search_clear"
         android:hint="@string/search"
         android:imeOptions="actionSearch"
-        android:maxLines="1"
-        android:singleLine="true"
-    android:paddingRight="26dp"
-        android:lines="1"
+        android:inputType="text"
+        android:paddingRight="26dp"
         android:textColor="@color/dark_grey"
         android:textColorHint="@color/grey"
-        android:textSize="15sp" />
-
+        android:textSize="14sp"/>
     <ImageView
         android:id="@+id/voice_search_iv"
         android:layout_width="20dp"
@@ -32,4 +29,5 @@
         android:layout_marginRight="6dp"
         android:background="@drawable/btn_yuyin_nor"
         android:visibility="visible" />
+
 </merge>

+ 1 - 0
app_modular/apputils/src/main/res/layout/simply_refresh_recyclerview.xml

@@ -2,6 +2,7 @@
 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
     android:background="#F2F2F2"
+    android:paddingTop="@dimen/paddingMin"
     android:layout_height="match_parent">
 
     <com.module.recyclerlibrary.ui.refresh.simlpe.SimpleRefreshLayout

+ 225 - 16
app_modular/appworks/proguard-rules.pro

@@ -1,25 +1,234 @@
 # Add project specific ProGuard rules here.
 # By default, the flags in this file are appended to flags specified
-# in E:\Android-Studio\sdk/tools/proguard/proguard-android.txt
+# in C:\Android\sdk/tools/proguard/proguard-android.txt
 # You can edit the include path and order by changing the proguardFiles
 # directive in build.gradle.
+
+###############################
+#
+# 公共部分(固定不变)
 #
-# For more details, see
-#   http://developer.android.com/guide/developing/tools/proguard.html
+###############################
+#1.基本指令区
+# 代码混淆压缩比,在0~7之间,默认为5,一般不做修改
+-optimizationpasses 5
+# 混合时不使用大小写混合,混合后的类名为小写
+-dontusemixedcaseclassnames
+# 指定不去忽略非公共库的类
+-dontskipnonpubliclibraryclasses
+# 这句话能够使我们的项目混淆后产生映射文件
+# 包含有类名->混淆后类名的映射关系
+-verbose
+# 指定不去忽略非公共库的类成员
+-dontskipnonpubliclibraryclassmembers
+# 不做预校验,preverify是proguard的四个步骤之一,Android不需要preverify,去掉这一步能够加快混淆速度。
+-dontpreverify
+# 保留Annotation不混淆
+-keepattributes *Annotation*,InnerClasses
+# 避免混淆泛型
+-keepattributes Signature
+# 抛出异常时保留代码行号
+-keepattributes SourceFile,LineNumberTable
+# 指定混淆是采用的算法,后面的参数是一个过滤器
+# 这个过滤器是谷歌推荐的算法,一般不做更改
+-optimizations !code/simplification/cast,!field/*,!class/merging/*
+
+#2.默认保留区
+# 保留我们使用的四大组件,自定义的Application等等这些类不被混淆
+# 因为这些子类都有可能被外部调用
+-keep public class * extends android.app.Activity
+-keep public class * extends android.app.Application
+-keep public class * extends android.app.Service
+-keep public class * extends android.content.BroadcastReceiver
+-keep public class * extends android.content.ContentProvider
+-keep public class * extends android.app.backup.BackupAgentHelper
+-keep public class * extends android.preference.Preference
+-keep public class * extends android.view.View
+-keep public class com.android.vending.licensing.ILicensingService
+# 保留support下的所有类及其内部类
+-keep class android.support.** {*;}
+# 保留继承的
+-keep public class * extends android.support.v4.**
+-keep public class * extends android.support.v7.**
+-keep public class * extends android.support.annotation.**
+# 保留R下面的资源
+-keep class **.R$* {*;}
+
+# 保留本地native方法不被混淆
+-keepclasseswithmembernames class * {
+    native <methods>;
+}
+# 保留在Activity中的方法参数是view的方法,
+# 这样以来我们在layout中写的onClick就不会被影响
+-keepclassmembers class * extends android.app.Activity{
+    public void *(android.view.View);
+}
+# 保留枚举类不被混淆
+-keepclassmembers enum * {
+    public static **[] values();
+    public static ** valueOf(java.lang.String);
+}
+# 保留我们自定义控件(继承自View)不被混淆
+-keep public class * extends android.view.View{
+    *** get*();
+    void set*(***);
+    public <init>(android.content.Context);
+    public <init>(android.content.Context, android.util.AttributeSet);
+    public <init>(android.content.Context, android.util.AttributeSet, int);
+}
+-keepclasseswithmembers class * {
+    public <init>(android.content.Context, android.util.AttributeSet);
+    public <init>(android.content.Context, android.util.AttributeSet, int);
+}
 
-# Add any project specific keep options here:
+# 保留Parcelable序列化类不被混淆
+-keep class * implements android.os.Parcelable {
+    public static final android.os.Parcelable$Creator *;
+}
+# 保留Serializable序列化的类不被混淆
+-keepclassmembers class * implements java.io.Serializable {
+    static final long serialVersionUID;
+    private static final java.io.ObjectStreamField[] serialPersistentFields;
+    !static !transient <fields>;
+    !private <fields>;
+    !private <methods>;
+    private void writeObject(java.io.ObjectOutputStream);
+    private void readObject(java.io.ObjectInputStream);
+    java.lang.Object writeReplace();
+    java.lang.Object readResolve();
+}
+# 对于带有回调函数的onXXEvent、**On*Listener的,不能被混淆
+-keepclassmembers class * {
+    void *(**On*Event);
+}
 
-# If your project uses WebView with JS, uncomment the following
-# and specify the fully qualified class name to the JavaScript interface
-# class:
-#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
-#   public *;
-#}
+#3.webview
+-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+   public *;
+}
+-keepclassmembers class * extends android.webkit.webViewClient {
+    public void *(android.webkit.WebView, java.lang.String, android.graphics.Bitmap);
+    public boolean *(android.webkit.WebView, java.lang.String);
+}
+-keepclassmembers class * extends android.webkit.webViewClient {
+    public void *(android.webkit.webView, jav.lang.String);
+}
+#移除Log类打印各个等级日志的代码,打正式包的时候可以做为禁log使用
+#这里可以作为禁止log打印的功能使用,另外的一种实现方案是通过BuildConfig.DEBUG的变量来控制
+-assumenosideeffects class android.util.Log {
+    public static *** v(...);
+    public static *** i(...);
+    public static *** d(...);
+    public static *** w(...);
+    public static *** e(...);
+}
+
+
+###############################
+#
+# 第三方jar包
+#
+###############################
+-keep class com.baidu.** {*;}
+-keep class vi.com.** {*;}
+-dontwarn com.baidu.**
 
-# Uncomment this to preserve the line number information for
-# debugging stack traces.
-#-keepattributes SourceFile,LineNumberTable
+-keep class com.uuzuche.lib_zxing.** {*;}
+-keep class com.andreabaccega.** {*;}
+-keep class com.github.clans.fab.** {*;}
+-keep class com.yalantis.phoenix.** {*;}
+-keep class com.baoyz.swipemenulistview.** {*;}
+-keep class com.viewpagerindicator.** {*;}
+-keep class com.afollestad.materialdialogs.** {*;}
+-keep class com.github.mikephil.charting.** {*;}
+-keep class com.module.recyclerlibrary.** {*;}
+-keep class com.handmark.pulltorefresh.library.** {*;}
+-keep class cc.cloudist.acplibrary.** {*;}
+
+-keep class android.arch.core.internal.** {*;}
+-keep class android.arch.lifecycle.** {*;}
+-keep class com.alibaba.fastjson.** {*;}
+-dontwarn com.alibaba.fastjson.**
+-keep class android.support.graphics.drawable.** {*;}
+-keep class com.facebook.stetho.** {*;}
+-keep class javax.annotation.** {*;}
+-keep class com.lidroid.xutils.** {*;}
+-keep class okhttp3.** {*;}
+-keep class okio.** {*;}
+-dontwarn okio.**
+-keep class org.apache.** {*;}
+-keep class org.junit.** {*;}
+-keep class junit.** {*;}
+-keep class org.hamcrest.** {*;}
+
+-keep class sun.misc.Unsafe {*;}
+-keep class com.google.gson.** {*;}
+-keep class com.google.gson.stream.** {*;}
+-keep class com.android.volley.** {*;}
+
+-keep class butterknife.** {*;}
+-dontwarn butterknife.internal.**
+-keep class **$$ViewBinder { *; }
+
+-keep class cat.ereza.customactivityoncrash.** {*;}
+-keep class uk.co.senab.photoview.** {*;}
+-keep class com.flipboard.bottomsheet.** {*;}
+-keep class flipboard.bottomsheet.** {*;}
+-keep class com.bumptech.glide.** {*;}
+-keep class com.chad.library.** {*;}
+-keep class com.tonicartos.widget.stickygridheaders.** {*;}
+-keep class com.orhanobut.logger.** {*;}
+-keep class com.readystatesoftware.systembartint.** {*;}
+-keep class com.scwang.smartrefresh.** {*;}
+-keep class com.squareup.** {*;}
+-keep class com.tencent.** {*;}
+-keep class com.umeng.analytics.** {*;}
+-keep class com.youth.banner.** {*;}
+-keep class de.hdodenhof.circleimageview.** {*;}
+-keep class rx.** {*;}
+-keep class org.joda.time.** {*;}
+-keep class me.gujun.android.taggroup.** {*;}
+-keep class me.zhanghai.android.materialprogressbar.** {*;}
+-keep class android.net.** {*;}
+-keep class com.android.internal.http.multipart.** {*;}
+-keep class pl.droidsonroids.gif.** {*;}
+-keep class se.emilsjolander.stickylistheaders.** {*;}
+-keep class com.alipay.** {*;}
+-dontwarn com.alipay.**
+-keep class com.tencent.mm.sdk.** {
+   *;
+}
+
+###############################
+#
+# 自己的代码
+# 引用的其他Module可以直接在app的这个混淆文件里配置
+#
+###############################
+#实体类
+-keep class com.modular.booking.model.** {*;}
+-keep class com.uas.appcontact.model.** {*;}
+-keep class com.modular.login.model.** {*;}
+-keep class com.modular.booking.model.** {*;}
+-keep class com.uas.appme.settings.model.** {*;}
+-keep class com.modular.appmessages.model.** {*;}
+-keep class com.modular.apputils.model.** {*;}
+-keep class com.uas.appworks.model.** {*;}
+-keep class com.xzjmyk.pm.activity.bean.** {*;}
+-keep class com.modular.apputils.model.** {*;}
+#自定义控件
+-keep class com.core.widget.** {*;}
+-keep class com.modular.booking.widget.** {*;}
+-keep class com.uas.appcontact.ui.widget.stickylistheaders.** {*;}
+-keep class com.uas.appme.widget.** {*;}
+-keep class com.modular.appmessages.widget.** {*;}
+-keep class com.modular.apputils.widget.** {*;}
+-keep class com.uas.appworks.widget.** {*;}
+-keep class com.ipaulpro.afilechooser.** {*;}
+-keep class com.roamer.slidelistview.** {*;}
+-keep class com.xzjmyk.pm.activity.view.** {*;}
+-keep class com.xzjmyk.pm.activity.video.** {*;}
+-keep class com.modular.apputils.utils.** {*;}
+#与js互相调用的类
+-keep class com.com.xzjmyk.pm.activity.ui.erp.activity.WebViewCommActivity.JSWebView
 
-# If you keep the line number information, uncomment this to
-# hide the original source file name.
-#-renamesourcefileattribute SourceFile

+ 1 - 2
app_modular/appworks/src/main/java/com/uas/appworks/CRM/erp/activity/DeviceDataFormAddActivity.java

@@ -37,7 +37,6 @@ import com.common.data.JSONUtil;
 import com.common.data.ListUtils;
 import com.common.data.RegexUtil;
 import com.common.data.StringUtil;
-import com.common.system.DisplayUtil;
 import com.core.app.Constants;
 import com.core.base.SupportToolBarActivity;
 import com.core.model.SelectBean;
@@ -2158,7 +2157,7 @@ public class DeviceDataFormAddActivity extends SupportToolBarActivity implements
                     RelativeLayout header = (RelativeLayout) convertView.findViewById(R.id.rl_item_header);
                     final Data itemValue = ((Data) getItem(position));
                     // final  int id= getGroupPosition(position);
-                    textView.setText("");//itemValue.getGroup()
+                    textView.setText(TextUtils.isEmpty(itemValue.getGroup())?"":itemValue.getGroup());//
                     try {
                         if (StringUtil.isEmpty(itemValue.getGroup())) {
                             header.setVisibility(View.GONE);

+ 2 - 1
app_modular/appworks/src/main/java/com/uas/appworks/OA/erp/activity/form/DataFormDetailActivity.java

@@ -10,6 +10,7 @@ import android.os.Message;
 import android.support.v7.app.AlertDialog;
 import android.text.Editable;
 import android.text.InputType;
+import android.text.TextUtils;
 import android.text.TextWatcher;
 import android.util.Log;
 import android.view.KeyEvent;
@@ -1007,7 +1008,7 @@ public class DataFormDetailActivity extends BaseActivity implements View.OnClick
                     RelativeLayout header = (RelativeLayout) convertView.findViewById(R.id.rl_item_header);
                     final Data itemValue = ((Data) getItem(position));
                     // final  int id= getGroupPosition(position);
-                    textView.setText("");//itemValue.getGroup()
+                    textView.setText(TextUtils.isEmpty(itemValue.getGroup())?"":itemValue.getGroup());//
                     try {
                         if (StringUtil.isEmpty(itemValue.getGroup())) {
                             header.setVisibility(View.GONE);

+ 2 - 1
app_modular/appworks/src/main/java/com/uas/appworks/OA/erp/activity/form/TravelDataFormDetailActivity.java

@@ -10,6 +10,7 @@ import android.os.Message;
 import android.support.v7.app.AlertDialog;
 import android.text.Editable;
 import android.text.InputType;
+import android.text.TextUtils;
 import android.text.TextWatcher;
 import android.util.Log;
 import android.view.KeyEvent;
@@ -1044,7 +1045,7 @@ public class TravelDataFormDetailActivity extends BaseActivity implements View.O
                     RelativeLayout header = (RelativeLayout) convertView.findViewById(R.id.rl_item_header);
                     final Data itemValue = ((Data) getItem(position));
                     // final  int id= getGroupPosition(position);
-                    textView.setText("");//itemValue.getGroup()
+                    textView.setText(TextUtils.isEmpty(itemValue.getGroup())?"":itemValue.getGroup());//
                     try {
                         if (StringUtil.isEmpty(itemValue.getGroup())) {
                             header.setVisibility(View.GONE);

+ 8 - 1
app_modular/appworks/src/main/java/com/uas/appworks/OA/erp/adapter/WorkLogsAdapter.java

@@ -120,7 +120,6 @@ public class WorkLogsAdapter extends RecyclerView.Adapter<WorkLogsAdapter.ViewHo
             case 3:
                 setVisibility(View.VISIBLE, viewHolder.off3LL, viewHolder.w3LL);
                 shift = shifts.get(2);
-
                 setTag(getTag(thisTimes == model.getWorkTimes(), model.isWorkDate(), true, shift), viewHolder.w3TagTv, viewHolder.w3AllegedlyTv);
                 setTag(getTag(thisTimes == model.getWorkTimes(), model.isWorkDate(), false, shift), viewHolder.off3TagTv, viewHolder.off3AllegedlyTv);
                 viewHolder.w3SignTv.setText(shift.wSign == null ? "" : shift.wSign);
@@ -209,6 +208,14 @@ public class WorkLogsAdapter extends RecyclerView.Adapter<WorkLogsAdapter.ViewHo
             tagTv.setVisibility(View.VISIBLE);
             allegedlyTv.setVisibility(View.GONE);
             tagTv.setText(tag);
+        }else if (EARLY_RETREAT.equals(tag)){
+            tagTv.setVisibility(View.VISIBLE);
+            allegedlyTv.setVisibility(View.GONE);
+            tagTv.setText(tag);
+        }else {
+            tagTv.setVisibility(View.GONE);
+            allegedlyTv.setVisibility(View.GONE);
+            tagTv.setText(tag);
         }
     }
 

+ 1 - 1
app_modular/appworks/src/main/java/com/uas/appworks/OA/erp/utils/AutoErpSigninUitl.java

@@ -432,7 +432,7 @@ public class AutoErpSigninUitl implements OnHttpResultListener {
                             LocalBroadcastManager.getInstance(MyApplication.getInstance()).sendBroadcast(intent);
                             PreferenceUtils.putBoolean("hasAutoSign", true);
                             int isWork = bundle == null ? -1 : bundle.getInt("isWork", -1);
-                            int rawId=R.raw.voice_sign;
+                            int rawId=R.raw.voice_work;
                             switch (isWork) {
                                 case 0:
                                     rawId=R.raw.voice_off;

+ 1 - 1
build.gradle

@@ -1,4 +1,5 @@
 apply from: "version.gradle"
+
 buildscript {
     repositories {
         jcenter()
@@ -11,7 +12,6 @@ buildscript {
         classpath 'com.github.dcendents:android-maven-gradle-plugin:1.4.1'
         classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.0'
         classpath 'me.tatarka:gradle-retrolambda:3.2.2'
-        classpath 'com.tencent.mm:AndResGuard-gradle-plugin:1.2.13'
     }
 }