Browse Source

0925下拉

raomeng 8 years ago
parent
commit
8a150ce269
100 changed files with 3513 additions and 300 deletions
  1. 2 4
      WeiChat/build.gradle
  2. 9 9
      WeiChat/src/main/AndroidManifest.xml
  3. 7 2
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/MainActivity.java
  4. 1 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/secretary/BookingAddActivity.java
  5. 0 67
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/view/NestingScrollview.java
  6. 10 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/util/oa/CommonUtil.java
  7. 1 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/util/oa/OAHttpUtil.java
  8. 5 9
      WeiChat/src/main/res/layout/activity_expense_reimbursement.xml
  9. 1 2
      WeiChat/src/main/res/layout/expense_details_table_item.xml
  10. 1 0
      WeiChat/src/main/res/layout/simple_calculator_ppview.xml
  11. 12 0
      WeiChat/src/main/res/menu/menu_uusport_list.xml
  12. 1 0
      app_core/common/build.gradle
  13. 1 1
      app_core/common/src/main/java/com/common/config/VersionUtil.java
  14. 0 13
      app_core/common/src/main/java/com/core/app/MyApplication.java
  15. 1 1
      app_core/common/src/main/java/com/core/dao/TrackPointDao.java
  16. 4 18
      app_core/common/src/main/java/com/core/net/http/ViewUtil.java
  17. 0 1
      app_core/common/src/main/java/com/core/utils/CommonInterface.java
  18. 10 0
      app_core/common/src/main/java/com/core/utils/CommonUtil.java
  19. 2 0
      app_core/common/src/main/java/com/core/xmpp/XChatManager.java
  20. 2 1
      app_core/common/src/main/res/layout/act_taskerp_add.xml
  21. 0 4
      app_core/common/src/main/res/layout/activity_expense_reimbursement.xml
  22. 2 2
      app_core/common/src/main/res/layout/expense_details_table_item.xml
  23. 1 0
      app_core/common/src/main/res/layout/simple_calculator_ppview.xml
  24. 12 0
      app_core/common/src/main/res/menu/menu_uusport_list.xml
  25. 1 1
      app_core/common/src/main/res/values/styles.xml
  26. 0 1
      app_core/network/src/main/java/com/me/network/app/http/HttpClient.java
  27. 8 16
      app_core/network/src/main/java/com/me/network/app/http/interceptor/LogInterceptor.java
  28. 1 1
      app_modular/appbooking/src/main/java/com/modular/booking/activity/business/BBookingAddActivity.java
  29. 3 2
      app_modular/appbooking/src/main/java/com/modular/booking/activity/business/BBookingDetailActivity.java
  30. 1 0
      app_modular/appbooking/src/main/res/layout/activity_bbooking_add.xml
  31. 5 2
      app_modular/appcontact/src/main/java/com/uas/appcontact/db/ContactsDao.java
  32. 20 34
      app_modular/appcontact/src/main/java/com/uas/appcontact/ui/activity/ContactsActivity.java
  33. 3 0
      app_modular/appme/src/main/AndroidManifest.xml
  34. 82 0
      app_modular/appme/src/main/java/com/uas/appme/pedometer/adapter/UUAttentionAdapter.java
  35. 79 0
      app_modular/appme/src/main/java/com/uas/appme/pedometer/adapter/UURankingAdapter.java
  36. 82 0
      app_modular/appme/src/main/java/com/uas/appme/pedometer/bean/PersonalStepBean.java
  37. 163 0
      app_modular/appme/src/main/java/com/uas/appme/pedometer/bean/StepsRankingBean.java
  38. 1 0
      app_modular/appme/src/main/java/com/uas/appme/pedometer/constant/Constant.java
  39. 19 0
      app_modular/appme/src/main/java/com/uas/appme/pedometer/service/StepService.java
  40. 58 0
      app_modular/appme/src/main/java/com/uas/appme/pedometer/utils/StepUtils.java
  41. 12 0
      app_modular/appme/src/main/java/com/uas/appme/pedometer/view/NewStepActivity.java
  42. 233 0
      app_modular/appme/src/main/java/com/uas/appme/pedometer/view/PersonalPageActivity.java
  43. 202 0
      app_modular/appme/src/main/java/com/uas/appme/pedometer/view/UURanking.java
  44. BIN
      app_modular/appme/src/main/res/drawable-xxhdpi/rankb.jpg
  45. 79 0
      app_modular/appme/src/main/res/layout/item_uuattention.xml
  46. 81 0
      app_modular/appme/src/main/res/layout/item_uuranking.xml
  47. 170 0
      app_modular/appme/src/main/res/layout/personal_page_activity.xml
  48. 68 0
      app_modular/appme/src/main/res/layout/step_person_page_setting.xml
  49. 156 0
      app_modular/appme/src/main/res/layout/uu_ranking_activity.xml
  50. 21 24
      app_modular/appmessages/src/main/java/com/modular/appmessages/activity/MessageWebActivity.java
  51. 3 2
      app_modular/appmessages/src/main/java/com/modular/appmessages/activity/UUHelperActivity.java
  52. 1 1
      app_modular/appmessages/src/main/java/com/modular/appmessages/adapter/UUHelperAdapter.java
  53. 1 1
      app_modular/appmessages/src/main/java/com/modular/appmessages/presenter/MessagePresenter.java
  54. 34 7
      app_modular/appmessages/src/main/res/layout/activity_message_web.xml
  55. 2 1
      app_modular/appmessages/src/main/res/layout/activity_uuhelper.xml
  56. 1 1
      app_modular/appmessages/src/main/res/layout/activity_uuhelper_details.xml
  57. 9 9
      app_modular/appmessages/src/main/res/layout/item_uuhelper_single.xml
  58. 6 6
      app_modular/appworks/src/main/java/com/uas/appworks/CRM/erp/activity/BusinessStateActivity.java
  59. 22 5
      app_modular/appworks/src/main/java/com/uas/appworks/CRM/erp/activity/TaskAddErpActivity.java
  60. 20 3
      app_modular/appworks/src/main/java/com/uas/appworks/CRM/erp/adapter/SelectAimAdapter.java
  61. 8 7
      app_modular/appworks/src/main/java/com/uas/appworks/CRM/erp/presenter/SelectAimPresenter.java
  62. 29 20
      app_modular/appworks/src/main/java/com/uas/appworks/OA/erp/activity/AddMeetingActivity.java
  63. 23 14
      app_modular/appworks/src/main/java/com/uas/appworks/OA/erp/activity/ExpenseReimbursementActivity.java
  64. 0 1
      app_modular/appworks/src/main/java/com/uas/appworks/OA/erp/activity/WorkDailyAddActivity.java
  65. 0 4
      app_modular/appworks/src/main/java/com/uas/appworks/OA/erp/adapter/WorkDailyAdapter.java
  66. 1 0
      app_third/recyclerlibrary/.gitignore
  67. 24 0
      app_third/recyclerlibrary/build.gradle
  68. 25 0
      app_third/recyclerlibrary/proguard-rules.pro
  69. 10 0
      app_third/recyclerlibrary/src/main/AndroidManifest.xml
  70. 3 0
      app_third/recyclerlibrary/src/main/java/com/module/recyclerlibrary/REMAIN.md
  71. 65 0
      app_third/recyclerlibrary/src/main/java/com/module/recyclerlibrary/adapter/BaseRecycAdapter.java
  72. 63 0
      app_third/recyclerlibrary/src/main/java/com/module/recyclerlibrary/listener/OnRecyclerClickLister.java
  73. 50 0
      app_third/recyclerlibrary/src/main/java/com/module/recyclerlibrary/listener/OnRecyclerItemClickListener.java
  74. 51 0
      app_third/recyclerlibrary/src/main/java/com/module/recyclerlibrary/listener/OnRecyclerLongItemClickLister.java
  75. 90 0
      app_third/recyclerlibrary/src/main/java/com/module/recyclerlibrary/model/BaseModel.java
  76. 533 0
      app_third/recyclerlibrary/src/main/java/com/module/recyclerlibrary/ui/refresh/BaseRefreshLayout.java
  77. 36 0
      app_third/recyclerlibrary/src/main/java/com/module/recyclerlibrary/ui/refresh/BaseRefreshView.java
  78. 56 0
      app_third/recyclerlibrary/src/main/java/com/module/recyclerlibrary/ui/refresh/simlpe/SimpleRefreshFooter.java
  79. 61 0
      app_third/recyclerlibrary/src/main/java/com/module/recyclerlibrary/ui/refresh/simlpe/SimpleRefreshHeader.java
  80. 30 0
      app_third/recyclerlibrary/src/main/java/com/module/recyclerlibrary/ui/refresh/simlpe/SimpleRefreshLayout.java
  81. 156 0
      app_third/recyclerlibrary/src/main/java/com/module/recyclerlibrary/ui/refresh/smart/EatBeanLoadingView.java
  82. 283 0
      app_third/recyclerlibrary/src/main/java/com/module/recyclerlibrary/ui/refresh/smart/GhostLoadingView.java
  83. 61 0
      app_third/recyclerlibrary/src/main/java/com/module/recyclerlibrary/ui/refresh/smart/SmartRefreshFooter.java
  84. 61 0
      app_third/recyclerlibrary/src/main/java/com/module/recyclerlibrary/ui/refresh/smart/SmartRefreshHeader.java
  85. 29 0
      app_third/recyclerlibrary/src/main/java/com/module/recyclerlibrary/ui/refresh/smart/SmartRefreshLayout.java
  86. 33 0
      app_third/recyclerlibrary/src/main/java/com/module/recyclerlibrary/ui/refresh/webempty/EmptyRefreshLayout.java
  87. BIN
      app_third/recyclerlibrary/src/main/res/drawable-hdpi/loading_01.png
  88. BIN
      app_third/recyclerlibrary/src/main/res/drawable-hdpi/loading_02.png
  89. BIN
      app_third/recyclerlibrary/src/main/res/drawable-hdpi/loading_03.png
  90. BIN
      app_third/recyclerlibrary/src/main/res/drawable-hdpi/loading_04.png
  91. BIN
      app_third/recyclerlibrary/src/main/res/drawable-hdpi/loading_05.png
  92. BIN
      app_third/recyclerlibrary/src/main/res/drawable-hdpi/loading_06.png
  93. BIN
      app_third/recyclerlibrary/src/main/res/drawable-hdpi/loading_07.png
  94. BIN
      app_third/recyclerlibrary/src/main/res/drawable-hdpi/loading_08.png
  95. BIN
      app_third/recyclerlibrary/src/main/res/drawable-hdpi/loading_09.png
  96. BIN
      app_third/recyclerlibrary/src/main/res/drawable-hdpi/loading_10.png
  97. BIN
      app_third/recyclerlibrary/src/main/res/drawable-hdpi/loading_11.png
  98. BIN
      app_third/recyclerlibrary/src/main/res/drawable-hdpi/loading_12.png
  99. BIN
      app_third/recyclerlibrary/src/main/res/drawable-hdpi/pull_down.png
  100. BIN
      app_third/recyclerlibrary/src/main/res/drawable-hdpi/pull_up.png

+ 2 - 4
WeiChat/build.gradle

@@ -29,12 +29,10 @@ android {
         versionName rootProject.ext.android.versionName
         multiDexEnabled true
         signingConfig signingConfigs.config
-
-        // 默认是umeng的渠道
-        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
+        
         manifestPlaceholders = [UMENG_CHANNEL_VALUE: "umeng"]
         ndk {
-            abiFilters "armeabi", "armeabi-v7a", "x86", "mips"
+            abiFilters "armeabi", "armeabi-v7a", "x86", "mips","x86_64","mips64"
         }
     }
 

+ 9 - 9
WeiChat/src/main/AndroidManifest.xml

@@ -1,6 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
-<manifest package="com.xzjmyk.pm.activity"
-          xmlns:android="http://schemas.android.com/apk/res/android">
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="com.xzjmyk.pm.activity"
+    android:versionCode="114"
+    android:versionName="5.9.2">
 
     <uses-sdk
         android:minSdkVersion="11"
@@ -882,13 +884,12 @@
             android:name=".ui.erp.activity.oa.SelectCollisionActivity"
             android:configChanges="keyboardHidden|orientation"
             android:label="@string/select_join_number"
-            android:windowSoftInputMode="stateUnspecified|adjustNothing" >
+            android:windowSoftInputMode="stateUnspecified|adjustNothing">
             <intent-filter>
                 <action android:name="com.modular.main.SelectCollisionActivity" />
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
         </activity>
-  
 
 
         <!-- 消息红点模块 -->
@@ -968,8 +969,7 @@
         <activity android:name=".ui.erp.activity.ADActivity" />
         <activity
             android:name=".ui.erp.activity.oa.AddContactsActivity"
-            android:label="@string/add_contact">
-        </activity>
+            android:label="@string/add_contact"></activity>
         <activity
             android:name=".ui.erp.activity.oa.AddVisitReportActivity"
             android:label="@string/visitrecord" />
@@ -984,17 +984,17 @@
         <activity
             android:name=".ui.erp.activity.secretary.SelectPContactsActivity"
             android:windowSoftInputMode="adjustPan" />
-        <activity android:name=".ui.erp.activity.secretary.BookingDetailActivity" >
+        <activity android:name=".ui.erp.activity.secretary.BookingDetailActivity">
             <intent-filter>
                 <action android:name="com.modular.booking.BookingDetailActivity" />
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
         </activity>
-        <activity android:name=".ui.erp.activity.secretary.BookingListActivity" >
+        <activity android:name=".ui.erp.activity.secretary.BookingListActivity">
             <intent-filter>
                 <action android:name="com.modular.booking.BookingListActivity" />
                 <category android:name="android.intent.category.DEFAULT" />
-            </intent-filter>  
+            </intent-filter>
         </activity>
         <activity
             android:name=".ui.erp.activity.secretary.BookingAddActivity"

+ 7 - 2
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/MainActivity.java

@@ -76,17 +76,18 @@ import com.core.xmpp.dao.FriendDao;
 import com.core.xmpp.listener.AuthStateListener;
 import com.core.xmpp.model.SignAutoLogEntity;
 import com.modular.login.activity.LoginActivity;
+import com.modular.appmessages.presenter.MessagePresenter;
 import com.uas.appcontact.listener.ImStatusListener;
 import com.uas.appcontact.ui.fragment.ContactsFragment;
 import com.uas.appcontact.ui.fragment.GroupChatFragment;
 import com.uas.appme.pedometer.service.StepService;
 import com.uas.appme.pedometer.utils.StepCountCheckUtil;
+import com.uas.appme.pedometer.utils.StepUtils;
 import com.uas.appme.settings.activity.FeedbackActivity;
 import com.xzjmyk.pm.activity.R;
 import com.xzjmyk.pm.activity.db.dao.WorkModelDao;
 import com.xzjmyk.pm.activity.ui.circle.BusinessCircleFragment;
 import com.xzjmyk.pm.activity.ui.erp.fragment.WorksFragment;
-import com.modular.appmessages.presenter.MessagePresenter;
 import com.xzjmyk.pm.activity.ui.find.MyFriendFragment;
 import com.xzjmyk.pm.activity.ui.me.MeFragment;
 import com.xzjmyk.pm.activity.ui.me.ScreenListener;
@@ -587,7 +588,7 @@ public class MainActivity extends BaseActivity implements ImStatusListener, NetW
             }
         }
         doSendSignAutoLog(); // 获取数据库中监控日志上传至服务器操作
-        //TODO 桌面红点显示逻辑
+        //桌面红点显示逻辑
         if (OAConfig.canShowRed) {
             if (handler == null) {
                 handler = new Handler();
@@ -597,7 +598,11 @@ public class MainActivity extends BaseActivity implements ImStatusListener, NetW
             }
             handler.post(runnable);
         }
+        //语音导航 ,目前还未正式开发
         hiQuickSearch();
+
+        //将本地的UU运动步数更新至服务器
+        StepUtils.doSaveLocalStepsToHttps();
     }
 
     private void hiQuickSearch() {

+ 1 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/secretary/BookingAddActivity.java

@@ -83,7 +83,7 @@ public class BookingAddActivity extends OABaseActivity implements HttpImp, View.
     GridDataAdapter adapter;
 
 
-    private String[] mTypes = {"商务洽谈", "开会", "外出娱乐", "吃饭", "卡拉OK", "其它"};
+    private String[] mTypes =  {"商务洽谈", "开会", "外出娱乐", "吃饭", "卡拉OK", "高尔夫","麻将","电影","其它" };
     private String phone;
 
     @Override

+ 0 - 67
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/view/NestingScrollview.java

@@ -1,67 +0,0 @@
-package com.xzjmyk.pm.activity.ui.erp.view;
-
-import android.content.Context;
-import android.graphics.Rect;
-import android.util.AttributeSet;
-import android.view.MotionEvent;
-import android.view.ViewConfiguration;
-import android.widget.ScrollView;
-
-public class NestingScrollview  extends ScrollView {
-    private int downX;
-    private int downY;
-    private int mTouchSlop;
-    private boolean autoScroll = true;
-
-    /**
-     * 多层嵌套时的自动滚动
-     * @param autoScroll
-     */
-    public void setAutoScroll(boolean autoScroll) {
-        this.autoScroll = autoScroll;
-    }
-
-    /**
-     * 防止多层嵌套时候的自动滚动
-     * @param rect
-     * @return
-     */
-    @Override
-    protected int computeScrollDeltaToGetChildRectOnScreen(Rect rect) {
-            return autoScroll?super.computeScrollDeltaToGetChildRectOnScreen(rect):0;
-    }
-
-
-    public NestingScrollview(Context context) {
-        super(context);
-        mTouchSlop = ViewConfiguration.get(context).getScaledTouchSlop();
-    }
-
-    public NestingScrollview(Context context, AttributeSet attrs) {
-        super(context, attrs);
-        mTouchSlop = ViewConfiguration.get(context).getScaledTouchSlop();
-    }
-
-    public NestingScrollview(Context context, AttributeSet attrs, int defStyleAttr) {
-        super(context, attrs, defStyleAttr);
-        mTouchSlop = ViewConfiguration.get(context).getScaledTouchSlop();
-    }
-
-    @Override
-    public boolean onInterceptTouchEvent(MotionEvent e) {
-        int action = e.getAction();
-        switch (action) {
-            case MotionEvent.ACTION_DOWN:
-                downX = (int) e.getRawX();
-                downY = (int) e.getRawY();
-                break;
-            case MotionEvent.ACTION_MOVE:
-                int moveY = (int) e.getRawY();
-                if (Math.abs(moveY - downY) > mTouchSlop) {
-                    return true;
-                }
-        }
-        return super.onInterceptTouchEvent(e);
-    }
-
-}

+ 10 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/util/oa/CommonUtil.java

@@ -1502,7 +1502,16 @@ public class CommonUtil {
             return 0;
         }
     }
-
+    public static String getTwoPointStr(double m){
+        String  strValue = "";
+        try {
+            DecimalFormat df = new DecimalFormat("#,###.##");
+            strValue   =   df.format(m);
+            return strValue;
+        } catch (Exception e) {
+            return strValue;
+        }
+    }
     /*获取账套,erp的账套  b2b的公司uu号*/
     public static String getMaster() {
         boolean isB2b = ApiUtils.getApiModel() instanceof ApiPlatform;

+ 1 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/util/oa/OAHttpUtil.java

@@ -70,7 +70,7 @@ public class OAHttpUtil {
             //录入时间作为选择时间,如果没有录入,使用实际到达时间或是预计到达时间或开始时间
             model.setRecorddate(getTimeMillis(o, "recorddate", "vr_recorddate", "vr_date", "mpd_arrivedate", "startdate", "mpd_actdate"));
             model.setTitle(JSONUtil.getText(o, "mpd_company", "name", "vr_cuname", "taskname", "custname"));
-            model.setRemark(JSONUtil.getText(o, "mpd_remark", "vr_detail", "detail", "description"));
+            model.setRemark(JSONUtil.getText(o, "mpd_remark", "vr_nichestep","vr_detail", "detail", "description"));
             model.setAddress(JSONUtil.getText(o, "vr_cuaddress", "mpd_address", "address"));
             model.setRecorder(JSONUtil.getText(o, "vr_emname", "recorder", "mp_recorder"));
             //外勤计划的实行人就是录入人

+ 5 - 9
WeiChat/src/main/res/layout/activity_expense_reimbursement.xml

@@ -33,18 +33,10 @@
                     android:textColor="@color/text_main"
                     android:textSize="15sp" />
 
-                <ImageView
-                    style="@style/IMTbleLine_ArrowImg"
-                    android:layout_alignParentRight="true"
-                    android:contentDescription="@string/app_name" />
                 <com.andreabaccega.widget.FormEditText
                     android:id="@+id/reimbursement_title_fet"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
-                    android:layout_alignParentBottom="true"
-                    android:layout_alignParentEnd="true"
-                    android:layout_alignParentRight="true"
-                    android:layout_marginBottom="13dp"
                     android:background="@null"
                     android:gravity="center_vertical|right"
                     android:hint="@string/common_input"
@@ -54,7 +46,11 @@
                     android:textSize="15sp"
                     whatever:customRegexp="^[A-Za-z\u4e00-\u9fa5]{1,30}+$"
                     whatever:testErrorString="限制30个之内有效中英文字符"
-                    whatever:testType="regexp" />
+                    whatever:testType="regexp"
+                    android:layout_alignBaseline="@+id/name_tv"
+                    android:layout_alignBottom="@+id/name_tv"
+                    android:layout_alignParentRight="true"
+                    android:layout_alignParentEnd="true" />
             </RelativeLayout>
 
             <View

+ 1 - 2
WeiChat/src/main/res/layout/expense_details_table_item.xml

@@ -38,11 +38,10 @@
             android:layout_gravity="center_vertical"
             android:textColor="@color/text_main"
             android:textSize="14sp"
-            android:maxLength="7"
             android:paddingLeft="10dp"
             whatever:customRegexp="^[0-9]+(.[0-9]{2})?$"
             whatever:testType="regexp"
-            whatever:testErrorString="限制输入7位有效正实数(保留两位小数)"
+            whatever:testErrorString="限制输入8位有效正实数(保留两位小数)"
         />
 
         <View

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

@@ -41,6 +41,7 @@
             android:gravity="center_vertical|right"
             android:layout_marginRight="5dp"
             android:textSize="17sp"
+            android:maxLength="8"
             />
     </LinearLayout>
     <LinearLayout

+ 12 - 0
WeiChat/src/main/res/menu/menu_uusport_list.xml

@@ -0,0 +1,12 @@
+<menu xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
+    tools:context="com.xzjmyk.pm.activity.MainActivity">
+
+    <item
+        android:id="@+id/more"
+        android:title="@string/sports_recode"
+        android:icon="@drawable/xlist"
+        app:showAsAction="ifRoom" />
+
+</menu>

+ 1 - 0
app_core/common/build.gradle

@@ -49,5 +49,6 @@ dependencies {
     compile project(':library-viewpager-indicator')
     compile project(':lib-zxing')
     compile project(':library-refreshlayout')
+    compile project(':recyclerlibrary')
 
 }

+ 1 - 1
app_core/common/src/main/java/com/common/config/VersionUtil.java

@@ -6,7 +6,7 @@ package com.common.config;
 public class VersionUtil {
 
     public static boolean showUUHelper() {
-        return false;
+        return true;
     }
 
 }

+ 0 - 13
app_core/common/src/main/java/com/core/app/MyApplication.java

@@ -219,21 +219,8 @@ public class MyApplication extends BaseApplication {
         }
         // 清除图片加载
         ImageLoader.getInstance().destroy();
-        //
         releaseFastVolley();
-        // 释放数据库
-        // SQLiteHelper.release();
         android.os.Process.killProcess(android.os.Process.myPid());
-
-        //TODO 获取此刻精确时间并转换为yyyy-MM-dd HH:mm:ss
-//        String nowtime = TimeUtils.f_long_2_str(System.currentTimeMillis());
-//        String saved_time = PreferenceUtils.getString(MyApplication.getInstance(), TimeStatisticsActivity.Killed);
-//
-//        if (!TextUtils.isEmpty(saved_time)) {
-//            PreferenceUtils.putString(TimeStatisticsActivity.Killed, saved_time + "," + nowtime);
-//        } else {
-//            PreferenceUtils.putString(TimeStatisticsActivity.Killed, nowtime);
-//        }
     }
 
     private void initErpDB() {

+ 1 - 1
app_core/common/src/main/java/com/core/dao/TrackPointDao.java

@@ -13,7 +13,7 @@ import java.util.List;
 
 /**
  * Created by FANGlh on 2017/9/13.
- * function:
+ * function:   //运行轨迹存贮本地、删除、查询Dao类
  +"latitude double(13,10)," //纬度
  +"longitude double(13,10)," //经度
  +"timestamp varchar(50)," //实时定位时的时间戳

+ 4 - 18
app_core/common/src/main/java/com/core/net/http/ViewUtil.java

@@ -17,7 +17,6 @@ import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.common.LogUtil;
-import com.core.app.R;
 import com.common.data.JSONUtil;
 import com.common.data.ListUtils;
 import com.common.data.StringUtil;
@@ -28,6 +27,7 @@ import com.core.api.wxapi.ApiPlatform;
 import com.core.api.wxapi.ApiUtils;
 import com.core.app.Constants;
 import com.core.app.MyApplication;
+import com.core.app.R;
 import com.core.base.BaseActivity;
 import com.core.model.LoginEntity;
 import com.core.net.utils.NetUtils;
@@ -63,9 +63,7 @@ public class ViewUtil {
     private static List<LoginEntity> erpEntities;
     private static boolean hasErp = true;//是否有erp
 
- 
-
-
+    
     private static String oldMsg;
     private static long time;
     private static String oldMsg2;
@@ -75,14 +73,7 @@ public class ViewUtil {
 
     public static Crouton crouton;
 
-    /**
-     * 弹出Toast消息
-     * <p>
-     * update for LiuJie
-     *
-     * @param msg
-     * @author RaoMeng
-     */
+
     public static void ToastMessage(Context cont, String msg) {
         if (StringUtil.isEmpty(msg)) return;
         if (cont instanceof Activity) {
@@ -102,12 +93,7 @@ public class ViewUtil {
     }
 
 
-    /**
-     * 弹出Toast消息
-     *
-     * @param msg
-     * @author RaoMeng
-     */
+   
     public static void ToastMessage(Context cont, String msg, int toastColor, int toastTime) {
         if (cont instanceof Activity) {
             if (crouton != null) {

+ 0 - 1
app_core/common/src/main/java/com/core/utils/CommonInterface.java

@@ -283,7 +283,6 @@ public class CommonInterface implements OnHttpResultListener {
         param.put("ct_cucode", cucode);//客户编号
         param.put("ct_address", address);//客户地址
         param.put("ct_job", job);      //岗位
-
         return param;
     }
 

+ 10 - 0
app_core/common/src/main/java/com/core/utils/CommonUtil.java

@@ -504,6 +504,16 @@ public class CommonUtil {
         }
     }
 
+    public static String getTwoPointStr(double m){
+        String  strValue = "";
+        try {
+            DecimalFormat df = new DecimalFormat("#,###.##");
+            strValue   =   df.format(m);
+            return strValue;
+        } catch (Exception e) {
+            return strValue;
+        }
+    }
     /**
      * 根据手机的分辨率从 dp 的单位 转成为 px(像素)
      */

+ 2 - 0
app_core/common/src/main/java/com/core/xmpp/XChatManager.java

@@ -5,6 +5,7 @@ import android.util.Log;
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
+import com.common.LogUtil;
 import com.common.config.VersionUtil;
 import com.common.data.CalendarUtil;
 import com.common.data.JSONUtil;
@@ -284,6 +285,7 @@ public class XChatManager {
     /*UU 助手的数据源*/
     private void saveUUHelperMessage(String messageBody) {
         if (!VersionUtil.showUUHelper()) return;
+        LogUtil.i("messageBody="+messageBody);
         JSONObject object = JSON.parseObject(messageBody);
         long timeSend = JSONUtil.getLong(object, "timeSend");
         String content = JSONUtil.getText(object, "content", "title");

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

@@ -37,6 +37,7 @@
             android:background="@color/white"
             android:layout_height="30dp">
             <TextView
+                android:id="@+id/detailsTV"
                 android:layout_width="wrap_content"
                 android:layout_height="match_parent"
                 android:gravity="bottom"
@@ -92,7 +93,7 @@
                     android:id="@+id/et_task_people"
                     style="@style/TagGroup"
                     android:layout_width="wrap_content"
-                    android:layout_height="fill_parent"
+                    android:layout_height="match_parent"
                     android:background="@null" />
             </ScrollView>
 

+ 0 - 4
app_core/common/src/main/res/layout/activity_expense_reimbursement.xml

@@ -33,10 +33,6 @@
                     android:textColor="@color/text_main"
                     android:textSize="15sp" />
 
-                <ImageView
-                    style="@style/IMTbleLine_ArrowImg"
-                    android:layout_alignParentRight="true"
-                    android:contentDescription="@string/app_name" />
                 <com.andreabaccega.widget.FormEditText
                     android:id="@+id/reimbursement_title_fet"
                     android:layout_width="wrap_content"

+ 2 - 2
app_core/common/src/main/res/layout/expense_details_table_item.xml

@@ -38,11 +38,11 @@
             android:layout_gravity="center_vertical"
             android:textColor="@color/text_main"
             android:textSize="14sp"
-            android:maxLength="7"
             android:paddingLeft="10dp"
             whatever:customRegexp="^[0-9]+(.[0-9]{2})?$"
             whatever:testType="regexp"
-            whatever:testErrorString="限制输入7位有效正实数(保留两位小数)"
+            whatever:testErrorString="限制输入8位有效正实数(保留两位小数)"
+
         />
 
         <View

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

@@ -41,6 +41,7 @@
             android:gravity="center_vertical|right"
             android:layout_marginRight="5dp"
             android:textSize="17sp"
+            android:maxLength="8"
             />
     </LinearLayout>
     <LinearLayout

+ 12 - 0
app_core/common/src/main/res/menu/menu_uusport_list.xml

@@ -0,0 +1,12 @@
+<menu xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
+    tools:context="com.xzjmyk.pm.activity.MainActivity">
+
+    <item
+        android:id="@+id/more"
+        android:title="@string/sports_recode"
+        android:icon="@drawable/xlist"
+        app:showAsAction="ifRoom" />
+
+</menu>

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

@@ -1198,7 +1198,7 @@
         <item name="android:lines">1</item>
         <item name="android:gravity">center</item>
         <item name="android:textColor">@color/titleBlue</item>
-        <item name="android:textSize">@dimen/BigTextSize</item>
+        <item name="android:textSize">@dimen/text_main</item>
     </style>
 
     <style name="approvalStyle">

+ 0 - 1
app_core/network/src/main/java/com/me/network/app/http/HttpClient.java

@@ -120,7 +120,6 @@ public class HttpClient {
         public Builder() {
             this.method = Method.GET;
             this.params.put("client","Android Client");
-            this.headers.put("Content-Type","application/x-www-form-urlencoded;charset=UTF-8");
         }
 
         public Builder(String url) {

+ 8 - 16
app_core/network/src/main/java/com/me/network/app/http/interceptor/LogInterceptor.java

@@ -5,6 +5,7 @@ import com.common.LogUtil;
 import com.me.network.app.http.HttpClient;
 
 import java.io.IOException;
+import java.net.URLDecoder;
 import java.util.HashMap;
 import java.util.Map;
 
@@ -29,8 +30,8 @@ public class LogInterceptor implements Interceptor {
 	@Override
 	public Response intercept(Chain chain) throws IOException {
 		  Request request = chain.request();
-		  Map<String, Object> headers;
-		  Map<String, Object> params;
+		  Map<String, Object> headers=new HashMap<>();;
+		  Map<String, Object> params=new HashMap<>();;
 		  Map<String,Object> postParam=new HashMap<>();
 		  //添加公共Header,公共参数
 		  if (builder!=null) {
@@ -43,7 +44,7 @@ public class LogInterceptor implements Interceptor {
 						  .build();
 				  }
 			}
-			if (!params.isEmpty()) {
+			if (params!=null) {
 				  //get请求    添加公共参数
 				  if(request.method().equals("GET")){
 					  for (Map.Entry<String, Object> entry : params.entrySet()) {
@@ -78,20 +79,11 @@ public class LogInterceptor implements Interceptor {
 		  Response response = chain.proceed(request);
 		  okhttp3.MediaType mediaType = response.body().contentType();
           String content = response.body().string();
-		
          if (builder.isDebug()) {
-			/* Logger.init("PRETTYLOGGER")
-					 .hideThreadInfo()
-					 .methodCount(0);
-			 Logger.i("url:" + JSON.toJSONString(response.request().url().toString()));
-			 Logger.i("headers:"+ JSON.toJSONString(response.request().headers().toMultimap()));
-			 Logger.i("params:" + JSON.toJSONString(postParam));
-			 Logger.init("PRETTYLOGGER")
-					 .methodCount(1);*/
-			 LogUtil.d("HttpLogs","URL:" + JSON.toJSONString(response.request().url().toString()));
-			 LogUtil.d("HttpLogs","HEADER:"+ JSON.toJSONString(response.request().headers().toMultimap()));
-			 LogUtil.d("HttpLogs","PARAMS:" + JSON.toJSONString(postParam));
-			 LogUtil.d("HttpLogs","TEXT:" + content);
+			 LogUtil.d("HttpLogs","接口URL:" + JSON.toJSONString(response.request().url().toString()));
+			 LogUtil.d("HttpLogs","请求头:"+ JSON.toJSONString(response.request().headers().toMultimap()));
+			 LogUtil.d("HttpLogs","参数:" + URLDecoder.decode(postParam.toString(),"UTF-8"));
+			 LogUtil.d("HttpLogs","返回结果:" + content);
 		}
     
 		return response.newBuilder()

+ 1 - 1
app_modular/appbooking/src/main/java/com/modular/booking/activity/business/BBookingAddActivity.java

@@ -81,7 +81,7 @@ public class BBookingAddActivity extends OABaseActivity implements View.OnClickL
     List<DataState> dataStates;
     GridDataAdapter adapter;
     private String phone;
-    private String[] mTypes = {"商务洽谈", "开会", "外出娱乐", "吃饭", "卡拉OK", "其它" };
+    private String[] mTypes = {"商务洽谈", "开会", "外出娱乐", "吃饭", "卡拉OK", "高尔夫","麻将","电影","其它" };
 
 
     @Override

+ 3 - 2
app_modular/appbooking/src/main/java/com/modular/booking/activity/business/BBookingDetailActivity.java

@@ -214,6 +214,8 @@ public class BBookingDetailActivity extends OABaseActivity implements View.OnCli
     }
 
     private void updateUi(boolean isShared) {
+        ll_bottom.setVisibility(View.VISIBLE);
+        sv_top.setVisibility(View.VISIBLE);
         tvTime.setText(model.getAb_starttime().substring(0,10)+" "+model.getAb_starttime().substring(11,16)+"-"+
                 model.getAb_endtime().substring(11,16));
         tvAddress.setText(model.getAb_address());
@@ -296,8 +298,7 @@ public class BBookingDetailActivity extends OABaseActivity implements View.OnCli
             ll_bottom.setVisibility(View.GONE);
             isMenuShuffle=false;
         }
-        ll_bottom.setVisibility(View.VISIBLE);
-        sv_top.setVisibility(View.VISIBLE);
+     
     }
 
     public void initEvent(){

+ 1 - 0
app_modular/appbooking/src/main/res/layout/activity_bbooking_add.xml

@@ -41,6 +41,7 @@
             </RelativeLayout>
             <RelativeLayout
                 android:id="@+id/rl_company"
+                android:visibility="gone"
                 style="@style/item_menu">
 
                 <TextView

+ 5 - 2
app_modular/appcontact/src/main/java/com/uas/appcontact/db/ContactsDao.java

@@ -74,7 +74,10 @@ public class ContactsDao {
         List<ContactsModel> models=new ArrayList<>();
         Cursor cursor =db.rawQuery("select * from tbl_contacts a where id=" +
                 "(select min(id) from tbl_contacts where tf_phone=a.tf_phone and tf_ownerId=? ) and (tf_phone<> ? and tf_phone<> ?) " +
-                "  and (tf_whichSys=? or tf_whichSys=? ) ", new String[]{ownerId,"未填写"," ",master,""});
+                "   ", new String[]{ownerId,"未填写"," "});
+//        Cursor cursor =db.rawQuery("select * from tbl_contacts a where id=" +
+//                "(select min(id) from tbl_contacts where tf_phone=a.tf_phone and tf_ownerId=? ) and (tf_phone<> ? and tf_phone<> ?) " +
+//                "  and (tf_whichSys=? or tf_whichSys=? ) ", new String[]{ownerId,"未填写"," ",master,""});
         while (cursor.moveToNext()) {
             ContactsModel model=new ContactsModel();
             model.setName(cursor.getString(cursor.getColumnIndex("tf_name")));
@@ -195,7 +198,7 @@ public class ContactsDao {
     public  void delete(){
         SQLiteDatabase db=  DatabaseManager.getInstance().openDatabase();
         String table = "tbl_contacts";
-        String whereClause = "1=1";
+        String whereClause = "tf_type!=2";
         int row= db.delete(table, whereClause, null);
         DatabaseManager.getInstance().closeDatabase();
     }

+ 20 - 34
app_modular/appcontact/src/main/java/com/uas/appcontact/ui/activity/ContactsActivity.java

@@ -423,12 +423,8 @@ public class ContactsActivity extends OABaseActivity implements ContactsAdapter.
         ThreadPool.getThreadPool().addTask(new Runnable() {
             @Override
             public void run() {
-                LogUtil.d("Test", "isHasPermiss:" + isHasPermiss);
                 if (isHasPermiss) {
-                    List<Contacts> contacts =
-                            ContactsUtils.getContacts1();
-                    //上传数据到服务器
-                  uploadData(contacts);
+                    List<Contacts> contacts = ContactsUtils.getContacts1();
                     if (contacts != null) {
                         for (Contacts entity : contacts) {
                             ContactsModel model = new ContactsModel();
@@ -459,27 +455,21 @@ public class ContactsActivity extends OABaseActivity implements ContactsAdapter.
 
     /**
      * @desc:加载通讯录数据
-     * @author:Arison on 2017/7/19
      */
     public void getCaceData(final boolean isHasNet) {
-      
         ThreadPool.getThreadPool().addTask(new Runnable() {
             @Override
             public void run() {
                 final List<ContactsModel> lists = getLocalContactsByDB();
-//                List<ContactsModel> contacts=new ArrayList<>();
-//                for (ContactsModel model:lists){
-//                    if ("0".equals(model.getImid())){
-//                        contacts.add(model);
-//                    }
-//                }
-//                uploadData(contacts);
-                    
-                LogUtil.d("Test", "!ListUtils.isEmpty(lists)=" + !ListUtils.isEmpty(lists));
+                List<ContactsModel> contacts=new ArrayList<>();
+                for (ContactsModel model:lists){
+                    if ("0".equals(model.getImid())||StringUtil.isEmpty(model.getImid())){
+                        contacts.add(model);
+                    }
+                }
+                uploadData(contacts);
                 boolean falg = !ListUtils.isEmpty(lists) && !isHasNet;
-                LogUtil.d("Test", "缓存不为空!" + falg);
                 if (falg) {
-                    LogUtil.d("Test", "缓存不为空!");
                     getStateByPhones(lists);
                     OAHttpHelper.getInstance().post(new Runnable() {
                         @Override
@@ -500,9 +490,6 @@ public class ContactsActivity extends OABaseActivity implements ContactsAdapter.
 
                 } else {
                     LogUtil.d("Test", "-----------缓存为空!---------");
-//                   tmodels.clear();
-//                   contactsDao.delete();
-//                  loadIMContacts();
                     if (!ListUtils.isEmpty(tmodels)) {
                         tmodels.clear();
                     }
@@ -570,7 +557,11 @@ public class ContactsActivity extends OABaseActivity implements ContactsAdapter.
                 String message = result.toString();
                 if (!StringUtil.isEmpty(message)) {
                     LogUtil.d("Test", "message:" + message);
-                    hanlderAppQueryuserInThread(message);
+                    try {
+                        hanlderAppQueryuserInThread(message);
+                    } catch (Exception e) {
+                      
+                    }
                 }
             }
         }, String.class, params);
@@ -881,13 +872,8 @@ public class ContactsActivity extends OABaseActivity implements ContactsAdapter.
 
 
     //
-    public void uploadData(List<Contacts> models) {
-        
+    public void uploadData(List<ContactsModel> models) {
         if (!ListUtils.isEmpty(models)) {
-//            String map="[{\n" +
-//                    "\"am_telephone\":\"13266699268\",\n" +
-//                    "\"am_username\":\"张山\"\n" +
-//                    "}]";
             StringBuilder mapBuilder = new StringBuilder("[");
             for (int i = 0; i < models.size(); i++) {
                 if (i == models.size() - 1) {
@@ -904,11 +890,9 @@ public class ContactsActivity extends OABaseActivity implements ContactsAdapter.
                             "},");
                 }
             }
-            LogUtil.d("HttpLogs","token:"+MyApplication.getInstance().mAccessToken);
-            LogUtil.d("HttpLogs","userid:"+MyApplication.getInstance().mLoginUser.getUserId());
-            LogUtil.d("HttpLogs","username:"+MyApplication.getInstance().mLoginUser.getNickName());
-            LogUtil.prinlnLongMsg("HttpLogs","map:"+mapBuilder.toString());
+         
             HttpClient httpClient = new HttpClient.Builder().url(Constants.IM_BASE_URL)
+                    .add("comParam","param")
                     .isDebug(true).build(true);
             httpClient.Api().send(new HttpClient.Builder()
                     .url("/user/appMobileContact")
@@ -917,12 +901,14 @@ public class ContactsActivity extends OABaseActivity implements ContactsAdapter.
                     .add("username", MyApplication.getInstance().mLoginUser.getNickName())
                     .add("map", mapBuilder.toString())
                     .method(Method.POST)
-                    .build(false), new ResultSubscriber<>(new ResultListener<Object>() {
+                    .build(), new ResultSubscriber<>(new ResultListener<Object>() {
 
                 @Override
                 public void onResponse(Object o) {
+                    LogUtil.prinlnLongMsg("HttpLogs",o.toString());
+                    LogUtil.d("HttpLogs","result:"+o.toString());
                        if(JSONUtil.validate(o.toString())){
-                        LogUtil.d("HttpLogs","result:"+o.toString());
+                       
                        }
                 }
             }));

+ 3 - 0
app_modular/appme/src/main/AndroidManifest.xml

@@ -35,5 +35,8 @@
         <activity
             android:name="com.uas.appme.other.activity.SelectAreaActivity"
             android:screenOrientation="portrait" />
+        <activity android:name=".pedometer.view.UURanking"
+            android:label="排行榜"></activity>
+        <activity android:name=".pedometer.view.PersonalPageActivity"/>
     </application>
 </manifest>

+ 82 - 0
app_modular/appme/src/main/java/com/uas/appme/pedometer/adapter/UUAttentionAdapter.java

@@ -0,0 +1,82 @@
+package com.uas.appme.pedometer.adapter;
+
+import android.content.Context;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.BaseAdapter;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import com.common.data.ListUtils;
+import com.uas.appme.R;
+import com.uas.appme.pedometer.bean.StepsRankingBean;
+
+import de.hdodenhof.circleimageview.CircleImageView;
+
+/**
+ * Created by FANGlh on 2017/9/19.
+ * function:
+ */
+
+public class UUAttentionAdapter extends BaseAdapter{
+    private Context mContext;
+    private StepsRankingBean model;
+
+    public StepsRankingBean getModel() {
+        return model;
+    }
+
+    public void setModel(StepsRankingBean model) {
+        this.model = model;
+    }
+    public UUAttentionAdapter(Context mContext){this.mContext = mContext;}
+    @Override
+    public int getCount() {
+        return ListUtils.isEmpty(model.getAttrank()) ? 0 : model.getAttrank().size();
+    }
+
+    @Override
+    public Object getItem(int position) {
+        return model.getAttrank().get(position);
+    }
+
+    @Override
+    public long getItemId(int position) {
+        return position;
+    }
+
+    @Override
+    public View getView(int position, View convertView, ViewGroup parent) {
+        ViewHolder viewHolder = null;
+        if (convertView == null){
+            viewHolder = new ViewHolder();
+            convertView =  View.inflate(mContext, R.layout.item_uuattention,null);
+            viewHolder.ranking_tv = (TextView) convertView.findViewById(R.id.ranking_tv);
+            viewHolder.name_tv = (TextView) convertView.findViewById(R.id.name_tv);
+            viewHolder.steps_tv = (TextView) convertView.findViewById(R.id.steps_tv);
+            viewHolder.prise_tv = (TextView) convertView.findViewById(R.id.prise_tv);
+            viewHolder.photo_img = (CircleImageView) convertView.findViewById(R.id.photo_img);
+            viewHolder.prise_im = (ImageView) convertView.findViewById(R.id.prise_im);
+            convertView.setTag(viewHolder);
+        }else {
+            viewHolder = (ViewHolder) convertView.getTag();
+        }
+//        if(!MyApplication.getInstance().mLoginUser.getUserId().equals(model.getAttrank().get(position).getAs_userid())){  //关注的人不应该显示自己,但是数据返回了自己,这里要判断一下不显示
+            viewHolder.ranking_tv.setText("第"+model.getAttrank().get(position).getRank()+"名");
+            viewHolder.name_tv.setText(model.getAttrank().get(position).getAs_username());
+            viewHolder.steps_tv.setText(model.getAttrank().get(position).getAs_uusteps());
+//            viewHolder.prise_tv.setText("0");
+//        }
+
+        return convertView;
+    }
+
+    class ViewHolder{
+        TextView ranking_tv;
+        CircleImageView photo_img;
+        TextView name_tv;
+        TextView steps_tv;
+        TextView prise_tv;
+        ImageView prise_im;
+    }
+}

+ 79 - 0
app_modular/appme/src/main/java/com/uas/appme/pedometer/adapter/UURankingAdapter.java

@@ -0,0 +1,79 @@
+package com.uas.appme.pedometer.adapter;
+
+import android.content.Context;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.BaseAdapter;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import com.common.data.ListUtils;
+import com.uas.appme.R;
+import com.uas.appme.pedometer.bean.StepsRankingBean;
+
+import de.hdodenhof.circleimageview.CircleImageView;
+
+/**
+ * Created by FANGlh on 2017/9/19.
+ * function:
+ */
+
+public class UURankingAdapter extends BaseAdapter{
+    private Context mContext;
+    private StepsRankingBean model;
+
+    public StepsRankingBean getModel() {
+        return model;
+    }
+
+    public void setModel(StepsRankingBean model) {
+        this.model = model;
+    }
+
+    public UURankingAdapter(Context mContext){this.mContext = mContext;}
+    @Override
+    public int getCount() {
+        return ListUtils.isEmpty(model.getToalrank()) ? 0 : model.getToalrank().size();
+    }
+
+    @Override
+    public Object getItem(int position) {
+        return model.getToalrank().get(position);
+    }
+
+    @Override
+    public long getItemId(int position) {
+        return position;
+    }
+
+    @Override
+    public View getView(int position, View convertView, ViewGroup parent) {
+        ViewHolder viewHolder = null;
+        if (convertView == null){
+            viewHolder = new ViewHolder();
+            convertView =  View.inflate(mContext, R.layout.item_uuranking,null);
+            viewHolder.ranking_tv = (TextView) convertView.findViewById(R.id.ranking_tv);
+            viewHolder.name_tv = (TextView) convertView.findViewById(R.id.name_tv);
+            viewHolder.steps_tv = (TextView) convertView.findViewById(R.id.steps_tv);
+            viewHolder.prise_tv = (TextView) convertView.findViewById(R.id.prise_tv);
+            viewHolder.photo_img = (CircleImageView) convertView.findViewById(R.id.photo_img);
+            viewHolder.prise_im = (ImageView) convertView.findViewById(R.id.prise_im);
+            convertView.setTag(viewHolder);
+        }else {
+            viewHolder = (ViewHolder) convertView.getTag();
+        }
+        viewHolder.ranking_tv.setText(model.getToalrank().get(position).getRank()+"");
+        viewHolder.name_tv.setText(model.getToalrank().get(position).getAs_username());
+        viewHolder.steps_tv.setText(model.getToalrank().get(position).getAs_uusteps());
+        return convertView;
+    }
+
+    class ViewHolder{
+        TextView ranking_tv;
+        CircleImageView photo_img;
+        TextView name_tv;
+        TextView steps_tv;
+        TextView prise_tv;
+        ImageView prise_im;
+    }
+}

+ 82 - 0
app_modular/appme/src/main/java/com/uas/appme/pedometer/bean/PersonalStepBean.java

@@ -0,0 +1,82 @@
+package com.uas.appme.pedometer.bean;
+
+import java.util.List;
+
+/**
+ * Created by FANGlh on 2017/9/22.
+ * function: 个人历史周/月步数
+ */
+
+public class PersonalStepBean  {
+
+    private List<MonthStepsBean> monthSteps;
+    private List<WeekStepsBean> weekSteps;
+
+    public List<MonthStepsBean> getMonthSteps() {
+        return monthSteps;
+    }
+
+    public void setMonthSteps(List<MonthStepsBean> monthSteps) {
+        this.monthSteps = monthSteps;
+    }
+
+    public List<WeekStepsBean> getWeekSteps() {
+        return weekSteps;
+    }
+
+    public void setWeekSteps(List<WeekStepsBean> weekSteps) {
+        this.weekSteps = weekSteps;
+    }
+
+    public static class MonthStepsBean {
+        /**
+         * as_date : 2017-09-21
+         * as_uusteps : 21
+         */
+
+        private String as_date;
+        private String as_uusteps;
+
+        public String getAs_date() {
+            return as_date;
+        }
+
+        public void setAs_date(String as_date) {
+            this.as_date = as_date;
+        }
+
+        public String getAs_uusteps() {
+            return as_uusteps;
+        }
+
+        public void setAs_uusteps(String as_uusteps) {
+            this.as_uusteps = as_uusteps;
+        }
+    }
+
+    public static class WeekStepsBean {
+        /**
+         * as_date : 2017-09-21
+         * as_uusteps : 21
+         */
+
+        private String as_date;
+        private String as_uusteps;
+
+        public String getAs_date() {
+            return as_date;
+        }
+
+        public void setAs_date(String as_date) {
+            this.as_date = as_date;
+        }
+
+        public String getAs_uusteps() {
+            return as_uusteps;
+        }
+
+        public void setAs_uusteps(String as_uusteps) {
+            this.as_uusteps = as_uusteps;
+        }
+    }
+}

+ 163 - 0
app_modular/appme/src/main/java/com/uas/appme/pedometer/bean/StepsRankingBean.java

@@ -0,0 +1,163 @@
+package com.uas.appme.pedometer.bean;
+
+import java.util.List;
+
+/**
+ * Created by FANGlh on 2017/9/21.
+ * function: 当天排行榜步数实体类
+ */
+
+public class StepsRankingBean {
+
+
+    private List<AttrankBean> attrank;
+    private List<ToalrankBean> toalrank;
+
+    public List<AttrankBean> getAttrank() {
+        return attrank;
+    }
+
+    public void setAttrank(List<AttrankBean> attrank) {
+        this.attrank = attrank;
+    }
+
+    public List<ToalrankBean> getToalrank() {
+        return toalrank;
+    }
+
+    public void setToalrank(List<ToalrankBean> toalrank) {
+        this.toalrank = toalrank;
+    }
+
+    public static class AttrankBean {
+        /**
+         * as_date : 2017-09-22 00:00:00.0
+         * as_id : 6
+         * as_userid : 109079
+         * as_username : 陈爱平
+         * as_uusteps : 50
+         * rank : 1
+         */
+
+        private String as_date;
+        private String as_id;
+        private String as_userid;
+        private String as_username;
+        private String as_uusteps;
+        private int rank;
+
+        public String getAs_date() {
+            return as_date;
+        }
+
+        public void setAs_date(String as_date) {
+            this.as_date = as_date;
+        }
+
+        public String getAs_id() {
+            return as_id;
+        }
+
+        public void setAs_id(String as_id) {
+            this.as_id = as_id;
+        }
+
+        public String getAs_userid() {
+            return as_userid;
+        }
+
+        public void setAs_userid(String as_userid) {
+            this.as_userid = as_userid;
+        }
+
+        public String getAs_username() {
+            return as_username;
+        }
+
+        public void setAs_username(String as_username) {
+            this.as_username = as_username;
+        }
+
+        public String getAs_uusteps() {
+            return as_uusteps;
+        }
+
+        public void setAs_uusteps(String as_uusteps) {
+            this.as_uusteps = as_uusteps;
+        }
+
+        public int getRank() {
+            return rank;
+        }
+
+        public void setRank(int rank) {
+            this.rank = rank;
+        }
+    }
+
+    public static class ToalrankBean {
+        /**
+         * as_date : 2017-09-22 00:00:00.0
+         * as_id : 6
+         * as_userid : 109079
+         * as_username : 陈爱平
+         * as_uusteps : 50
+         * rank : 1
+         */
+
+        private String as_date;
+        private String as_id;
+        private String as_userid;
+        private String as_username;
+        private String as_uusteps;
+        private int rank;
+
+        public String getAs_date() {
+            return as_date;
+        }
+
+        public void setAs_date(String as_date) {
+            this.as_date = as_date;
+        }
+
+        public String getAs_id() {
+            return as_id;
+        }
+
+        public void setAs_id(String as_id) {
+            this.as_id = as_id;
+        }
+
+        public String getAs_userid() {
+            return as_userid;
+        }
+
+        public void setAs_userid(String as_userid) {
+            this.as_userid = as_userid;
+        }
+
+        public String getAs_username() {
+            return as_username;
+        }
+
+        public void setAs_username(String as_username) {
+            this.as_username = as_username;
+        }
+
+        public String getAs_uusteps() {
+            return as_uusteps;
+        }
+
+        public void setAs_uusteps(String as_uusteps) {
+            this.as_uusteps = as_uusteps;
+        }
+
+        public int getRank() {
+            return rank;
+        }
+
+        public void setRank(int rank) {
+            this.rank = rank;
+        }
+    }
+}

+ 1 - 0
app_modular/appme/src/main/java/com/uas/appme/pedometer/constant/Constant.java

@@ -22,5 +22,6 @@ public class Constant {
     public static final int LATEST_COLUMN = Integer.MAX_VALUE;
     public static final int BASE_COLUMN = 100000000;
     public static String TRACK_STEP = "TRACKSTEP";
+    public static String BASE_STEP_URL = "http://113.105.74.140:8092/user/";
 
 }

+ 19 - 0
app_modular/appme/src/main/java/com/uas/appme/pedometer/service/StepService.java

@@ -22,17 +22,26 @@ import android.os.IBinder;
 import android.os.Message;
 import android.os.Messenger;
 import android.os.RemoteException;
+import android.widget.Toast;
 
 import com.alibaba.fastjson.JSON;
 import com.baidu.mapapi.model.LatLng;
 import com.common.LogUtil;
+import com.common.data.DateFormatUtil;
 import com.common.data.ListUtils;
+import com.common.data.StringUtil;
 import com.core.app.MyApplication;
 import com.core.utils.CommonUtil;
+import com.core.utils.TimeUtils;
+import com.me.network.app.http.HttpClient;
+import com.me.network.app.http.Method;
+import com.me.network.app.http.rx.ResultListener;
+import com.me.network.app.http.rx.ResultSubscriber;
 import com.uas.appme.R;
 import com.uas.appme.pedometer.bean.StepEntity;
 import com.uas.appme.pedometer.constant.Constant;
 import com.uas.appme.pedometer.db.StepDataDao;
+import com.uas.appme.pedometer.utils.StepUtils;
 import com.uas.appme.pedometer.utils.TimeUtil;
 import com.uas.appme.pedometer.utils.TrackUtils;
 import com.uas.appme.pedometer.view.StepSplashActivity;
@@ -40,7 +49,9 @@ import com.uas.appme.pedometer.view.StepSplashActivity;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.Date;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 /**
  * Created by FANGLH
@@ -187,14 +198,20 @@ public class StepService extends Service implements SensorEventListener {
                     case Intent.ACTION_SCREEN_OFF:
                         //屏幕熄灭改为10秒一存储
                         saveDuration = 10000;
+                        //将本地的UU运动步数更新至服务器
+                        StepUtils.doSaveLocalStepsToHttps();
                         break;
                     //关机广播,保存好当前数据
                     case Intent.ACTION_SHUTDOWN:
                         saveStepData();
+                        //将本地的UU运动步数更新至服务器
+                        StepUtils.doSaveLocalStepsToHttps();
                         break;
                     // 屏幕解锁广播
                     case Intent.ACTION_USER_PRESENT:
                         saveDuration = 3000;
+                        //将本地的UU运动步数更新至服务器
+                        StepUtils.doSaveLocalStepsToHttps();
                         break;
                     // 当长按电源键弹出“关机”对话或者锁屏时系统会发出这个广播
                     // example:有时候会用到系统对话框,权限可能很高,会覆盖在锁屏界面或者“关机”对话框之上,
@@ -389,6 +406,8 @@ public class StepService extends Service implements SensorEventListener {
     }
 
 
+
+
     @Override
     public void onDestroy() {
         super.onDestroy();

+ 58 - 0
app_modular/appme/src/main/java/com/uas/appme/pedometer/utils/StepUtils.java

@@ -0,0 +1,58 @@
+package com.uas.appme.pedometer.utils;
+
+import com.common.LogUtil;
+import com.common.data.DateFormatUtil;
+import com.common.data.JSONUtil;
+import com.common.data.StringUtil;
+import com.core.app.MyApplication;
+import com.core.utils.CommonUtil;
+import com.core.utils.TimeUtils;
+import com.me.network.app.http.HttpClient;
+import com.me.network.app.http.Method;
+import com.me.network.app.http.rx.ResultListener;
+import com.me.network.app.http.rx.ResultSubscriber;
+import com.uas.appme.pedometer.bean.StepEntity;
+import com.uas.appme.pedometer.constant.Constant;
+import com.uas.appme.pedometer.db.StepDataDao;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Created by FANGlh on 2017/9/21.
+ * function: UU计步工具类 区分与 Track轨迹公共类
+ */
+
+public class StepUtils {
+
+    public static void doSaveLocalStepsToHttps() {
+        StepDataDao stepDataDao = new StepDataDao(MyApplication.getInstance());
+        //获取当前时间
+        String CURRENT_DATE = TimeUtil.getCurrentDate();
+        StepEntity entity = stepDataDao.getCurDataByDate(CURRENT_DATE);
+        if (entity == null) return;
+        String steps = entity.getSteps();
+        String date = TimeUtils.s_long_2_str(DateFormatUtil.str2Long(entity.getCurDate(), "yyyy年MM月dd日"));
+
+        LogUtil.prinlnLongMsg("steps=,date=",steps+","+date);
+        if (StringUtil.isEmpty(steps) || StringUtil.isEmpty(date)) return;
+        Map<String,Object> saveMap = new HashMap<>();
+        saveMap.put("as_userid",MyApplication.getInstance().mLoginUser.getUserId());
+        saveMap.put("as_username", CommonUtil.getSharedPreferences(MyApplication.getInstance(), "erp_emname"));
+        saveMap.put("as_uusteps",steps);
+        saveMap.put("as_date",date);
+        String map = JSONUtil.map2JSON(saveMap);
+        HttpClient httpClient = new HttpClient.Builder(Constant.BASE_STEP_URL).build();
+        httpClient.Api().send(new HttpClient.Builder()
+                .url("appUUsteps")
+                .add("map",map)
+                .add("token",MyApplication.getInstance().mAccessToken)
+                .method(Method.POST)
+                .build(),new ResultSubscriber<>(new ResultListener<Object>() {
+            @Override
+            public void onResponse(Object o) {
+                LogUtil.prinlnLongMsg("appUUsteps",o.toString()+"");
+            }
+        }));
+    }
+}

+ 12 - 0
app_modular/appme/src/main/java/com/uas/appme/pedometer/view/NewStepActivity.java

@@ -218,7 +218,14 @@ public class NewStepActivity extends BaseActivity implements Handler.Callback {
      */
     private void setDatas() {
         StepEntity stepEntity = stepDataDao.getCurDataByDate(curSelDate);
+        //制作一些假数据
 
+//        for(int k=1;k<20;k++){
+//            StepEntity entity = new StepEntity();
+//            entity.setCurDate("2017-09-"+k);
+//            entity.setSteps(123*k+"");
+//            stepDataDao.addNewData(entity);
+//        }
         if (stepEntity != null) {
             int steps = Integer.parseInt(stepEntity.getSteps());
 
@@ -299,6 +306,8 @@ public class NewStepActivity extends BaseActivity implements Handler.Callback {
 
     @Override
     public boolean onCreateOptionsMenu(Menu menu) {
+//        if (!CommonUtil.isReleaseVersion())
+            getMenuInflater().inflate(R.menu.menu_uusport_list, menu);
         return super.onCreateOptionsMenu(menu);
     }
 
@@ -306,6 +315,8 @@ public class NewStepActivity extends BaseActivity implements Handler.Callback {
     public boolean onOptionsItemSelected(MenuItem item) {
         if (item.getItemId() == android.R.id.home){
             startActivity(new Intent(getApplicationContext(), SettingActivity.class));
+        } else if (item.getItemId() == R.id.more){
+            startActivity(new Intent(this,UURanking.class));
         }
         return super.onOptionsItemSelected(item);
     }
@@ -315,4 +326,5 @@ public class NewStepActivity extends BaseActivity implements Handler.Callback {
         startActivity(new Intent(getApplicationContext(), SettingActivity.class));
         super.onBackPressed();
     }
+
 }

+ 233 - 0
app_modular/appme/src/main/java/com/uas/appme/pedometer/view/PersonalPageActivity.java

@@ -0,0 +1,233 @@
+package com.uas.appme.pedometer.view;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.util.Log;
+import android.view.Gravity;
+import android.view.LayoutInflater;
+import android.view.Menu;
+import android.view.MenuItem;
+import android.view.View;
+import android.widget.Button;
+import android.widget.LinearLayout;
+import android.widget.PopupWindow;
+import android.widget.TextView;
+
+import com.alibaba.fastjson.JSON;
+import com.common.LogUtil;
+import com.common.data.DateFormatUtil;
+import com.common.data.ListUtils;
+import com.common.data.StringUtil;
+import com.common.system.DisplayUtil;
+import com.core.app.MyApplication;
+import com.core.base.BaseActivity;
+import com.core.utils.CommonUtil;
+import com.core.utils.TimeUtils;
+import com.me.network.app.http.HttpClient;
+import com.me.network.app.http.Method;
+import com.me.network.app.http.rx.ResultListener;
+import com.me.network.app.http.rx.ResultSubscriber;
+import com.uas.appme.R;
+import com.uas.appme.pedometer.bean.PersonalStepBean;
+import com.uas.appme.pedometer.constant.Constant;
+import com.uas.appme.pedometer.utils.TimeUtil;
+
+import java.text.DecimalFormat;
+
+/**
+ * Created by FANGlh on 2017/9/21.
+ * function:
+ */
+
+public class PersonalPageActivity extends BaseActivity implements View.OnClickListener{
+
+    private String title;
+    private String userid;
+    private String em_name;
+    private int type;
+    private TextView mMovementTotalKmTv;
+    private TextView mMovementTotalKmTimeTv;
+    private TextView mMovementTotalStepsTv;
+    private TextView mMovementTotalStepsTimeTv;
+    private PersonalStepBean mPersonalStepBean;
+    private Button mbtnAttention;
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.personal_page_activity);
+
+        initView();
+        initData();
+    }
+
+
+    private void initView() {
+        Intent intent = getIntent();
+        title = intent.getStringExtra("title");
+        userid = intent.getStringExtra("userid");
+        em_name = intent.getStringExtra("em_name");
+        type = intent.getIntExtra("type", -1);
+        getSupportActionBar().setTitle(title);
+
+        LogUtil.i("userid",userid);
+        mMovementTotalKmTv = (TextView) findViewById(R.id.movement_total_km_tv);
+        mMovementTotalKmTimeTv = (TextView) findViewById(R.id.movement_total_km_time_tv);
+        mMovementTotalStepsTv = (TextView) findViewById(R.id.movement_total_steps_tv);
+        mMovementTotalStepsTimeTv = (TextView) findViewById(R.id.movement_total_steps_time_tv);
+        mbtnAttention = (Button) findViewById(R.id.btn_attention);
+        mbtnAttention.setOnClickListener(this);
+        mPersonalStepBean = new PersonalStepBean();
+
+        if (type == 3)  // type 1、2 我、已关注的人
+            mbtnAttention.setVisibility(View.VISIBLE);
+        else
+            mbtnAttention.setVisibility(View.GONE);
+    }
+
+    private void initData() {
+        if (!CommonUtil.isNetWorkConnected(this)) {
+            ToastMessage(getString(R.string.common_notlinknet));
+            return;
+        }
+        if (StringUtil.isEmpty(userid)) return;
+        progressDialog.show();
+        HttpClient httpClient = new HttpClient.Builder(Constant.BASE_STEP_URL).isDebug(true).build(true);
+        httpClient.Api().send(new HttpClient.Builder()
+                .url("appSteps")
+                .add("userid", userid)
+                .add("token", MyApplication.getInstance().mAccessToken)
+                .method(Method.GET)
+                .build(), new ResultSubscriber<>(new ResultListener<Object>() {
+            @Override
+            public void onResponse(Object o) {
+                LogUtil.prinlnLongMsg("appSteps", o.toString());
+                mPersonalStepBean = JSON.parseObject(o.toString(),PersonalStepBean.class);
+                showStepsInfo();            }
+        }));
+    }
+
+    private void showStepsInfo() {
+        progressDialog.dismiss();
+        if (mPersonalStepBean == null || ListUtils.isEmpty(mPersonalStepBean.getWeekSteps()))  return;
+        int weekSteps_size = mPersonalStepBean.getWeekSteps().size();
+        int monthSteps_size = mPersonalStepBean.getMonthSteps().size();
+        String curDate = TimeUtils.s_long_2_str(DateFormatUtil.str2Long(TimeUtil.getCurrentDate(), "yyyy年MM月dd日"));
+        String curSteps = "";
+        Log.i("curDate",curDate);
+        for (int i = 0; i < monthSteps_size; i++) {
+            if (mPersonalStepBean.getWeekSteps().get(i).getAs_date().equals(curDate)){
+                curSteps = mPersonalStepBean.getMonthSteps().get(i).getAs_uusteps();
+                break;
+            }
+        }
+        mMovementTotalStepsTv.setText(curSteps);
+        mMovementTotalKmTv.setText(countTotalKM(CommonUtil.getNumByString(curSteps)));
+
+        String now_time = TimeUtil.getWeekStr(TimeUtil.getCurrentDate());
+        mMovementTotalKmTimeTv.setText(now_time);
+        mMovementTotalStepsTimeTv.setText(now_time);
+    }
+
+    private void doAttendHandle(int attention_type) {
+        HttpClient httpClient = new HttpClient.Builder(Constant.BASE_STEP_URL).isDebug(true).build(true);
+        httpClient.Api().send(new HttpClient.Builder()
+                .url("appUUSet")
+                .add("userids", userid)
+                .add("id",MyApplication.getInstance().mLoginUser.getUserId())
+                .add("type", attention_type)
+                .add("token", MyApplication.getInstance().mAccessToken)
+                .method(Method.POST)
+                .build(), new ResultSubscriber<>(new ResultListener<Object>() {
+            @Override
+            public void onResponse(Object o) {
+                LogUtil.prinlnLongMsg("appUUSet", o.toString());
+                finish();
+            }
+        }));
+    }
+
+
+    @Override
+    public boolean onCreateOptionsMenu(Menu menu) {
+        getMenuInflater().inflate(R.menu.menu_outoffice, menu);
+        return super.onCreateOptionsMenu(menu);
+    }
+
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        if (item.getItemId() == R.id.title) {
+            showPopupWindow();
+        }
+        return super.onOptionsItemSelected(item);
+    }
+    private PopupWindow setWindow = null;//
+    private void showPopupWindow() {
+        if (setWindow == null) initPopupWindow();
+        setWindow.showAtLocation(getWindow().getDecorView().
+                findViewById(android.R.id.content), Gravity.BOTTOM, 0, 0);
+        DisplayUtil.backgroundAlpha(this, 0.4f);
+    }
+
+    private void initPopupWindow() {
+        View viewContext = LayoutInflater.from(ct).inflate(R.layout.step_person_page_setting, null);
+        if (type == 1){  //自己
+            viewContext.findViewById(R.id.share_friend_tv).setVisibility(View.VISIBLE);
+            viewContext.findViewById(R.id.share_monments_tv).setVisibility(View.VISIBLE);
+        }else if (type == 2){ //关注的人
+            viewContext.findViewById(R.id.cancel_attention_tv).setVisibility(View.VISIBLE);
+        }else if (type == 3){  //普通好友
+            viewContext.findViewById(R.id.not_rankingwith_tv).setVisibility(View.VISIBLE);
+        }
+
+        viewContext.findViewById(R.id.share_friend_tv).setOnClickListener(this);
+        viewContext.findViewById(R.id.share_monments_tv).setOnClickListener(this);
+        viewContext.findViewById(R.id.cancel_attention_tv).setOnClickListener(this);
+        viewContext.findViewById(R.id.not_rankingwith_tv).setOnClickListener(this);
+
+        setWindow = new PopupWindow(viewContext,
+                LinearLayout.LayoutParams.MATCH_PARENT,
+                LinearLayout.LayoutParams.WRAP_CONTENT, true);
+        setWindow.setAnimationStyle(R.style.MenuAnimationFade);
+        setWindow.setBackgroundDrawable(mContext.getResources().getDrawable(R.drawable.bg_popuwin));
+        setWindow.setOnDismissListener(new PopupWindow.OnDismissListener() {
+            @Override
+            public void onDismiss() {
+                closePopupWindow();
+            }
+        });
+    }
+    private void closePopupWindow() {
+        if (setWindow != null)
+            setWindow.dismiss();
+        DisplayUtil.backgroundAlpha(this, 1f);
+    }
+    /**
+     * 简易计算公里数,假设一步大约有0.7米
+     *
+     * @param steps 用户当前步数
+     * @return
+     */
+    private String countTotalKM(int steps) {
+        DecimalFormat df = new DecimalFormat("#.##");
+        double totalMeters = steps * 0.7;
+        //保留两位有效数字
+        return df.format(totalMeters / 1000);
+    }
+
+    @Override
+    public void onClick(View v) {
+        if (v.getId() == R.id.btn_attention){
+            doAttendHandle(1);
+        }else if (v.getId() == R.id.cancel_attention_tv){
+            doAttendHandle(0);
+        }else if (v.getId() == R.id.share_friend_tv){
+            ToastMessage("share_friend_tv");
+        }else if (v.getId() == R.id.share_monments_tv){
+            ToastMessage("share_monments_tv");
+        }else if (v.getId() == R.id.not_rankingwith_tv){
+            ToastMessage("not_rankingwith_tv");
+        }
+
+    }
+}

+ 202 - 0
app_modular/appme/src/main/java/com/uas/appme/pedometer/view/UURanking.java

@@ -0,0 +1,202 @@
+package com.uas.appme.pedometer.view;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.view.View;
+import android.widget.AdapterView;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+import android.widget.TextView;
+
+import com.alibaba.fastjson.JSON;
+import com.common.LogUtil;
+import com.core.app.MyApplication;
+import com.core.base.BaseActivity;
+import com.core.utils.CommonUtil;
+import com.core.utils.helper.AvatarHelper;
+import com.core.widget.MyListView;
+import com.me.network.app.http.HttpClient;
+import com.me.network.app.http.Method;
+import com.me.network.app.http.rx.ResultListener;
+import com.me.network.app.http.rx.ResultSubscriber;
+import com.uas.appme.R;
+import com.uas.appme.pedometer.adapter.UUAttentionAdapter;
+import com.uas.appme.pedometer.adapter.UURankingAdapter;
+import com.uas.appme.pedometer.bean.StepEntity;
+import com.uas.appme.pedometer.bean.StepsRankingBean;
+import com.uas.appme.pedometer.constant.Constant;
+import com.uas.appme.pedometer.db.StepDataDao;
+import com.uas.appme.pedometer.utils.TimeUtil;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import de.hdodenhof.circleimageview.CircleImageView;
+
+/**
+ * Created by FANGlh on 2017/9/19.
+ * function:
+ */
+
+public class UURanking extends BaseActivity implements View.OnClickListener {
+    private CircleImageView mPhotoImg;
+    private TextView mNameTv;
+    private TextView mRankingTv;
+    private TextView mStepsTv;
+    private TextView mPriseTv;
+    private ImageView mPriseIm;
+    private LinearLayout mAttentionLl;
+    private MyListView mAttentionPtlv;
+    private MyListView mAllPtlv;
+    private TextView mInviteFriendsTv;
+    private String curSelDate;
+    private String myem_name;
+    private List<StepEntity> stepEntityList;
+    private UURankingAdapter mRankAdapter;
+    private UUAttentionAdapter mAttenAdapter;
+    private ImageView mHeaderImg;
+    private StepsRankingBean mStepsRankingBean;
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.uu_ranking_activity);
+        initView();
+        initData();
+        initEvents();
+    }
+
+
+    private void initView() {
+        mHeaderImg = (ImageView) findViewById(R.id.header_background_im);
+        mPhotoImg = (CircleImageView) findViewById(R.id.photo_img);
+        mNameTv = (TextView) findViewById(R.id.name_tv);
+        mRankingTv = (TextView) findViewById(R.id.ranking_tv);
+        mStepsTv = (TextView) findViewById(R.id.steps_tv);
+        mPriseTv = (TextView) findViewById(R.id.prise_tv);
+        mPriseIm = (ImageView) findViewById(R.id.prise_im);
+        mAttentionLl = (LinearLayout) findViewById(R.id.attention_ll);
+        mAttentionPtlv = (MyListView) findViewById(R.id.attention_ptlv);
+        mAllPtlv = (MyListView) findViewById(R.id.all_ptlv);
+        mInviteFriendsTv = (TextView) findViewById(R.id.invite_friends_tv);
+        curSelDate = TimeUtil.getCurrentDate();
+        stepEntityList = new ArrayList<>();
+        mRankAdapter = new UURankingAdapter(this);
+        mAttenAdapter = new UUAttentionAdapter(this);
+        findViewById(R.id.my_info_rl).setOnClickListener(this);
+
+        mHeaderImg.requestFocus();
+        mStepsRankingBean = new StepsRankingBean();
+
+        myem_name = CommonUtil.getSharedPreferences(MyApplication.getInstance(), "erp_emname");
+        mNameTv.setText(myem_name+"");
+        String loginUserId = MyApplication.getInstance().mLoginUser.getUserId();
+        AvatarHelper.getInstance().display(loginUserId, mPhotoImg, true, false);
+        StepDataDao stepDataDao = new StepDataDao(this);
+        StepEntity stepEntity = stepDataDao.getCurDataByDate(curSelDate);
+        if (stepEntity != null) {
+            int steps = Integer.parseInt(stepEntity.getSteps());
+            //获取全局的步数
+            mStepsTv.setText(String.valueOf(steps));
+        } else {
+            //获取全局的步数
+            mStepsTv.setText("0");
+        }
+
+    }
+
+    private void initData() {
+        if (!CommonUtil.isNetWorkConnected(this)) {
+            ToastMessage(getString(R.string.common_notlinknet));
+            return;
+        }
+
+        progressDialog.show();
+        //获取所有人的当天步数数据
+        HttpClient httpClient = new HttpClient.Builder(Constant.BASE_STEP_URL).build();
+        httpClient.Api().send(new HttpClient.Builder()
+                .url("appStepsrank")
+                .add("userid",MyApplication.getInstance().mLoginUser.getUserId())
+                .add("token",MyApplication.getInstance().mAccessToken)
+                .method(Method.GET)
+                .build(),new ResultSubscriber<>(new ResultListener<Object>() {
+            @Override
+            public void onResponse(Object o) {
+                LogUtil.prinlnLongMsg("appStepsrank", o.toString()+"");
+                try {
+                    mStepsRankingBean = JSON.parseObject(o.toString(),StepsRankingBean.class);
+                    mRankAdapter.setModel(mStepsRankingBean);
+                    mAllPtlv.setAdapter(mRankAdapter);
+                    mRankAdapter.notifyDataSetChanged();
+
+                    mAttenAdapter.setModel(mStepsRankingBean);
+                    mAttentionPtlv.setAdapter(mAttenAdapter);
+                    mAttenAdapter.notifyDataSetChanged();
+                    if (mStepsRankingBean.getAttrank().size()>1)
+                        mAttentionLl.setVisibility(View.VISIBLE);
+                    progressDialog.dismiss();
+                    LogUtil.prinlnLongMsg("mStepsRankingBean", JSON.toJSONString(mStepsRankingBean)+"");
+                }catch (Exception e){
+                    e.printStackTrace();
+                }
+            }
+        }));
+
+    }
+
+    private void initEvents() {
+        mAttentionPtlv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
+            @Override
+            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
+                inTentToPersonal(2,position);
+            }
+        });
+        mAllPtlv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
+            @Override
+            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
+                inTentToPersonal(3,position);
+            }
+        });
+    }
+
+    private void inTentToPersonal(int type, int position) {
+        Intent intent = new Intent(this,PersonalPageActivity.class);
+        String title = "";
+        String userid = "";
+        String em_name = "";
+
+        switch (type){
+            case 1:
+                title = "我";
+                userid = MyApplication.getInstance().mLoginUser.getUserId();
+                em_name = CommonUtil.getSharedPreferences(MyApplication.getInstance(), "erp_emname");
+                break;
+            case 2:
+                title = mStepsRankingBean.getAttrank().get(position).getAs_username();
+                userid = mStepsRankingBean.getAttrank().get(position).getAs_userid();
+                em_name = mStepsRankingBean.getAttrank().get(position).getAs_username();
+                break;
+            case 3:
+                title = mStepsRankingBean.getToalrank().get(position).getAs_username();
+                userid = mStepsRankingBean.getToalrank().get(position).getAs_userid();
+                em_name = mStepsRankingBean.getToalrank().get(position).getAs_username();
+                break;
+        }
+        if (MyApplication.getInstance().mLoginUser.getUserId().equals(userid)) {
+            type = 1;
+            title = "我";
+        }
+        intent.putExtra("type",type);
+        intent.putExtra("title",title+"的主页");
+        intent.putExtra("userid",userid);
+        intent.putExtra("em_name",em_name);
+        startActivity(intent);
+    }
+
+    @Override
+    public void onClick(View v) {
+        if (v.getId() == R.id.my_info_rl){
+            inTentToPersonal(1,0);
+        }
+    }
+}

BIN
app_modular/appme/src/main/res/drawable-xxhdpi/rankb.jpg


+ 79 - 0
app_modular/appme/src/main/res/layout/item_uuattention.xml

@@ -0,0 +1,79 @@
+<?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:background="@color/bg_main"
+    >
+    <RelativeLayout
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginLeft="20dp"
+        android:layout_marginRight="10dp"
+        >
+
+        <de.hdodenhof.circleimageview.CircleImageView
+            android:id="@+id/photo_img"
+            android:layout_width="45dp"
+            android:layout_height="45dp"
+            android:contentDescription="@string/app_name"
+            android:layout_marginTop="5dp"
+            android:layout_marginBottom="5dp"
+            android:src="@drawable/common_header_boy"
+            android:layout_marginLeft="10dp"/>
+
+        <TextView
+            android:id="@+id/name_tv"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginLeft="8dp"
+            android:layout_toRightOf="@+id/photo_img"
+            android:textColor="@color/black"
+            android:textSize="@dimen/text_hine"
+            android:layout_marginTop="10dp"
+
+            />
+        <TextView
+            android:id="@+id/ranking_tv"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginLeft="8dp"
+            android:layout_toRightOf="@+id/photo_img"
+            android:layout_below="@id/name_tv"
+            android:textColor="@color/gray"
+            android:textSize="@dimen/text_hine"
+            android:layout_marginTop="4dp"
+            />
+
+        <TextView
+            android:id="@+id/steps_tv"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="20dp"
+            android:layout_marginBottom="0dp"
+            android:textSize="@dimen/BigTextSize"
+            android:textColor="@color/green"
+            android:layout_toLeftOf="@+id/prise_tv"
+            android:layout_marginRight="20dp"
+            />
+
+        <TextView
+            android:id="@+id/prise_tv"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_alignParentRight="true"
+            android:layout_marginTop="5dp"
+            android:layout_marginBottom="0dp"
+            android:textSize="@dimen/text_hine"
+            android:textColor="@color/text_hine"
+            android:layout_marginRight="5dp"/>
+        <ImageView
+            android:id="@+id/prise_im"
+            android:layout_width="25dp"
+            android:layout_height="25dp"
+            android:src="@drawable/uuu"
+            android:layout_alignParentRight="true"
+            android:layout_below="@+id/prise_tv"
+            android:layout_marginTop="5dp"
+            android:visibility="invisible"/>
+    </RelativeLayout>
+</LinearLayout>

+ 81 - 0
app_modular/appme/src/main/res/layout/item_uuranking.xml

@@ -0,0 +1,81 @@
+<?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/bg_main">
+
+    <TextView
+        android:id="@+id/ranking_tv"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:textColor="@color/black"
+        android:textSize="@dimen/text_main"
+        android:text="1"
+        android:layout_marginTop="20dp"
+        android:layout_alignParentLeft="true"
+        android:layout_marginLeft="10dp"
+        />
+
+    <RelativeLayout
+        android:layout_toRightOf="@+id/ranking_tv"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginRight="10dp"
+        android:layout_marginLeft="10dp"
+        >
+        <de.hdodenhof.circleimageview.CircleImageView
+            android:id="@+id/photo_img"
+            android:layout_width="45dp"
+            android:layout_height="45dp"
+            android:contentDescription="@string/app_name"
+            android:layout_marginTop="5dp"
+            android:layout_marginBottom="5dp"
+            android:src="@drawable/common_header_boy"/>
+
+        <TextView
+            android:id="@+id/name_tv"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginLeft="8dp"
+            android:layout_toRightOf="@+id/photo_img"
+            android:textColor="@color/black"
+            android:textSize="@dimen/text_hine"
+            android:text="张三"
+            android:layout_marginTop="20dp"
+            />
+
+
+        <TextView
+            android:id="@+id/steps_tv"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:textSize="@dimen/BigTextSize"
+            android:text="9999"
+            android:textColor="@color/green"
+            android:layout_marginRight="15dp"
+            android:layout_below="@+id/prise_tv"
+            android:layout_toLeftOf="@+id/prise_im"
+            android:layout_toStartOf="@+id/prise_im"
+            android:layout_marginEnd="15dp" />
+
+        <TextView
+            android:id="@+id/prise_tv"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_alignParentRight="true"
+            android:layout_marginTop="5dp"
+            android:layout_marginBottom="0dp"
+            android:textSize="@dimen/text_hine"
+            android:textColor="@color/text_hine"
+            android:layout_marginRight="5dp"/>
+        <ImageView
+            android:id="@+id/prise_im"
+            android:layout_width="25dp"
+            android:layout_height="25dp"
+            android:src="@drawable/uuu"
+            android:layout_alignParentRight="true"
+            android:layout_below="@+id/prise_tv"
+            android:layout_marginTop="5dp"
+            android:visibility="invisible"/>
+    </RelativeLayout>
+</RelativeLayout>

+ 170 - 0
app_modular/appme/src/main/res/layout/personal_page_activity.xml

@@ -0,0 +1,170 @@
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+
+
+    <LinearLayout
+        android:layout_marginLeft="20dp"
+        android:layout_marginRight="20dp"
+        android:orientation="vertical"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content">
+
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:textSize="15sp"
+            android:layout_marginTop="15dp"
+            android:layout_marginBottom="15dp"
+            android:textColor="@color/main_text_color"
+            android:text="@string/sports_recode"/>
+
+        <RelativeLayout
+            android:background="@drawable/ic_small_blue_rectangular"
+            android:layout_width="match_parent"
+            android:layout_height="100dp">
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:textColor="@color/white"
+                android:textSize="18sp"
+                android:layout_margin="10dp"
+                android:text="@string/sports_recode_distance"/>
+
+            <LinearLayout
+                android:layout_margin="10dp"
+                android:layout_alignParentRight="true"
+                android:layout_alignParentBottom="true"
+                android:orientation="vertical"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content">
+
+                <LinearLayout
+                    android:layout_gravity="end"
+                    android:orientation="horizontal"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content">
+
+                    <TextView
+                        android:id="@+id/movement_total_km_tv"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:textSize="30sp"
+                        android:layout_marginLeft="10dp"
+                        android:layout_marginRight="10dp"
+                        android:textColor="@color/white" />
+
+                    <TextView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:textSize="16sp"
+                        android:textColor="@color/white"
+                        android:text="@string/sports_kilometre"/>
+
+                </LinearLayout>
+
+                <LinearLayout
+                    android:layout_gravity="end"
+                    android:orientation="horizontal"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content">
+
+                    <TextView
+                        android:id="@+id/movement_total_km_time_tv"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_gravity="end"
+                        android:textSize="12sp"
+                        android:textColor="@color/white"
+                        android:layout_marginLeft="10dp"
+                        android:layout_marginRight="10dp" />
+
+
+                </LinearLayout>
+            </LinearLayout>
+        </RelativeLayout>
+
+        <RelativeLayout
+            android:layout_marginTop="10dp"
+            android:background="@drawable/ic_small_blue_rectangular"
+            android:layout_width="match_parent"
+            android:layout_height="100dp">
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:textColor="@color/white"
+                android:textSize="18sp"
+                android:layout_margin="10dp"
+                android:text="@string/sports_step_tody"/>
+
+            <LinearLayout
+                android:layout_margin="10dp"
+                android:layout_alignParentRight="true"
+                android:layout_alignParentBottom="true"
+                android:orientation="vertical"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content">
+
+                <LinearLayout
+                    android:layout_gravity="end"
+                    android:orientation="horizontal"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content">
+
+                    <TextView
+                        android:id="@+id/movement_total_steps_tv"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:textSize="30sp"
+                        android:layout_marginLeft="5dp"
+                        android:layout_marginRight="5dp"
+                        android:textColor="@color/white"/>
+
+                    <TextView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:textSize="16sp"
+                        android:textColor="@color/white"
+                        android:text="@string/sports_step"/>
+
+                </LinearLayout>
+
+                <LinearLayout
+                    android:layout_gravity="end"
+                    android:orientation="horizontal"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content">
+
+                    <TextView
+                        android:id="@+id/movement_total_steps_time_tv"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_gravity="end"
+                        android:textSize="12sp"
+                        android:textColor="@color/white"
+                        android:layout_marginLeft="5dp"
+                        android:layout_marginRight="5dp" />
+
+                </LinearLayout>
+            </LinearLayout>
+        </RelativeLayout>
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:visibility="visible">
+            <Button
+                android:id="@+id/btn_attention"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="10dp"
+                android:background="@drawable/bg_bule_btn"
+                android:padding="10dp"
+                android:text="关  注"
+                android:textColor="@color/white"
+                android:textSize="@dimen/text_main" />
+        </LinearLayout>
+    </LinearLayout>
+</LinearLayout>

+ 68 - 0
app_modular/appme/src/main/res/layout/step_person_page_setting.xml

@@ -0,0 +1,68 @@
+<?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="wrap_content"
+    android:background="@color/white"
+    android:orientation="vertical">
+
+    <TextView
+        android:id="@+id/cancel_attention_tv"
+        android:layout_width="match_parent"
+        android:layout_height="45dp"
+        android:background="@drawable/text_click_bg"
+        android:gravity="center"
+        android:text="取消关注"
+        android:textColor="@color/text_main"
+        android:textSize="15sp"
+        android:visibility="gone"/>
+
+    <TextView
+        android:id="@+id/not_rankingwith_tv"
+        android:layout_width="match_parent"
+        android:layout_height="45dp"
+        android:background="@drawable/text_click_bg"
+        android:gravity="center"
+        android:text="不与他(她)排行"
+        android:textColor="@color/text_main"
+        android:textSize="15sp"
+        android:visibility="gone"/>
+
+    <TextView
+        android:id="@+id/share_friend_tv"
+        android:layout_width="match_parent"
+        android:layout_height="45dp"
+        android:background="@drawable/text_click_bg"
+        android:gravity="center"
+        android:text="分享给朋友"
+        android:textColor="@color/text_main"
+        android:textSize="15sp"
+        android:visibility="gone"/>
+
+    <TextView
+        android:id="@+id/share_monments_tv"
+        android:layout_width="match_parent"
+        android:layout_height="45dp"
+        android:background="@drawable/text_click_bg"
+        android:gravity="center"
+        android:text="分享到工作圈"
+        android:textColor="@color/text_main"
+        android:textSize="15sp"
+        android:visibility="gone"/>
+    <View
+        android:layout_width="match_parent"
+        android:layout_height="4dp"
+        android:background="@color/black_gray"
+        android:visibility="gone"/>
+
+    <TextView
+        android:id="@+id/cancel_tv"
+        android:layout_width="match_parent"
+        android:layout_height="45dp"
+        android:background="@drawable/text_click_bg"
+        android:gravity="center"
+        android:text="@string/common_cancel"
+        android:textColor="@color/red"
+        android:textSize="15sp"
+        android:visibility="gone"/>
+
+</LinearLayout>

+ 156 - 0
app_modular/appme/src/main/res/layout/uu_ranking_activity.xml

@@ -0,0 +1,156 @@
+<?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">
+
+
+  <ScrollView
+      android:layout_width="match_parent"
+      android:layout_height="match_parent"
+      android:fillViewport="true"
+      android:scrollbars="none"
+      android:visibility="visible">
+      <LinearLayout
+          android:layout_width="match_parent"
+          android:layout_height="match_parent"
+          android:orientation="vertical">
+          <ImageView
+              android:id="@+id/header_background_im"
+              android:focusableInTouchMode="true"
+              android:layout_width="match_parent"
+              android:layout_height="200dp"
+              android:background="@drawable/rankb"/>
+
+
+          <RelativeLayout
+              android:id="@+id/my_info_rl"
+              android:layout_width="wrap_content"
+              android:layout_height="wrap_content"
+              android:padding="5dp"
+              android:background="@color/bg_main"
+              >
+
+              <de.hdodenhof.circleimageview.CircleImageView
+                  android:id="@+id/photo_img"
+                  android:layout_width="45dp"
+                  android:layout_height="45dp"
+                  android:contentDescription="@string/app_name"
+                  android:layout_marginTop="5dp"
+                  android:layout_marginBottom="5dp"
+                  android:src="@drawable/common_header_boy"
+                  android:layout_marginLeft="25dp"
+                  />
+
+              <TextView
+                  android:id="@+id/name_tv"
+                  android:layout_width="wrap_content"
+                  android:layout_height="wrap_content"
+                  android:layout_marginLeft="8dp"
+                  android:layout_toRightOf="@+id/photo_img"
+                  android:textColor="@color/black"
+                  android:textSize="@dimen/text_hine"
+                  android:layout_marginTop="10dp"
+                  android:text="张三"
+
+                  />
+              <TextView
+                  android:id="@+id/ranking_tv"
+                  android:layout_width="wrap_content"
+                  android:layout_height="wrap_content"
+                  android:layout_marginLeft="8dp"
+                  android:layout_toRightOf="@+id/photo_img"
+                  android:layout_below="@id/name_tv"
+                  android:textColor="@color/gray"
+                  android:textSize="@dimen/text_hine"
+                  android:layout_marginTop="4dp"
+                  android:text="第一名"/>
+
+              <TextView
+                  android:id="@+id/steps_tv"
+                  android:layout_width="wrap_content"
+                  android:layout_height="wrap_content"
+                  android:layout_marginTop="20dp"
+                  android:layout_marginBottom="0dp"
+                  android:textSize="@dimen/BigTextSize"
+                  android:text="9999"
+                  android:textColor="@color/green"
+                  android:layout_toLeftOf="@+id/prise_tv"
+                  android:layout_marginRight="20dp"
+                  />
+
+              <TextView
+                  android:id="@+id/prise_tv"
+                  android:layout_width="wrap_content"
+                  android:layout_height="wrap_content"
+                  android:layout_alignParentRight="true"
+                  android:layout_marginTop="5dp"
+                  android:layout_marginBottom="0dp"
+                  android:textSize="@dimen/text_hine"
+                  android:text="1"
+                  android:textColor="@color/text_hine"
+                  android:layout_marginRight="15dp"
+                  android:visibility="invisible"
+                  />
+              <ImageView
+                  android:id="@+id/prise_im"
+                  android:layout_width="20dp"
+                  android:layout_height="20dp"
+                  android:src="@drawable/uuu"
+                  android:layout_alignParentRight="true"
+                  android:layout_below="@+id/prise_tv"
+                  android:layout_marginTop="5dp"
+                  android:layout_marginRight="10dp"
+                  android:visibility="invisible"/>
+          </RelativeLayout>
+          <View
+              android:id="@+id/hide_above_af"
+              android:layout_width="match_parent"
+              android:layout_height="10dp"
+              android:background="@color/black_gray"
+              android:layout_marginTop="1dp"
+              android:visibility="visible"/>
+
+       <LinearLayout
+            android:id="@+id/attention_ll"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:orientation="vertical"
+           android:visibility="gone">
+            <com.core.widget.MyListView
+                android:id="@+id/attention_ptlv"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:background="@color/item_line"
+                android:dividerHeight="2px"
+                android:scrollbars="none" />
+            <View
+                android:layout_width="match_parent"
+                android:layout_height="10dp"
+                android:background="@color/black_gray"
+                android:layout_marginTop="1dp"
+                android:visibility="visible"/>
+        </LinearLayout>
+
+              <com.core.widget.MyListView
+                  android:id="@+id/all_ptlv"
+                  android:layout_width="match_parent"
+                  android:layout_height="wrap_content"
+                  android:background="@color/item_line"
+                  android:dividerHeight="2px"
+                  />
+              <View
+                  android:layout_width="match_parent"
+                  android:layout_height="@dimen/line"
+                  android:background="@color/item_line"/>
+          <TextView
+              android:id="@+id/invite_friends_tv"
+              android:textColor="@color/green"
+              android:layout_width="match_parent"
+              android:layout_height="60dp"
+              android:text="邀请好友开启UU运动"
+              android:gravity="center"
+              />
+      </LinearLayout>
+  </ScrollView>
+</LinearLayout>

+ 21 - 24
app_modular/appmessages/src/main/java/com/modular/appmessages/activity/MessageWebActivity.java

@@ -18,8 +18,6 @@ import com.common.system.SystemUtil;
 import com.core.base.BaseActivity;
 import com.core.utils.CommonUtil;
 import com.core.utils.IntentUtils;
-import com.handmark.pulltorefresh.library.PullToRefreshBase;
-import com.handmark.pulltorefresh.library.PullToRefreshWebView;
 import com.modular.appmessages.R;
 import com.umeng.socialize.ShareAction;
 import com.umeng.socialize.bean.SHARE_MEDIA;
@@ -28,7 +26,7 @@ import com.umeng.socialize.media.UMImage;
 public class MessageWebActivity extends BaseActivity {
 
 
-    private PullToRefreshWebView webViewRefresh;
+    private WebView webViewRefresh;
     private ProgressBar progressBar;
     private String url;
 
@@ -36,7 +34,7 @@ public class MessageWebActivity extends BaseActivity {
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_message_web);
-        webViewRefresh = (PullToRefreshWebView) findViewById(R.id.webViewRefresh);
+        webViewRefresh = (WebView) findViewById(R.id.webView);
         progressBar = (ProgressBar) findViewById(R.id.progressBar);
         initView();
         initData();
@@ -85,17 +83,17 @@ public class MessageWebActivity extends BaseActivity {
     }
 
     private void initView() {
-        webViewRefresh.getRefreshableView().getSettings().setJavaScriptEnabled(true);
-        webViewRefresh.getRefreshableView().getSettings().setSupportZoom(true);
-        webViewRefresh.getRefreshableView().getSettings().setBuiltInZoomControls(true);
-        webViewRefresh.getRefreshableView().getSettings().setUseWideViewPort(true);
-        webViewRefresh.getRefreshableView().getSettings().setDomStorageEnabled(true);
-        webViewRefresh.getRefreshableView().getSettings().setLoadWithOverviewMode(true);
-        webViewRefresh.getRefreshableView().getSettings().setDefaultTextEncodingName("utf-8");
-        webViewRefresh.getRefreshableView().getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
-        webViewRefresh.getRefreshableView().clearCache(true);
-        webViewRefresh.getRefreshableView().clearHistory();
-        webViewRefresh.getRefreshableView().setWebViewClient(new WebViewClient() {
+        webViewRefresh.getSettings().setJavaScriptEnabled(true);
+        webViewRefresh.getSettings().setSupportZoom(true);
+        webViewRefresh.getSettings().setBuiltInZoomControls(true);
+        webViewRefresh.getSettings().setUseWideViewPort(true);
+        webViewRefresh.getSettings().setDomStorageEnabled(true);
+        webViewRefresh.getSettings().setLoadWithOverviewMode(true);
+        webViewRefresh.getSettings().setDefaultTextEncodingName("utf-8");
+        webViewRefresh.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
+        webViewRefresh.clearCache(true);
+        webViewRefresh.clearHistory();
+        webViewRefresh.setWebViewClient(new WebViewClient() {
             public boolean shouldOverrideUrlLoading(WebView view, String url) {
                 view.loadUrl(url);
                 return true;
@@ -120,24 +118,23 @@ public class MessageWebActivity extends BaseActivity {
                 handler.proceed();
             }
         });
-        webViewRefresh.getRefreshableView().setWebChromeClient(new WebChromeClient() {
+        webViewRefresh.setWebChromeClient(new WebChromeClient() {
             @Override
             public void onProgressChanged(WebView view, int newProgress) {
                 progressBar.setProgress(newProgress);
                 if (newProgress == 100) {
                     progressBar.setProgress(newProgress);
                     progressBar.setVisibility(View.GONE);
-                    webViewRefresh.onRefreshComplete();
                 }
                 super.onProgressChanged(view, newProgress);
             }
         });
-        webViewRefresh.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener<WebView>() {
-            @Override
-            public void onRefresh(PullToRefreshBase<WebView> refreshView) {
-                loadData();
-            }
-        });
+//        webViewRefresh.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener<WebView>() {
+//            @Override
+//            public void onRefresh(PullToRefreshBase<WebView> refreshView) {
+//                loadData();
+//            }
+//        });
     }
 
     private void initData() {
@@ -154,7 +151,7 @@ public class MessageWebActivity extends BaseActivity {
 
     private void loadData() {
         if (url != null) {
-            webViewRefresh.getRefreshableView().loadUrl(url);
+            webViewRefresh.loadUrl(url);
         }
 
     }

+ 3 - 2
app_modular/appmessages/src/main/java/com/modular/appmessages/activity/UUHelperActivity.java

@@ -31,7 +31,6 @@ public class UUHelperActivity extends BaseActivity implements View.OnClickListen
 
     private RecyclerView contentRV;
     private UUHelperAdapter mAdapter;
-
     private BroadcastReceiver updateReceiver = new BroadcastReceiver() {
         @Override
         public void onReceive(Context context, Intent intent) {
@@ -107,7 +106,7 @@ public class UUHelperActivity extends BaseActivity implements View.OnClickListen
             IntentUtils.linkCommonWeb(ct, url, "关于优软", null, null);
         } else if (id == R.id.experienceTV) {
             url = "http://113.105.74.140:8080/new/";
-            IntentUtils.linkCommonWeb(ct, url, "功能介绍", null, null);
+            IntentUtils.linkCommonWeb(ct, url, "功能介绍", null, null);
         } else if (id == R.id.serviceTV) {
             CommonUtil.setSharedPreferences(this, Constants.SET_CALL, true);
             Intent intent = new Intent("com.modular.main.FeedbackActivity");
@@ -115,6 +114,8 @@ public class UUHelperActivity extends BaseActivity implements View.OnClickListen
             intent.putExtra(AppConstant.EXTRA_URL, mConfig.help_url);
             intent.putExtra(AppConstant.EXTRA_TITLE, "用户反馈");
             startActivity(intent);
+        } else if (R.id.inputImg == id) {
+
         }
     }
 

+ 1 - 1
app_modular/appmessages/src/main/java/com/modular/appmessages/adapter/UUHelperAdapter.java

@@ -94,7 +94,7 @@ public class UUHelperAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolde
         holder.timeTV.setText(model.getDate());
         holder.titleTV.setText(model.getTitle());
         holder.contentTV.setText(model.getContent());
-        ImageLoader.getInstance().displayImage(model.getIconUrl(), holder.imageIV);
+        ImageLoader.getInstance().displayImage(model.getImageUrl(), holder.imageIV);
         holder.itemView.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {

+ 1 - 1
app_modular/appmessages/src/main/java/com/modular/appmessages/presenter/MessagePresenter.java

@@ -692,7 +692,7 @@ public class MessagePresenter implements OnHttpResultListener {
             if (lastModel != null) {
                 friend.set_id(lastModel.getId());
                 friend.setTimeSend((int) (lastModel.getTimeSend() / 1000));
-                friend.setContent(lastModel.getContent());
+                friend.setContent(lastModel.getTitle());
             } else {
                 friend.setContent("");
             }

+ 34 - 7
app_modular/appmessages/src/main/res/layout/activity_message_web.xml

@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<RelativeLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
@@ -17,12 +16,40 @@
         android:indeterminateDuration="500"
         android:indeterminateOnly="false"
         android:max="100"
-        android:progressDrawable="@drawable/webview_progress_bar"/>
+        android:progressDrawable="@drawable/webview_progress_bar" />
 
-    <com.handmark.pulltorefresh.library.PullToRefreshWebView
-        android:id="@+id/webViewRefresh"
+    <FrameLayout
         android:layout_width="match_parent"
         android:layout_height="match_parent"
-        android:layout_below="@id/progressBar"
-        android:background="@color/linen"/>
+        android:layout_below="@id/progressBar">
+
+        <RelativeLayout
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:background="#38373e">
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_centerHorizontal="true"
+                android:layout_marginTop="10dp"
+                android:text="此网页由www.ubtob.com 提供"
+                android:textColor="@color/ivory"
+                android:textSize="@dimen/text_main" />
+        </RelativeLayout>
+
+        <com.module.recyclerlibrary.ui.refresh.webempty.EmptyRefreshLayout
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            app:fectiveScroll="0dp">
+
+            <WebView
+                android:id="@+id/webView"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent" />
+        </com.module.recyclerlibrary.ui.refresh.webempty.EmptyRefreshLayout>
+
+    </FrameLayout>
+
+
 </RelativeLayout>

+ 2 - 1
app_modular/appmessages/src/main/res/layout/activity_uuhelper.xml

@@ -16,6 +16,7 @@
         android:padding="10dp">
 
         <ImageView
+            android:id="@+id/inputImg"
             android:layout_width="0dp"
             android:layout_height="wrap_content"
             android:layout_weight="2"
@@ -41,7 +42,7 @@
             style="@style/bottomTextStyle"
             android:layout_weight="5"
             android:background="@color/white"
-            android:text="功能介绍"
+            android:text="功能介绍"
             android:textColor="@drawable/bg_bule_yellow_text" />
 
         <View

+ 1 - 1
app_modular/appmessages/src/main/res/layout/activity_uuhelper_details.xml

@@ -51,7 +51,7 @@
         android:layout_marginLeft="10dp"
         android:layout_toRightOf="@id/tagTV"
         android:gravity="center_vertical"
-        android:text="UU 助手,您身边的移动办公小帮手。在这里,您可以查看CRM、OA等消息通知,还可以了解UU互联的最新动态哦,我们还提供人工智能客户,UU助手随时等候主任的吩咐哦!"
+        android:text="UU 助手,您身边的移动办公小帮手。在这里,您可以查看CRM、OA等消息通知,还可以了解UU互联的最新动态哦,我们还提供人工智能客户,UU助手随时等候主任的吩咐哦!"
         android:textColor="@color/text_main"
         android:textSize="16sp" />
 

+ 9 - 9
app_modular/appmessages/src/main/res/layout/item_uuhelper_single.xml

@@ -2,26 +2,26 @@
 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
-    android:layout_marginLeft="20dp"
-    android:layout_marginRight="20dp">
+    android:layout_marginLeft="25dp"
+    android:layout_marginRight="25dp">
 
     <TextView
         android:id="@+id/timeTV"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_centerHorizontal="true"
-        android:layout_marginBottom="8dp"
-        android:layout_marginTop="10dp"
+        android:layout_marginBottom="10dp"
+        android:layout_marginTop="15dp"
         android:background="@drawable/text_hint_bg"
         android:text="2017-11-11"
         android:textColor="@color/white"
-        android:textSize="@dimen/text_main" />
+        android:textSize="@dimen/text_min" />
 
     <RelativeLayout
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:layout_below="@id/timeTV"
-        android:background="@color/white"
+        android:background="@drawable/rl_circular_bg"
         android:paddingLeft="10dp"
         android:paddingRight="10dp">
 
@@ -34,7 +34,7 @@
             android:paddingBottom="5dp"
             android:paddingTop="5dp"
             android:text="titleTV"
-            android:textColor="@color/text_main"
+            android:textColor="@color/black"
             android:textSize="@dimen/text_main" />
 
         <ImageView
@@ -69,13 +69,13 @@
         <TextView
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
+            android:layout_below="@+id/line"
+            android:drawableRight="@drawable/oa_next"
             android:ellipsize="end"
             android:lines="1"
             android:paddingBottom="8dp"
             android:paddingTop="8dp"
             android:text="阅读全文"
-            android:layout_below="@+id/line"
-            android:drawableRight="@drawable/oa_next"
             android:textColor="@color/text_main"
             android:textSize="@dimen/text_main" />
     </RelativeLayout>

+ 6 - 6
app_modular/appworks/src/main/java/com/uas/appworks/CRM/erp/activity/BusinessStateActivity.java

@@ -479,12 +479,12 @@ public class BusinessStateActivity extends BaseActivity implements View.OnClickL
                     int countb = JSONUtil.getInt(object, "countb");
                     int countc = JSONUtil.getInt(object, "countc");
                     int countd = ListUtils.getSize(arrayd);
-                    if (page > 1) {
-                        counta += StringUtil.getFirstInt(StringUtil.getTextRexHttp(tv_unmanger), 0);
-                        countb += StringUtil.getFirstInt(StringUtil.getTextRexHttp(tv_manged), 0);
-                        countc += StringUtil.getFirstInt(StringUtil.getTextRexHttp(tv_timeout), 0);
-                        countd += StringUtil.getFirstInt(StringUtil.getTextRexHttp(tv_transtered), 0);
-                    }
+//                    if (page > 1) {
+//                        counta += StringUtil.getFirstInt(StringUtil.getTextRexHttp(tv_unmanger), 0);
+//                        countb += StringUtil.getFirstInt(StringUtil.getTextRexHttp(tv_manged), 0);
+//                        countc += StringUtil.getFirstInt(StringUtil.getTextRexHttp(tv_timeout), 0);
+//                        countd += StringUtil.getFirstInt(StringUtil.getTextRexHttp(tv_transtered), 0);
+//                    }
                     CommonUtil.textSpanForStyle(tv_unmanger, counta + getString(R.string.Unscheduled_schedule), String.valueOf(counta), ct.getResources().getColor(R.color.yellow_home));
                     CommonUtil.textSpanForStyle(tv_manged, countb + getString(R.string.Has_been_scheduled), String.valueOf(countb), ct.getResources().getColor(R.color.yellow_home));
                     CommonUtil.textSpanForStyle(tv_timeout, countc + getString(R.string.Will_time_out), String.valueOf(countc), ct.getResources().getColor(R.color.yellow_home));

+ 22 - 5
app_modular/appworks/src/main/java/com/uas/appworks/CRM/erp/activity/TaskAddErpActivity.java

@@ -54,6 +54,8 @@ public class TaskAddErpActivity extends BaseActivity implements View.OnClickList
     private EditText et_task_detail;
     private TagGroup et_task_people;
     private ImageView iv_find;
+    private TextView tv_title;
+    private TextView detailsTV;
     private TextView et_startime;
     private TextView et_endtime;
     private ImageView voice_search_iv;
@@ -62,7 +64,7 @@ public class TaskAddErpActivity extends BaseActivity implements View.OnClickList
     private int save = 0;
     private String selectCode = null;
     private int type = 0;
-
+    private boolean timeSelected = false;//是否已经进行选择时间操作
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
@@ -74,6 +76,8 @@ public class TaskAddErpActivity extends BaseActivity implements View.OnClickList
     private void initIDS() {
 
         voice_search_iv = (ImageView) findViewById(R.id.voice_search_iv);
+        tv_title = (TextView) findViewById(R.id.tv_title);
+        detailsTV = (TextView) findViewById(R.id.detailsTV);
         et_endtime = (TextView) findViewById(R.id.et_endtime);
         et_title = (EditText) findViewById(R.id.et_title);
         et_task_detail = (EditText) findViewById(R.id.et_task_detail);
@@ -97,6 +101,8 @@ public class TaskAddErpActivity extends BaseActivity implements View.OnClickList
             switch (type) {
                 case 1:
                     title = R.string.oacreat_calender;
+                    tv_title.setText("日程标题");
+                    detailsTV.setText("任务详情");
                     break;
                 case 2:
                     title = R.string.create_meet_task;
@@ -130,10 +136,16 @@ public class TaskAddErpActivity extends BaseActivity implements View.OnClickList
 
     @Override
     public void onClick(View v) {
+        String sT = et_startime.getText().toString();
+        String eT = et_endtime.getText().toString();
         if (v.getId() == R.id.et_startime){
+            if (timeSelected) {
+               sT = sT +":00"; //这里传的跳时间选择界面时需要带上秒,统一考勤界面的时间选择逻辑
+               eT = eT +":00";
+            }
             startActivityForResult(new Intent(mContext, SelectCalendarActivity.class)
-                            .putExtra("startDate", et_startime.getText().toString())
-                            .putExtra("endDate", et_endtime.getText().toString())
+                            .putExtra("startDate", sT)
+                            .putExtra("endDate", eT)
                             .putExtra("hasMenu", false)
                             .putExtra("caller", "Workovertime")
                     , 0x30);
@@ -146,9 +158,13 @@ public class TaskAddErpActivity extends BaseActivity implements View.OnClickList
             intent.putExtra(OAConfig.MODEL_DATA, bean);
             startActivityForResult(intent, 0x01);
         }else if (v.getId() == R.id.et_endtime){
+            if (timeSelected) {
+                sT = sT +":00";
+                eT = eT +":00";
+            }
             startActivityForResult(new Intent(mContext, SelectCalendarActivity.class)
-                            .putExtra("startDate", et_startime.getText().toString())
-                            .putExtra("endDate", et_endtime.getText().toString())
+                            .putExtra("startDate", sT)
+                            .putExtra("endDate", eT)
                             .putExtra("hasMenu", false)
                             .putExtra("caller", "Workovertime")
                     , 0x30);
@@ -211,6 +227,7 @@ public class TaskAddErpActivity extends BaseActivity implements View.OnClickList
         }
 
         if (requestCode == 0x30 && resultCode == 0x11) {
+            timeSelected = true;
             String startDate = data.getStringExtra("startDate");
             String endDate = data.getStringExtra("endDate");
 //            startDate=startDate+":00";

+ 20 - 3
app_modular/appworks/src/main/java/com/uas/appworks/CRM/erp/adapter/SelectAimAdapter.java

@@ -90,9 +90,26 @@ public class SelectAimAdapter extends RecyclerView.Adapter<RecyclerView.ViewHold
     private void bindLoadView(LoadViewHolder holder, SelectAimModel model) throws Exception {
         holder.title_tv.setText(getNull(model.getName()));
         holder.sub_tv.setText(getNull(model.getAddress()));
-        holder.time_tv.setText(MyApplication.getInstance().getString(R.string.last_visit)+" " + getNull(model.getTime()));
-        holder.times_tv.setText(MyApplication.getInstance().getString(R.string.visit_num)+" "  + getNull(model.getTimes() + MyApplication.getInstance().getString(R.string.sign_Times)));
-        holder.distance_tv.setText(getKm(BaiduMapUtil.getInstence().getDistance(model.getLatLng())));
+
+        if (model.getLatLng()==null){
+            holder.distance_tv.setVisibility(View.GONE);
+        }else{
+            holder.distance_tv.setVisibility(View.VISIBLE);
+            holder.distance_tv.setText(getKm(BaiduMapUtil.getInstence().getDistance(model.getLatLng())));
+        }
+        if (model.getTimes()==-1){
+            holder.times_tv.setVisibility(View.GONE);
+        }else{
+            holder.times_tv.setVisibility(View.VISIBLE);
+            holder.times_tv.setText(MyApplication.getInstance().getString(R.string.visit_num)+" "  + getNull(model.getTimes() + MyApplication.getInstance().getString(R.string.sign_Times)));
+        }
+        if (StringUtil.isEmpty(model.getTime())){
+            holder.time_tv.setVisibility(View.GONE);
+        }else{
+            holder.time_tv.setVisibility(View.VISIBLE);
+            holder.time_tv.setText(MyApplication.getInstance().getString(R.string.last_visit)+" " + getNull(model.getTime()));
+        }
+
         holder.tag_tv.setVisibility(model.isFirst() ? View.VISIBLE : View.GONE);
         holder.tag_view.setVisibility(model.isFirst() ? View.VISIBLE : View.GONE);
     }

+ 8 - 7
app_modular/appworks/src/main/java/com/uas/appworks/CRM/erp/presenter/SelectAimPresenter.java

@@ -126,13 +126,13 @@ public class SelectAimPresenter implements OnHttpResultListener {
         param.put("condition", "1=1");
         param.put(isB2b ? "pageNumber" : "pageIndex", 1);
         param.put("pageSize", 1000);
-        String url =isB2b? ApiConfig.getInstance(ApiUtils.getApiModel()).getmApiBase().getOutAddress: "mobile/getOutAddressDate.action";
-        Request request=new Request.Bulider()
+        String url = isB2b ? ApiConfig.getInstance(ApiUtils.getApiModel()).getmApiBase().getOutAddress : "mobile/getOutAddressDate.action";
+        Request request = new Request.Bulider()
                 .setMode(Request.Mode.GET)
                 .setUrl(url)
                 .setWhat(LOAD)
                 .setParam(param).bulid();
-        OAHttpHelper.getInstance().requestHttp(request,this);
+        OAHttpHelper.getInstance().requestHttp(request, this);
 
     }
 
@@ -153,13 +153,13 @@ public class SelectAimPresenter implements OnHttpResultListener {
         //获取网络数据
         Map<String, Object> param = new HashMap<>();
         param.put("sellercode", CommonUtil.getSharedPreferences(MyApplication.getInstance(), "erp_username"));
-        String url ="mobile/crm/getCustomerbySeller.action";
-        Request request=new Request.Bulider()
+        String url = "mobile/crm/getCustomerbySeller.action";
+        Request request = new Request.Bulider()
                 .setMode(Request.Mode.GET)
                 .setUrl(url)
                 .setWhat(LOAD_CUSTOMER)
                 .setParam(param).bulid();
-        OAHttpHelper.getInstance().requestHttp(request,this);
+        OAHttpHelper.getInstance().requestHttp(request, this);
     }
 
     //下载附近数据
@@ -248,7 +248,7 @@ public class SelectAimPresenter implements OnHttpResultListener {
     }
 
     @Override
-    public void error(int what,  String message, Bundle bundle) {
+    public void error(int what, String message, Bundle bundle) {
         if (iSelectAim != null)
             iSelectAim.dimssLoading();
     }
@@ -321,6 +321,7 @@ public class SelectAimPresenter implements OnHttpResultListener {
                 // model.setTimes(object.getInteger("MD_VISITCOUNT"));
                 model.setName(object.getString("CU_NAME"));
                 model.setObject(JSON.toJSONString(object));
+                model.setTimes(-1);
                 //TODO id先不要
 //                model.seti(object.getInteger("MD_ID"));
                 model.setType(2);

+ 29 - 20
app_modular/appworks/src/main/java/com/uas/appworks/OA/erp/activity/AddMeetingActivity.java

@@ -85,6 +85,7 @@ public class AddMeetingActivity extends BaseActivity implements View.OnClickList
                     } else {
                         ToastUtil.showToast(ct, "获取id错误");
                     }
+                    submiting = false;
                     break;
                 case whatSignin:
                     JSONObject json = parseObject(message);
@@ -142,6 +143,7 @@ public class AddMeetingActivity extends BaseActivity implements View.OnClickList
                     ToastUtil.showToast(ct, message == null ? "" : StringUtil.getChinese(message));
                     break;
             }
+
         }
     };
 
@@ -199,7 +201,7 @@ public class AddMeetingActivity extends BaseActivity implements View.OnClickList
         end_tv = (TextView) findViewById(R.id.end_tv);
         users_tv = (TextView) findViewById(R.id.users_tv);
         location_et = (TextView) findViewById(R.id.location_et);
-        name_et= (EditText) findViewById(R.id.name_et);
+        name_et = (EditText) findViewById(R.id.name_et);
         about_et = (EditText) findViewById(R.id.about_et);
         tag_et = (TextView) findViewById(R.id.tag_et);
         user_tv = (TextView) findViewById(R.id.user_tv);
@@ -224,11 +226,11 @@ public class AddMeetingActivity extends BaseActivity implements View.OnClickList
     @Override
     public void onClick(View view) {
         Intent intent = null;
-        if (view.getId() == R.id.start_rl){
+        if (view.getId() == R.id.start_rl) {
             turn2SelectCalendar();
-        }else if (view.getId() ==  R.id.end_rl){
+        } else if (view.getId() == R.id.end_rl) {
             turn2SelectCalendar();
-        }else if (view.getId() == R.id.users_rl){
+        } else if (view.getId() == R.id.users_rl) {
             intent = new Intent("com.modular.main.SelectCollisionActivity");
             SelectCollisionTurnBean bean = new SelectCollisionTurnBean()
                     .setSureText(getString(R.string.common_sure))
@@ -237,18 +239,18 @@ public class AddMeetingActivity extends BaseActivity implements View.OnClickList
                     .setSelectCode(getSelectCode());
             intent.putExtra(OAConfig.MODEL_DATA, bean);
             startActivityForResult(intent, 0x21);
-        }else if (view.getId() == R.id.tag_rl){
+        } else if (view.getId() == R.id.tag_rl) {
             getMeetTag();
-        }else if (view.getId() == R.id.location_rl){
+        } else if (view.getId() == R.id.location_rl) {
             getMeetRoom();
-        }else if (view.getId() == R.id.voice_name_iv){
+        } else if (view.getId() == R.id.voice_name_iv) {
             voice_type = 1;
             RecognizerDialog dialog = new RecognizerDialog(this, null);
             dialog.setParameter(SpeechConstant.LANGUAGE, "zh_cn");
             dialog.setParameter(SpeechConstant.ACCENT, "mandarin");
             dialog.setListener(this);
             dialog.show();
-        }else if (view.getId() == R.id.voice_introduce_iv){
+        } else if (view.getId() == R.id.voice_introduce_iv) {
             voice_type = 2;
             RecognizerDialog dialog = new RecognizerDialog(this, null);
             dialog = new RecognizerDialog(this, null);
@@ -256,17 +258,24 @@ public class AddMeetingActivity extends BaseActivity implements View.OnClickList
             dialog.setParameter(SpeechConstant.ACCENT, "mandarin");
             dialog.setListener(this);
             dialog.show();
-        }else if (view.getId() == R.id.bt_save){
-            CommonInterface.getInstance().getCodeByNet("Meetingroomapply", new CommonInterface.OnResultListener() {
-                @Override
-                public void result(boolean isOk, int what, String message) {
-                    ma_code = message;
-                    getIdByNet();
-                }
-            });
+        } else if (view.getId() == R.id.bt_save) {
+            if (submiting) {
+
+            } else {
+                CommonInterface.getInstance().getCodeByNet("Meetingroomapply", new CommonInterface.OnResultListener() {
+                    @Override
+                    public void result(boolean isOk, int what, String message) {
+                        ma_code = message;
+                        getIdByNet();
+                    }
+                });
+                submiting = true;
+            }
         }
     }
 
+    private boolean submiting = false;
+
     private void endOfActivity() {
 //        Intent intent = new Intent();
 //        intent.putExtra("data", "data");
@@ -341,7 +350,7 @@ public class AddMeetingActivity extends BaseActivity implements View.OnClickList
             @Override
             public void onDateTimePicked(String year, String month, String day, String hour, String minute) {
                 String time = year + "-" + month + "-" + day + " " + hour + ":" + minute + ":00";
-                if (tv.getId() == R.id.start_tv){
+                if (tv.getId() == R.id.start_tv) {
                     if (!StringUtil.isEmpty(end_tv.getText().toString())) {
                         if (end_tv.getText().toString().compareTo(time) < 0) {
                             ToastUtil.showToast(ct, R.string.not_time_start_biger_end);
@@ -351,7 +360,7 @@ public class AddMeetingActivity extends BaseActivity implements View.OnClickList
                     } else {
                         start_tv.setText(time);
                     }
-                }else if (tv.getId() == R.id.end_tv){
+                } else if (tv.getId() == R.id.end_tv) {
                     if (time.compareTo(start_tv.getText().toString()) <= 0) {
                         ToastUtil.showToast(ct, R.string.not_time_start_biger_end);
                     } else {
@@ -606,8 +615,8 @@ public class AddMeetingActivity extends BaseActivity implements View.OnClickList
         } else if (requestCode == 0x30 && resultCode == 0x11) {
             String startDate = data.getStringExtra("startDate");
             String endDate = data.getStringExtra("endDate");
-            start_tv.setText(StringUtil.getMessage(startDate)+":00");
-            end_tv.setText(StringUtil.getMessage(endDate)+":00");
+            start_tv.setText(StringUtil.getMessage(startDate) + ":00");
+            end_tv.setText(StringUtil.getMessage(endDate) + ":00");
         }
     }
 

+ 23 - 14
app_modular/appworks/src/main/java/com/uas/appworks/OA/erp/activity/ExpenseReimbursementActivity.java

@@ -49,6 +49,7 @@ import com.common.ui.ImageUtil;
 import com.core.api.wxapi.ApiConfig;
 import com.core.api.wxapi.ApiPlatform;
 import com.core.api.wxapi.ApiUtils;
+import com.core.app.AppConstant;
 import com.core.app.Constants;
 import com.core.app.MyApplication;
 import com.core.base.BaseActivity;
@@ -65,7 +66,6 @@ import com.core.widget.view.Activity.ImgFileListActivity;
 import com.core.widget.view.Activity.MultiImagePreviewActivity;
 import com.core.widget.view.Activity.SelectActivity;
 import com.core.widget.view.MyGridView;
-import com.core.app.AppConstant;
 import com.lidroid.xutils.HttpUtils;
 import com.lidroid.xutils.ViewUtils;
 import com.lidroid.xutils.exception.HttpException;
@@ -73,7 +73,6 @@ import com.lidroid.xutils.http.RequestParams;
 import com.lidroid.xutils.http.ResponseInfo;
 import com.lidroid.xutils.http.callback.RequestCallBack;
 import com.lidroid.xutils.http.client.HttpRequest;
-import com.uas.appworks.R;
 import com.nostra13.universalimageloader.core.ImageLoader;
 import com.uas.appworks.OA.erp.activity.form.FormListSelectActivity;
 import com.uas.appworks.OA.erp.model.AddCostBean;
@@ -85,8 +84,10 @@ import com.uas.appworks.OA.erp.model.CostTypeSingleBean;
 import com.uas.appworks.OA.erp.model.CostUpdatePModel;
 import com.uas.appworks.OA.erp.model.SaveCostDetailsGridStoreBean;
 import com.uas.appworks.OA.erp.model.UpdateCostDetailsGridStoreBean;
+import com.uas.appworks.R;
 
 import java.io.File;
+import java.text.DecimalFormat;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.LinkedHashMap;
@@ -637,6 +638,16 @@ public class ExpenseReimbursementActivity extends BaseActivity implements View.O
 
     private void doShowFormData(JSONArray formdataArray, List<CommonDocAMBean.DatasBean.FormconfigsBean> mFormconfigsList) {
         if (!ListUtils.isEmpty(mFormconfigsList)  &&  !ListUtils.isEmpty(formdataArray)){
+
+            fb_attach = formdataArray.getJSONObject(0).getString("fb_attach");
+            Log.i("fb_attach_ss",fb_attach+"?");
+            if (!StringUtil.isEmpty(fb_attach)) {
+                getUpdatePicture(); //获取发票图片
+            }else {
+                progressDialog.dismiss();
+            }
+
+
             for (int i = 0; i < mFormconfigsList.size(); i++) {
                 String key = mFormconfigsList.get(i).getFD_FIELD();
                 if (StringUtil.isEmpty(key)) return;
@@ -657,15 +668,6 @@ public class ExpenseReimbursementActivity extends BaseActivity implements View.O
                         break;
                 }
             }
-
-            fb_attach = formdataArray.getJSONObject(0).getString("fb_attach");
-            Log.i("fb_attach_ss",fb_attach+"?");
-            if (!StringUtil.isEmpty(fb_attach)) {
-                getUpdatePicture(); //获取发票图片
-            }else {
-                progressDialog.dismiss();
-            }
-
         }
     }
 
@@ -924,13 +926,14 @@ public class ExpenseReimbursementActivity extends BaseActivity implements View.O
         }else if (v.getId() == R.id.c_equal){
             String stringresult = c_result.getText().toString();
             String nowedit = c_edit.getText().toString();
-
             if (StringUtil.isEmpty(stringresult)){
                 if(!StringUtil.isEmpty(nowedit)){
+                    double d = CommonUtil.getTwoPointDouble(Double.valueOf(nowedit));
                     costFormModel_list.get(et_position).setCost_money(CommonUtil.getTwoPointDouble(Double.valueOf(nowedit)));
                     dtAdapter.notifyDataSetChanged();
                     doAutoCalculateJudge();
                     c_edit.setText(null);
+                    Log.i("left=,right=,d=",stringresult+","+nowedit+","+d);
                     closeCalculatorWindow();
                 }else {
                     ToastMessage("请输入");
@@ -1047,7 +1050,7 @@ public class ExpenseReimbursementActivity extends BaseActivity implements View.O
         activity.getWindow().setAttributes(lp);
     }
     private void c_onclick(String s) {
-        if (c_edit.getText().length() > 7) return;
+        if (c_edit.getText().length() > 7 || CommonUtil.getNumByString(c_edit.getText().toString()) > 1000000) return;
         if(isClickEqu)
         {
             c_edit.setText(null);
@@ -1374,7 +1377,13 @@ public class ExpenseReimbursementActivity extends BaseActivity implements View.O
             if (costFormModel_list.get(i).getCost_money() > 0){
                 sum_money = sum_money + Double.valueOf(costFormModel_list.get(i).getCost_money());
                 if (i == (costFormModel_list.size() - 1)){
-                    sum_money_tv.setText(CommonUtil.getTwoPointDouble(sum_money)+"");
+                    DecimalFormat df = new DecimalFormat("0.##");
+                    Double d = new Double(CommonUtil.getTwoPointDouble(sum_money));
+                    if (!df.format(d).contains("."))
+                        sum_money_tv.setText(df.format(d)+".0");
+                    else
+                        sum_money_tv.setText(df.format(d)+"");
+
                 }
             }else {
 //                ToastMessage("请输入消费金额");

+ 0 - 1
app_modular/appworks/src/main/java/com/uas/appworks/OA/erp/activity/WorkDailyAddActivity.java

@@ -558,7 +558,6 @@ public class WorkDailyAddActivity extends BaseActivity implements RecognizerDial
                             } else {
                                 Intent intent1 = new Intent("com.modular.work.OAActivity");
                                 intent1.putExtra("WorkDailyAdd", "WorkDailyAdd");
-                                intent1.addCategory("com.modular.work.OAActivity");
                                 startActivity(intent1);
                             }
                             finish();

+ 0 - 4
app_modular/appworks/src/main/java/com/uas/appworks/OA/erp/adapter/WorkDailyAdapter.java

@@ -53,10 +53,6 @@ public class WorkDailyAdapter extends BaseAdapter {
         this.mContext = mContext;
     }
 
-//    public List<WorkDailyBean> getmWorkDailyBeanList() {
-//        return mWorkDailyBeanList;
-//    }
-
     public void setmWorkDailyBeanList(List<WorkDailyBean> mWorkDailyBeans) {
         this.mWorkDailyBeanList = mWorkDailyBeans;
     }

+ 1 - 0
app_third/recyclerlibrary/.gitignore

@@ -0,0 +1 @@
+/build

+ 24 - 0
app_third/recyclerlibrary/build.gradle

@@ -0,0 +1,24 @@
+apply plugin: 'com.android.library'
+android {
+    compileSdkVersion rootProject.ext.android.compileSdkVersion
+    buildToolsVersion rootProject.ext.android.buildToolsVersion
+    defaultConfig {
+        minSdkVersion rootProject.ext.android.minSdkVersion
+        targetSdkVersion rootProject.ext.android.targetSdkVersion
+        versionCode rootProject.ext.android.versionCode
+        versionName rootProject.ext.android.versionName
+    }
+    buildTypes {
+        release {
+            minifyEnabled false
+            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
+        }
+    }
+}
+
+dependencies {
+    compile fileTree(include: ['*.jar'], dir: 'libs')
+    testCompile deps.junit
+    compile deps.appcompatV7
+    compile deps.recyclerviewV7
+}

+ 25 - 0
app_third/recyclerlibrary/proguard-rules.pro

@@ -0,0 +1,25 @@
+# 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
+# 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
+
+# Add any project specific keep options here:
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+#   public *;
+#}
+
+# Uncomment this to preserve the line number information for
+# debugging stack traces.
+#-keepattributes SourceFile,LineNumberTable
+
+# If you keep the line number information, uncomment this to
+# hide the original source file name.
+#-renamesourcefileattribute SourceFile

+ 10 - 0
app_third/recyclerlibrary/src/main/AndroidManifest.xml

@@ -0,0 +1,10 @@
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+
+    package="com.module.recyclerlibrary">
+
+    <application android:allowBackup="true" android:label="@string/app_name"
+        android:supportsRtl="true">
+
+    </application>
+
+</manifest>

+ 3 - 0
app_third/recyclerlibrary/src/main/java/com/module/recyclerlibrary/REMAIN.md

@@ -0,0 +1,3 @@
+## 针对RecyclerView 的封装
+
+### refresh 封装下拉刷新和上拉加载,使用

+ 65 - 0
app_third/recyclerlibrary/src/main/java/com/module/recyclerlibrary/adapter/BaseRecycAdapter.java

@@ -0,0 +1,65 @@
+package com.module.recyclerlibrary.adapter;
+
+import android.content.Context;
+import android.support.v7.widget.RecyclerView;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+import com.module.recyclerlibrary.model.BaseModel;
+
+import java.util.List;
+
+/**
+ * Created by Bitliker on 2017/9/19.
+ */
+
+public abstract class BaseRecycAdapter<T> extends RecyclerView.Adapter<BaseRecycAdapter.ViewHodler> {
+
+    protected Context ct;
+    protected List<BaseModel<T>> datas;
+
+    public BaseRecycAdapter(Context ct) {
+        this(ct, null);
+    }
+
+    public BaseRecycAdapter(Context ct, List<BaseModel<T>> datas) {
+        if (ct == null) {
+            new NullPointerException("ct cannot be null");
+        }
+        this.ct = ct;
+        this.datas = datas;
+    }
+
+    @Override
+    public ViewHodler onCreateViewHolder(ViewGroup parent, int viewType) {
+        return null;
+    }
+
+
+    @Override
+    public int getItemCount() {
+        return datas == null ? 0 : datas.size();
+    }
+
+    public abstract void onBindViewHolder(ViewHodler holder, int position);
+
+    public abstract void onCreateViewHolder(View view, int viewType);
+
+    private LayoutInflater mInflater;
+
+    private LayoutInflater getmInflater() {
+        return mInflater == null ? (mInflater = LayoutInflater.from(ct)) : mInflater;
+    }
+
+
+    protected abstract class ViewHodler extends RecyclerView.ViewHolder {
+        private ViewHodler(View itemView) {
+            super(itemView);
+        }
+
+        public ViewHodler(int layoutId, ViewGroup parent) {
+            this(getmInflater().inflate(layoutId, parent, false));
+        }
+    }
+}

+ 63 - 0
app_third/recyclerlibrary/src/main/java/com/module/recyclerlibrary/listener/OnRecyclerClickLister.java

@@ -0,0 +1,63 @@
+package com.module.recyclerlibrary.listener;
+
+import android.support.v4.view.GestureDetectorCompat;
+import android.support.v7.widget.RecyclerView;
+import android.view.GestureDetector;
+import android.view.MotionEvent;
+import android.view.View;
+
+/**
+ * Created by Bitliker on 2017/9/18.
+ */
+
+public abstract class OnRecyclerClickLister implements RecyclerView.OnItemTouchListener {
+
+    private GestureDetectorCompat mGestureDetectorCompat;
+    private RecyclerView mRecyclerView;
+
+    public OnRecyclerClickLister(RecyclerView recyclerView) {
+        mRecyclerView = recyclerView;
+        mGestureDetectorCompat = new GestureDetectorCompat(mRecyclerView.getContext(),
+                new GestureListener());
+    }
+
+    @Override
+    public void onTouchEvent(RecyclerView rv, MotionEvent e) {
+        mGestureDetectorCompat.onTouchEvent(e);
+    }
+
+    @Override
+    public boolean onInterceptTouchEvent(RecyclerView rv, MotionEvent e) {
+        mGestureDetectorCompat.onTouchEvent(e);
+        return false;
+    }
+
+    @Override
+    public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {
+    }
+
+    public abstract void onItemLongClick(RecyclerView.ViewHolder vh);
+
+    public abstract void onItemClick(RecyclerView.ViewHolder vh);
+
+    private class GestureListener extends GestureDetector.SimpleOnGestureListener {
+        @Override
+        public boolean onSingleTapUp(MotionEvent e) {
+            View childe = mRecyclerView.findChildViewUnder(e.getX(), e.getY());
+            if (childe != null) {
+                RecyclerView.ViewHolder VH = mRecyclerView.getChildViewHolder(childe);
+                onItemClick(VH);
+            }
+            return true;
+        }
+
+        @Override
+        public void onLongPress(MotionEvent e) {
+            View childe = mRecyclerView.findChildViewUnder(e.getX(), e.getY());
+            if (childe != null) {
+                RecyclerView.ViewHolder VH = mRecyclerView.getChildViewHolder(childe);
+                onItemLongClick(VH);
+            }
+        }
+    }
+}

+ 50 - 0
app_third/recyclerlibrary/src/main/java/com/module/recyclerlibrary/listener/OnRecyclerItemClickListener.java

@@ -0,0 +1,50 @@
+package com.module.recyclerlibrary.listener;
+
+import android.support.v4.view.GestureDetectorCompat;
+import android.support.v7.widget.RecyclerView;
+import android.view.GestureDetector;
+import android.view.MotionEvent;
+import android.view.View;
+
+/**
+ * 只接受点击事件,当长按一个item时候,也可以触发itemclick
+ */
+public abstract class OnRecyclerItemClickListener implements RecyclerView.OnItemTouchListener {
+    private GestureDetectorCompat mGestureDetectorCompat;
+    private RecyclerView mRecyclerView;
+
+    public OnRecyclerItemClickListener(RecyclerView recyclerView) {
+        mRecyclerView = recyclerView;
+        mGestureDetectorCompat = new GestureDetectorCompat(mRecyclerView.getContext(),
+                new GestureListener());
+    }
+
+    @Override
+    public void onTouchEvent(RecyclerView rv, MotionEvent e) {
+        mGestureDetectorCompat.onTouchEvent(e);
+    }
+
+    @Override
+    public boolean onInterceptTouchEvent(RecyclerView rv, MotionEvent e) {
+        mGestureDetectorCompat.onTouchEvent(e);
+        return false;
+    }
+
+    @Override
+    public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {
+    }
+
+    public abstract void onItemClick(RecyclerView.ViewHolder vh);
+
+    private class GestureListener extends GestureDetector.SimpleOnGestureListener {
+        @Override
+        public boolean onSingleTapUp(MotionEvent e) {
+            View childe = mRecyclerView.findChildViewUnder(e.getX(), e.getY());
+            if (childe != null) {
+                RecyclerView.ViewHolder VH = mRecyclerView.getChildViewHolder(childe);
+                onItemClick(VH);
+            }
+            return true;
+        }
+    }
+}

+ 51 - 0
app_third/recyclerlibrary/src/main/java/com/module/recyclerlibrary/listener/OnRecyclerLongItemClickLister.java

@@ -0,0 +1,51 @@
+package com.module.recyclerlibrary.listener;
+
+import android.support.v4.view.GestureDetectorCompat;
+import android.support.v7.widget.RecyclerView;
+import android.view.GestureDetector;
+import android.view.MotionEvent;
+import android.view.View;
+
+/**
+ * Created by Bitliker on 2017/9/18.
+ */
+
+public abstract class OnRecyclerLongItemClickLister  implements RecyclerView.OnItemTouchListener  {
+
+    private GestureDetectorCompat mGestureDetectorCompat;
+    private RecyclerView mRecyclerView;
+
+    public OnRecyclerLongItemClickLister(RecyclerView recyclerView) {
+        mRecyclerView = recyclerView;
+        mGestureDetectorCompat = new GestureDetectorCompat(mRecyclerView.getContext(),
+                new GestureListener());
+    }
+
+    @Override
+    public void onTouchEvent(RecyclerView rv, MotionEvent e) {
+        mGestureDetectorCompat.onTouchEvent(e);
+    }
+
+    @Override
+    public boolean onInterceptTouchEvent(RecyclerView rv, MotionEvent e) {
+        mGestureDetectorCompat.onTouchEvent(e);
+        return false;
+    }
+
+    @Override
+    public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {
+    }
+
+    public abstract void onItemLongClick(RecyclerView.ViewHolder vh);
+
+    private class GestureListener extends GestureDetector.SimpleOnGestureListener {
+        @Override
+        public void onLongPress(MotionEvent e) {
+            View childe = mRecyclerView.findChildViewUnder(e.getX(), e.getY());
+            if (childe != null) {
+                RecyclerView.ViewHolder VH = mRecyclerView.getChildViewHolder(childe);
+                onItemLongClick(VH);
+            }
+        }
+    }
+}

+ 90 - 0
app_third/recyclerlibrary/src/main/java/com/module/recyclerlibrary/model/BaseModel.java

@@ -0,0 +1,90 @@
+package com.module.recyclerlibrary.model;
+
+/**
+ * Created by Bitliker on 2017/7/4.
+ */
+
+public class BaseModel<T> {
+    private boolean select;
+    private float sort;
+    private String name;
+    private String sub;
+    private String tag;
+    private T data;
+
+
+    public BaseModel(boolean select, String name, String sub, String tag) {
+        this.select = select;
+        this.name = name;
+        this.sub = sub;
+        this.tag = tag;
+    }
+
+    public BaseModel(String name, String sub, String tag) {
+        this.name = name;
+        this.sub = sub;
+        this.tag = tag;
+    }
+
+    public BaseModel(String name, String sub) {
+        this.name = name;
+        this.sub = sub;
+    }
+
+    public float getSort() {
+        return sort;
+    }
+
+    public void setSort(float sort) {
+        this.sort = sort;
+    }
+
+    public BaseModel(String name) {
+        this.name = name;
+    }
+
+    public BaseModel() {
+    }
+
+    public boolean isSelect() {
+        return select;
+    }
+
+    public void setSelect(boolean select) {
+        this.select = select;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getSub() {
+        return sub;
+    }
+
+    public void setSub(String sub) {
+        this.sub = sub;
+    }
+
+    public String getTag() {
+        return tag;
+    }
+
+    public void setTag(String tag) {
+        this.tag = tag;
+    }
+
+    public T getData() {
+        return data;
+    }
+
+    public void setData(T data) {
+        this.data = data;
+    }
+
+
+}

+ 533 - 0
app_third/recyclerlibrary/src/main/java/com/module/recyclerlibrary/ui/refresh/BaseRefreshLayout.java

@@ -0,0 +1,533 @@
+package com.module.recyclerlibrary.ui.refresh;
+
+import android.content.Context;
+import android.content.res.TypedArray;
+import android.graphics.drawable.Drawable;
+import android.os.Handler;
+import android.os.Looper;
+import android.os.Message;
+import android.support.v7.widget.RecyclerView;
+import android.util.AttributeSet;
+import android.view.LayoutInflater;
+import android.view.MotionEvent;
+import android.view.View;
+import android.view.ViewGroup;
+import android.webkit.WebView;
+import android.widget.AdapterView;
+import android.widget.RelativeLayout;
+import android.widget.ScrollView;
+import android.widget.Scroller;
+
+import com.module.recyclerlibrary.R;
+
+
+public abstract class BaseRefreshLayout extends ViewGroup {
+    private boolean mEnablePullDown;// 是否允许下拉刷新
+    private boolean mEnablePullUp;// 是否允许上拉加载
+
+    private Drawable mPullBgDrawable = null;// 拉动部分背景(color|drawable)
+    private onRefreshListener mListener;// 事件监听接口
+
+    private LayoutInflater mInflater;// 布局填充器对象
+    private Scroller mLayoutScroller;  // 用于平滑滑动的Scroller对象
+    private final int SCROLL_SPEED = 650;  // Scroller的滑动速度
+    private int mReachBottomScroll; // 当滚动到内容最底部时Y轴所需要滑动的举例
+    private int mEffectiveScroll; // 最小有效滑动距离(滑动超过该距离才视作一次有效的滑动刷新/加载操作)
+    private int lastChildIndex;// 最后一个content-child-view的index
+    private int mLayoutContentHeight; // ViewGroup的内容高度(不包括header与footer的高度)
+
+    private BaseRefreshView headerView; //头布局
+    private BaseRefreshView footView; //尾布局
+
+    public BaseRefreshLayout(Context context, AttributeSet attrs) {
+        super(context, attrs);
+        TypedArray array = context.obtainStyledAttributes(attrs,
+                R.styleable.BaseRefreshLayout);
+        try {
+            mEnablePullDown = array.getBoolean(R.styleable.BaseRefreshLayout_enablePullDown, true);
+            mEnablePullUp = array.getBoolean(R.styleable.BaseRefreshLayout_enablePullUp, true);
+            mPullBgDrawable = array.getDrawable(R.styleable.BaseRefreshLayout_pullBackground);
+            mEffectiveScroll = (int) array.getDimension(R.styleable.BaseRefreshLayout_fectiveScroll, dip2px(context, -1));
+            if (mEffectiveScroll < 0) {
+                mEffectiveScroll = (int) context.getResources().getDimension(R.dimen.refresh_item_height);
+            }
+        } finally {
+            array.recycle();
+        }
+        // 实例化布局填充器
+        mInflater = LayoutInflater.from(context);
+        // 实例化Scroller
+        mLayoutScroller = new Scroller(context);
+    }
+
+    @Override
+    protected void onFinishInflate() {
+        super.onFinishInflate();
+        lastChildIndex = getChildCount() - 1;
+        // 添加上拉刷新部分
+        if (mEnablePullDown)
+            addLayoutHeader();
+        // 添加下拉加载部分
+        if (mEnablePullUp)
+            addLayoutFooter();
+    }
+
+    private void addLayoutHeader() {
+        headerView = getHeader(mInflater);
+        // 通过LayoutInflater获取从布局文件中获取header的view对象
+        if (mPullBgDrawable != null)
+            headerView.setBackgroundDrawable(mPullBgDrawable);
+        // 设置布局参数(宽度为MATCH_PARENT,高度为MATCH_PARENT)
+        RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams
+                (RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT);
+        // 将Header添加进Layout当中
+        addView(headerView, params);
+    }
+
+
+    /**
+     * 添加下拉加载布局作为footer
+     */
+    private void addLayoutFooter() {
+        // 通过LayoutInflater获取从布局文件中获取footer的view对象
+        footView = getFooter(mInflater);
+        if (mPullBgDrawable != null)
+            footView.setBackgroundDrawable(mPullBgDrawable);
+        // 设置布局参数(宽度为MATCH_PARENT,高度为MATCH_PARENT)
+        RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams
+                (RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT);
+        // 将footer添加进Layout当中
+        addView(footView, params);
+    }
+
+
+    @Override
+    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
+        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
+        // 遍历进行子视图的测量工作
+        for (int i = 0; i < getChildCount(); i++) {
+            // 通知子视图进行测量
+            View child = getChildAt(i);
+            measureChild(child, widthMeasureSpec, heightMeasureSpec);
+        }
+    }
+
+    @Override
+    protected void onLayout(boolean changed, int l, int t, int r, int b) {
+        // 重置(避免重复累加)
+        mLayoutContentHeight = 0;
+        // 遍历进行子视图的置位工作
+        for (int index = 0; index < getChildCount(); index++) {
+            View child = getChildAt(index);
+            if (child == headerView) { // 头视图隐藏在ViewGroup的顶端
+                child.layout(0, 0 - child.getMeasuredHeight(), child.getMeasuredWidth(), 0);
+            } else if (child == footView) { // 尾视图隐藏在ViewGroup所有内容视图之后
+                child.layout(0, mLayoutContentHeight, child.getMeasuredWidth(), mLayoutContentHeight + child.getMeasuredHeight());
+            } else { // 内容视图根据定义(插入)顺序,按由上到下的顺序在垂直方向进行排列
+                child.layout(0, mLayoutContentHeight, child.getMeasuredWidth(), mLayoutContentHeight + child.getMeasuredHeight());
+                if (index <= lastChildIndex) {
+                    if (child instanceof ScrollView) {
+                        mLayoutContentHeight += getMeasuredHeight();
+                        continue;
+                    }
+                    mLayoutContentHeight += child.getMeasuredHeight();
+                }
+            }
+        }
+        // 计算到达内容最底部时ViewGroup的滑动距离
+        mReachBottomScroll = mLayoutContentHeight - getMeasuredHeight();
+    }
+
+
+    // 普通状态
+    protected final int NORMAL = 0;
+    // 意图刷新
+    protected final int TRY_REFRESH = 1;
+    // 刷新状态
+    protected final int REFRESH = 2;
+    // 意图加载
+    protected final int TRY_LOAD_MORE = 3;
+    // 加载状态
+    protected final int LOAD_MORE = 4;
+    // Layout状态
+    private int status = NORMAL;
+    // 用于计算滑动距离的Y坐标中介
+    private int mLastYMoved;
+    // 用于判断是否拦截触摸事件的Y坐标中介
+    private int mLastYIntercept;
+
+    @Override
+    public boolean onInterceptTouchEvent(MotionEvent event) {
+        boolean intercept = false;
+        // 记录此次触摸事件的y坐标
+        int y = (int) event.getY();
+        // 判断触摸事件类型
+        switch (event.getAction()) {
+            // Down事件
+            case MotionEvent.ACTION_DOWN: {
+                // 记录下本次系列触摸事件的起始点Y坐标
+                mLastYMoved = y;
+                // 不拦截ACTION_DOWN,因为当ACTION_DOWN被拦截,后续所有触摸事件都会被拦截
+                intercept = false;
+                break;
+            }
+            // Move事件
+            case MotionEvent.ACTION_MOVE: {
+                if (y > mLastYIntercept) { // 下滑操作
+                    // 获取最顶部的子视图
+                    View child = getChildAt(0);
+                    if (child instanceof AdapterView) {
+                        intercept = avPullDownIntercept(child);
+                    } else if (child instanceof ScrollView) {
+                        intercept = svPullDownIntercept(child);
+                    } else if (child instanceof RecyclerView) {
+                        intercept = rvPullDownIntercept(child);
+                    } else if (child instanceof WebView) {
+                        intercept = webViewPullDownIntercept(child);
+                    }
+                } else if (y < mLastYIntercept) { // 上拉操作
+                    // 获取最底部的子视图
+                    View child = getChildAt(lastChildIndex);
+                    if (child instanceof AdapterView) {
+                        intercept = avPullUpIntercept(child);
+                    } else if (child instanceof ScrollView) {
+                        intercept = svPullUpIntercept(child);
+                    } else if (child instanceof RecyclerView) {
+                        intercept = rvPullUpIntercept(child);
+                    }
+                } else {
+                    intercept = false;
+                }
+                break;
+            }
+            // Up事件
+            case MotionEvent.ACTION_UP: {
+                intercept = false;
+                break;
+            }
+        }
+        mLastYIntercept = y;
+        return intercept;
+    }
+
+    private boolean avPullDownIntercept(View child) {
+        boolean intercept = true;
+        AdapterView adapterChild = (AdapterView) child;
+        // 判断AbsListView是否已经到达内容最顶部
+        if (adapterChild.getFirstVisiblePosition() != 0
+                || adapterChild.getChildAt(0).getTop() != 0) {
+            // 如果没有达到最顶端,则仍然将事件下放
+            intercept = false;
+        }
+        return intercept;
+    }
+
+    private boolean avPullUpIntercept(View child) {
+        boolean intercept = false;
+        AdapterView adapterChild = (AdapterView) child;
+
+        // 判断AbsListView是否已经到达内容最底部
+        if (adapterChild.getLastVisiblePosition() == adapterChild.getCount() - 1
+                && (adapterChild.getChildAt(adapterChild.getChildCount() - 1).getBottom() == getMeasuredHeight())) {
+            // 如果到达底部,则拦截事件
+            intercept = true;
+        }
+        return intercept;
+    }
+
+    private boolean svPullDownIntercept(View child) {
+        boolean intercept = false;
+        if (child.getScrollY() <= 0) {
+            intercept = true;
+        }
+        return intercept;
+    }
+
+    private boolean svPullUpIntercept(View child) {
+        boolean intercept = false;
+        ScrollView scrollView = (ScrollView) child;
+        View scrollChild = scrollView.getChildAt(0);
+
+        if (scrollView.getScrollY() >= (scrollChild.getHeight() - scrollView.getHeight())) {
+            intercept = true;
+        }
+        return intercept;
+    }
+
+    private boolean webViewPullDownIntercept(View child) {
+        boolean intercept = false;
+        WebView recyclerChild = (WebView) child;
+        if (recyclerChild.getScrollY() == 0) {
+            intercept = true;
+        }
+        return intercept;
+    }
+
+    private boolean rvPullDownIntercept(View child) {
+        boolean intercept = false;
+
+        RecyclerView recyclerChild = (RecyclerView) child;
+        if (recyclerChild.computeVerticalScrollOffset() <= 0)
+            intercept = true;
+
+        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;
+    }
+
+    @Override
+    public boolean onTouchEvent(MotionEvent event) {
+        int y = (int) event.getY();
+        switch (event.getAction()) {
+            case MotionEvent.ACTION_MOVE: {
+                // 计算本次滑动的Y轴增量(距离)
+                int dy = mLastYMoved - y;
+                // 如果滑动增量小于0,即下拉操作
+                if (dy < 0) {
+                    if (mEnablePullDown) {
+                        // 如果下拉的距离小于mLayoutHeader1/2的高度,则允许滑动
+                        if (getScrollY() > 0 || Math.abs(getScrollY()) <= headerView.getMeasuredHeight() / 2) {
+                            if (status != TRY_LOAD_MORE && status != LOAD_MORE) {
+                                scrollBy(0, dy);
+                                if (status != REFRESH) {
+                                    if (getScrollY() <= 0) {
+                                        if (status != TRY_REFRESH) {
+                                            updateStatus(TRY_REFRESH);
+                                        } else if (Math.abs(getScrollY()) > mEffectiveScroll) {
+                                            updateStatus(REFRESH);
+                                        }
+                                    }
+                                }
+                            } else {
+                                if (getScrollY() > 0) {
+                                    dy = dy > 30 ? 30 : dy;
+                                    scrollBy(0, dy);
+                                    if (getScrollY() < mReachBottomScroll + mEffectiveScroll) {
+                                        updateStatus(TRY_LOAD_MORE);
+                                    }
+                                }
+                            }
+                        }
+                    }
+                } else if (dy > 0) {
+                    if (mEnablePullUp) {
+                        if (getScrollY() <= mReachBottomScroll + footView.getMeasuredHeight() / 2) {
+                            // 进行Y轴上的滑动
+                            if (status != TRY_REFRESH && status != REFRESH) {
+                                scrollBy(0, dy);
+                                if (status != LOAD_MORE) {
+                                    if (getScrollY() >= mReachBottomScroll) {
+                                        if (status != TRY_LOAD_MORE)
+                                            updateStatus(TRY_LOAD_MORE);
+
+                                        if (getScrollY() >= mReachBottomScroll + mEffectiveScroll)
+                                            updateStatus(LOAD_MORE);
+                                    }
+                                }
+                            } else {
+                                if (getScrollY() <= 0) {
+                                    dy = dy > 30 ? 30 : dy;
+                                    scrollBy(0, dy);
+                                    if (Math.abs(getScrollY()) < mEffectiveScroll)
+                                        updateStatus(TRY_REFRESH);
+                                }
+                            }
+                        }
+                    }
+                }
+                // 记录y坐标
+                mLastYMoved = y;
+                break;
+            }
+            case MotionEvent.ACTION_UP: {
+                // 判断本次触摸系列事件结束时,Layout的状态
+                switch (status) {
+                    case NORMAL: {
+                        upWithStatusNormal();
+                        break;
+                    }
+                    case TRY_REFRESH: {
+                        upWithStatusTryRefresh();
+                        break;
+                    }
+
+                    case REFRESH: {
+                        upWithStatusRefresh();
+                        break;
+                    }
+
+                    case TRY_LOAD_MORE: {
+                        upWithStatusTryLoadMore();
+                        break;
+                    }
+
+                    case LOAD_MORE: {
+                        upWithStatusLoadMore();
+                        break;
+                    }
+                }
+            }
+        }
+        mLastYIntercept = 0;
+        postInvalidate();
+        return true;
+    }
+
+    private void updateStatus(int status) {
+        if (footView != null) {
+            footView.upStatus(status);
+        }
+        if (headerView != null) {
+            headerView.upStatus(status);
+        }
+        if (status != NORMAL) {
+            this.status = status;
+        }
+    }
+
+    private void upWithStatusNormal() {
+
+    }
+
+    private void upWithStatusTryRefresh() {
+        // 取消本次的滑动
+        mLayoutScroller.startScroll(0, getScrollY(), 0, -getScrollY(), SCROLL_SPEED);
+        status = NORMAL;
+        if (headerView != null) {
+            headerView.stopAnim();
+        }
+    }
+
+
+    private void upWithStatusRefresh() {
+        mLayoutScroller.startScroll(0, getScrollY(), 0, -(getScrollY() - (-mEffectiveScroll)), SCROLL_SPEED);
+        if (headerView != null) {
+            headerView.startAnim();
+        }
+        // 通过Listener接口执行刷新时的监听事件
+        if (mListener != null) {
+            mListener.onRefresh();
+        }
+    }
+
+    private void upWithStatusTryLoadMore() {
+        //取消加载
+        mLayoutScroller.startScroll(0, getScrollY(), 0, -(getScrollY() - mReachBottomScroll), SCROLL_SPEED);
+        status = NORMAL;
+        if (footView != null) {
+            footView.stopAnim();
+        }
+    }
+
+
+    private void upWithStatusLoadMore() {
+        //加载
+        mLayoutScroller.startScroll(0, getScrollY(), 0, -((getScrollY() - mEffectiveScroll) - mReachBottomScroll), SCROLL_SPEED);
+        if (footView != null) {
+            footView.startAnim();
+        }
+        // 通过Listener接口执行加载时的监听事件
+        if (mListener != null) {
+            mListener.onLoadMore();
+        }
+    }
+
+
+    @Override
+    public void computeScroll() {
+        super.computeScroll();
+        if (mLayoutScroller.computeScrollOffset()) {
+            scrollTo(0, mLayoutScroller.getCurrY());
+        }
+        postInvalidate();
+    }
+
+    private final int STOP_REFRESH = 1;
+    private final int STOP_LOAD_MORE = 2;
+
+    private Handler mUIHandler = new Handler(Looper.getMainLooper()) {
+        @Override
+        public void handleMessage(Message msg) {
+            switch (msg.what) {
+                case STOP_REFRESH: {
+                    mLayoutScroller.startScroll(0, getScrollY(), 0, -getScrollY(), SCROLL_SPEED);
+                    status = NORMAL;
+                    if (headerView != null) {
+                        headerView.stopAnim();
+                    }
+                    break;
+                }
+                case STOP_LOAD_MORE: {
+                    mLayoutScroller.startScroll(0, getScrollY(), 0, -(getScrollY() - mReachBottomScroll), SCROLL_SPEED);
+                    status = NORMAL;
+                    if (footView != null) {
+                        footView.stopAnim();
+                    }
+                    break;
+                }
+            }
+        }
+    };
+
+    private int dip2px(Context context, float dpValue) {
+        final float scale = context.getResources().getDisplayMetrics().density;
+        return (int) (dpValue * scale + 0.5f);
+    }
+
+    private void stopTryRefresh() {
+        Message msg = mUIHandler.obtainMessage(STOP_REFRESH);
+        mUIHandler.sendMessage(msg);
+    }
+
+    private void stopTryLoadMore() {
+        Message msg = mUIHandler.obtainMessage(STOP_LOAD_MORE);
+        mUIHandler.sendMessage(msg);
+    }
+
+    public void stopRefresh() {
+        if (status == LOAD_MORE) {
+            stopTryLoadMore();
+        } else if (status == REFRESH) {
+            stopTryRefresh();
+        }
+        status = NORMAL;
+    }
+
+    public boolean isRefreshing() {
+        return status == LOAD_MORE || status == REFRESH;
+    }
+
+    public void setEnabledPullUp(boolean enabledPullUp) {
+        this.mEnablePullUp = enabledPullUp;
+        if (!mEnablePullUp) {
+            if (footView != null && footView.isShown())
+                footView.setVisibility(View.GONE);
+        }
+    }
+
+    public void setOnRefreshListener(onRefreshListener listener) {
+        mListener = listener;
+    }
+
+    public interface onRefreshListener {
+        void onRefresh();
+
+        void onLoadMore();
+    }
+
+
+    protected abstract BaseRefreshView getHeader(LayoutInflater mInflater);
+
+    protected abstract BaseRefreshView getFooter(LayoutInflater mInflater);
+
+
+}

+ 36 - 0
app_third/recyclerlibrary/src/main/java/com/module/recyclerlibrary/ui/refresh/BaseRefreshView.java

@@ -0,0 +1,36 @@
+package com.module.recyclerlibrary.ui.refresh;
+
+import android.content.Context;
+import android.view.LayoutInflater;
+import android.widget.RelativeLayout;
+
+/**
+ * Created by Bitliker on 2017/9/18.
+ */
+
+public abstract class BaseRefreshView extends RelativeLayout {
+    // 普通状态
+    protected final int NORMAL = 0;
+    // 意图刷新
+    protected final int TRY_REFRESH = 1;
+    // 刷新状态
+    protected final int REFRESH = 2;
+    // 意图加载
+    protected final int TRY_LOAD_MORE = 3;
+    // 加载状态
+    protected final int LOAD_MORE = 4;
+
+
+    public BaseRefreshView(Context context, LayoutInflater mInflater) {
+        super(context);
+    }
+
+
+    public abstract void startAnim();
+
+    public abstract void stopAnim();
+
+    public abstract void upStatus(int status);
+
+
+}

+ 56 - 0
app_third/recyclerlibrary/src/main/java/com/module/recyclerlibrary/ui/refresh/simlpe/SimpleRefreshFooter.java

@@ -0,0 +1,56 @@
+package com.module.recyclerlibrary.ui.refresh.simlpe;
+
+import android.content.Context;
+import android.graphics.drawable.AnimationDrawable;
+import android.view.LayoutInflater;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import com.module.recyclerlibrary.R;
+import com.module.recyclerlibrary.ui.refresh.BaseRefreshView;
+
+
+/**
+ * Created by Bitliker on 2017/9/18.
+ */
+
+public class SimpleRefreshFooter extends BaseRefreshView {
+    private TextView statusTV;
+    private ImageView statusImg;
+
+    public SimpleRefreshFooter(Context context, LayoutInflater mInflater) {
+        super(context, mInflater);
+        mInflater.inflate(R.layout.refresh_footer, this);
+        statusImg = (ImageView) findViewById(R.id.statusImg);
+        statusTV = (TextView) findViewById(R.id.statusTV);
+    }
+
+
+    @Override
+    public void startAnim() {
+        statusTV.setText(R.string.refreshing);
+        statusImg.setImageResource(R.drawable.progress_round);
+        AnimationDrawable animationDrawable = (AnimationDrawable) statusImg.getDrawable();
+        animationDrawable.start();
+    }
+
+    @Override
+    public void stopAnim() {
+        statusImg.setImageResource(R.drawable.pull_up);
+        statusTV.setText(R.string.pull_up_to_load);
+    }
+
+    @Override
+    public void upStatus(int status) {
+        switch (status) {
+            case TRY_LOAD_MORE:
+                statusTV.setText(R.string.pull_up_to_load);
+                statusImg.setImageResource(R.drawable.pull_up);
+                break;
+            case LOAD_MORE:
+                statusTV.setText(R.string.up_to_load);
+                statusImg.setImageResource(R.drawable.pull_down);
+                break;
+        }
+    }
+}

+ 61 - 0
app_third/recyclerlibrary/src/main/java/com/module/recyclerlibrary/ui/refresh/simlpe/SimpleRefreshHeader.java

@@ -0,0 +1,61 @@
+package com.module.recyclerlibrary.ui.refresh.simlpe;
+
+import android.content.Context;
+import android.graphics.drawable.AnimationDrawable;
+import android.view.LayoutInflater;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import com.module.recyclerlibrary.R;
+import com.module.recyclerlibrary.ui.refresh.BaseRefreshView;
+
+
+/**
+ * Created by Bitliker on 2017/9/18.
+ */
+
+public class SimpleRefreshHeader extends BaseRefreshView {
+    private TextView statusTV;
+    private ImageView statusImg;
+
+    public SimpleRefreshHeader(Context context, LayoutInflater mInflater) {
+        super(context, mInflater);
+        mInflater.inflate(R.layout.refresh_header, this);
+        statusImg = (ImageView) findViewById(R.id.statusImg);
+        statusTV = (TextView) findViewById(R.id.statusTV);
+
+    }
+    public void hintAll(){
+        statusImg.setVisibility(GONE);
+        statusTV.setVisibility(GONE);
+    }
+
+
+    @Override
+    public void startAnim() {
+        statusTV.setText(R.string.refreshing);
+        statusImg.setImageResource(R.drawable.progress_round);
+        AnimationDrawable animationDrawable = (AnimationDrawable) statusImg.getDrawable();
+        animationDrawable.start();
+    }
+
+    @Override
+    public void stopAnim() {
+        statusImg.setImageResource(R.drawable.pull_down);
+        statusTV.setText(R.string.pull_down_to_refresh);
+    }
+
+    @Override
+    public void upStatus(int status) {
+        switch (status) {
+            case TRY_REFRESH:
+                statusTV.setText(R.string.pull_down_to_refresh);
+                statusImg.setImageResource(R.drawable.pull_down);
+                break;
+            case REFRESH:
+                statusTV.setText(R.string.up_to_refresh);
+                statusImg.setImageResource(R.drawable.pull_up);
+                break;
+        }
+    }
+}

+ 30 - 0
app_third/recyclerlibrary/src/main/java/com/module/recyclerlibrary/ui/refresh/simlpe/SimpleRefreshLayout.java

@@ -0,0 +1,30 @@
+package com.module.recyclerlibrary.ui.refresh.simlpe;
+
+import android.content.Context;
+import android.util.AttributeSet;
+import android.view.LayoutInflater;
+
+import com.module.recyclerlibrary.ui.refresh.BaseRefreshLayout;
+import com.module.recyclerlibrary.ui.refresh.BaseRefreshView;
+
+
+/**
+ * Created by Bitliker on 2017/9/18.
+ */
+
+public class SimpleRefreshLayout extends BaseRefreshLayout {
+
+    public SimpleRefreshLayout(Context context, AttributeSet attrs) {
+        super(context, attrs);
+    }
+
+    @Override
+    protected BaseRefreshView getHeader(LayoutInflater mInflater) {
+        return new SimpleRefreshHeader(getContext(),mInflater);
+    }
+
+    @Override
+    protected BaseRefreshView getFooter(LayoutInflater mInflater) {
+        return new SimpleRefreshFooter(getContext(),mInflater);
+    }
+}

+ 156 - 0
app_third/recyclerlibrary/src/main/java/com/module/recyclerlibrary/ui/refresh/smart/EatBeanLoadingView.java

@@ -0,0 +1,156 @@
+package com.module.recyclerlibrary.ui.refresh.smart;
+        
+import android.animation.Animator;
+import android.animation.AnimatorListenerAdapter;
+import android.animation.ValueAnimator;
+import android.content.Context;
+import android.graphics.Canvas;
+import android.graphics.Color;
+import android.graphics.Paint;
+import android.graphics.RectF;
+import android.util.AttributeSet;
+import android.view.View;
+import android.view.animation.LinearInterpolator;
+
+public class EatBeanLoadingView extends View {
+
+    private Paint mPaint, mPaintEye;
+
+    private float mWidth = 0f;
+    private float mHigh = 0f;
+    private float mPadding = 5f;
+
+    private float eatErWidth = 60f;
+    private float eatErPositonX = 0f;
+    int eatSpeed = 5;
+    private float beansWidth = 10f;
+
+
+    private float mAngle = 34;
+    private float eatErStrtAngle = mAngle;
+    private float eatErEndAngle = 360 - 2 * eatErStrtAngle;
+
+
+    public EatBeanLoadingView(Context context) {
+        this(context, null);
+    }
+
+    public EatBeanLoadingView(Context context, AttributeSet attrs) {
+        this(context, attrs, 0);
+    }
+
+    public EatBeanLoadingView(Context context, AttributeSet attrs, int defStyleAttr) {
+        super(context, attrs, defStyleAttr);
+        initPaint();
+
+    }
+
+    @Override
+    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
+        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
+
+        mWidth = getMeasuredWidth();
+        mHigh = getMeasuredHeight();
+    }
+
+
+    @Override
+    protected void onDraw(Canvas canvas) {
+        super.onDraw(canvas);
+        float eatRightX = mPadding + eatErWidth + eatErPositonX;
+        RectF rectF = new RectF(mPadding + eatErPositonX, mHigh / 2 - eatErWidth / 2, eatRightX, mHigh / 2 + eatErWidth / 2);
+        canvas.drawArc(rectF, eatErStrtAngle, eatErEndAngle
+                , true, mPaint);
+        canvas.drawCircle(mPadding + eatErPositonX + eatErWidth / 2,
+                mHigh / 2 - eatErWidth / 4,
+                beansWidth / 2, mPaintEye);
+
+        int beansCount = (int) ((mWidth - mPadding * 2 - eatErWidth) / beansWidth / 2);
+        for (int i = 0; i < beansCount; i++) {
+
+            float x = beansCount * i + beansWidth / 2 + mPadding + eatErWidth;
+            if (x > eatRightX) {
+                canvas.drawCircle(x,
+                        mHigh / 2, beansWidth / 2, mPaint);
+            }
+        }
+
+
+    }
+
+    private void initPaint() {
+        mPaint = new Paint();
+        mPaint.setAntiAlias(true);
+        mPaint.setStyle(Paint.Style.FILL);
+        mPaint.setColor(Color.GRAY);
+
+        mPaintEye = new Paint();
+        mPaintEye.setAntiAlias(true);
+        mPaintEye.setStyle(Paint.Style.FILL);
+        mPaintEye.setColor(Color.BLACK);
+
+    }
+
+    public void startAnim() {
+        stopAnim();
+        startViewAnim(0f, 1f, 3500);
+    }
+
+    public void stopAnim() {
+        if (valueAnimator != null) {
+            clearAnimation();
+            valueAnimator.setRepeatCount(0);
+            valueAnimator.cancel();
+            valueAnimator.end();
+            eatErPositonX = 0;
+            postInvalidate();
+        }
+    }
+
+    ValueAnimator valueAnimator = null;
+
+    private ValueAnimator startViewAnim(float startF, final float endF, long time) {
+        valueAnimator = ValueAnimator.ofFloat(startF, endF);
+        valueAnimator.setDuration(time);
+        valueAnimator.setInterpolator(new LinearInterpolator());
+        valueAnimator.setRepeatCount(ValueAnimator.INFINITE);//无限循环
+        valueAnimator.setRepeatMode(ValueAnimator.RESTART);
+        valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
+            @Override
+            public void onAnimationUpdate(ValueAnimator valueAnimator) {
+
+                float mAnimatedValue = (float) valueAnimator.getAnimatedValue();
+                eatErPositonX = (mWidth - 2 * mPadding - eatErWidth) * mAnimatedValue;
+                eatErStrtAngle = mAngle * (1 - (mAnimatedValue * eatSpeed - (int) (mAnimatedValue * eatSpeed)));
+                eatErEndAngle = 360 - eatErStrtAngle * 2;
+                invalidate();
+            }
+        });
+        valueAnimator.addListener(new AnimatorListenerAdapter() {
+            @Override
+            public void onAnimationEnd(Animator animation) {
+                super.onAnimationEnd(animation);
+
+            }
+
+            @Override
+            public void onAnimationStart(Animator animation) {
+                super.onAnimationStart(animation);
+            }
+
+            @Override
+            public void onAnimationRepeat(Animator animation) {
+                super.onAnimationRepeat(animation);
+            }
+        });
+        if (!valueAnimator.isRunning()) {
+            valueAnimator.start();
+
+        }
+
+        return valueAnimator;
+    }
+
+
+}
+

+ 283 - 0
app_third/recyclerlibrary/src/main/java/com/module/recyclerlibrary/ui/refresh/smart/GhostLoadingView.java

@@ -0,0 +1,283 @@
+package com.module.recyclerlibrary.ui.refresh.smart;
+
+import android.animation.Animator;
+import android.animation.AnimatorListenerAdapter;
+import android.animation.ValueAnimator;
+import android.content.Context;
+import android.graphics.Canvas;
+import android.graphics.Color;
+import android.graphics.Paint;
+import android.graphics.Path;
+import android.graphics.RectF;
+import android.util.AttributeSet;
+import android.view.View;
+import android.view.animation.LinearInterpolator;
+
+public class GhostLoadingView extends View {
+
+    float mWidth = 0f;
+    float mHeight = 0f;
+    Paint mPaint, mPaintHand, mPaintShadow, mPaintArms;
+    RectF rectFGhost = new RectF();
+    RectF rectFGhostShadow = new RectF();
+    float mPadding = 0f;
+    int mskirtH = 0;
+    Path path = new Path();
+
+    public GhostLoadingView(Context context) {
+        this(context, null);
+    }
+
+    public GhostLoadingView(Context context, AttributeSet attrs) {
+        this(context, attrs, 0);
+    }
+
+    public GhostLoadingView(Context context, AttributeSet attrs, int defStyleAttr) {
+        super(context, attrs, defStyleAttr);
+        initPaint();
+    }
+
+    @Override
+    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
+        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
+        mWidth = getMeasuredWidth();
+        mHeight = getMeasuredHeight();
+        mPadding = 10;
+        mskirtH = (int) (mWidth / 40);
+    }
+
+    private void initPaint() {
+        mPaint = new Paint();
+        mPaint.setAntiAlias(true);
+        mPaint.setStyle(Paint.Style.FILL);
+        mPaint.setColor(Color.GRAY);
+        mPaintHand = new Paint();
+        mPaintHand.setAntiAlias(true);
+        mPaintHand.setStyle(Paint.Style.FILL);
+        mPaintHand.setColor(Color.argb(220, 0, 0, 0));
+
+        mPaintShadow = new Paint();
+        mPaintShadow.setAntiAlias(true);
+        mPaintShadow.setStyle(Paint.Style.FILL);
+        mPaintShadow.setColor(Color.argb(60, 0, 0, 0));
+
+
+        mPaintArms = new Paint();
+        mPaintArms.setAntiAlias(true);
+        mPaintArms.setStrokeWidth(8);
+        mPaintArms.setStyle(Paint.Style.FILL);
+        mPaintArms.setColor(Color.argb(150, 0, 0, 0));
+    }
+
+
+    private void drawShadow(Canvas canvas) {
+        canvas.drawArc(rectFGhostShadow, 0, 360, false, mPaintShadow);
+
+    }
+
+
+    private void drawHead(Canvas canvas) {
+        canvas.drawCircle(rectFGhost.left + rectFGhost.width() / 2
+                , rectFGhost.width() / 2 + rectFGhost.top
+                , rectFGhost.width() / 2 - 15
+                , mPaint
+        );
+    }
+
+    private void drawHand(Canvas canvas) {
+        canvas.drawCircle(rectFGhost.left + rectFGhost.width() / 2 - mskirtH * 3 / 2 + mskirtH * onAnimationRepeatFlag
+                , rectFGhost.width() / 2 + mskirtH + rectFGhost.top,
+                mskirtH * 0.9f, mPaintHand
+        );
+        canvas.drawCircle(rectFGhost.left + rectFGhost.width() / 2 + mskirtH * 3 / 2 + mskirtH * onAnimationRepeatFlag
+                , rectFGhost.width() / 2 + mskirtH + rectFGhost.top,
+                mskirtH * 0.9f, mPaintHand
+        );
+
+
+    }
+
+
+    float wSpace = 10f;
+    float hSpace = 10f;
+
+    private void drawBody(Canvas canvas) {
+        path.reset();
+
+        float x = (float) ((rectFGhost.width() / 2 - 15) * Math.cos(5 * Math.PI / 180f));
+        float y = (float) ((rectFGhost.width() / 2 - 15) * Math.sin(5 * Math.PI / 180f));
+
+        float x2 = (float) ((rectFGhost.width() / 2 - 15) * Math.cos(175 * Math.PI / 180f));
+        float y2 = (float) ((rectFGhost.width() / 2 - 15) * Math.sin(175 * Math.PI / 180f));
+
+
+        path.moveTo(rectFGhost.left + rectFGhost.width() / 2 - x, rectFGhost.width() / 2 - y + rectFGhost.top);
+        path.lineTo(rectFGhost.left + rectFGhost.width() / 2 - x2, rectFGhost.width() / 2 - y2 + rectFGhost.top);
+        path.quadTo(rectFGhost.right + wSpace / 2, rectFGhost.bottom
+                , rectFGhost.right - wSpace, rectFGhost.bottom - hSpace);
+
+
+        float a = mskirtH;
+
+        float m = (rectFGhost.width() - 2 * wSpace) / 7f;
+
+        for (int i = 0; i < 7; i++) {
+            if (i % 2 == 0) {
+                path.quadTo(rectFGhost.right - wSpace - m * i - (m / 2), rectFGhost.bottom - hSpace - a
+                        , rectFGhost.right - wSpace - (m * (i + 1)), rectFGhost.bottom - hSpace);
+            } else {
+                path.quadTo(rectFGhost.right - wSpace - m * i - (m / 2), rectFGhost.bottom - hSpace + a
+                        , rectFGhost.right - wSpace - (m * (i + 1)), rectFGhost.bottom - hSpace);
+
+            }
+        }
+
+        path.quadTo(rectFGhost.left - 5, rectFGhost.bottom
+                , rectFGhost.left + rectFGhost.width() / 2 - x, rectFGhost.width() / 2 - y + rectFGhost.top);
+
+
+        path.close();
+        canvas.drawPath(path, mPaint);
+
+
+    }
+
+    @Override
+    protected void onDraw(Canvas canvas) {
+        super.onDraw(canvas);
+        canvas.save();
+
+        float distance = (mWidth - 2 * mPadding) / 3 * 2 * mAnimatedValue;
+
+        rectFGhost.left = mPadding + distance;
+        rectFGhost.right = (mWidth - 2 * mPadding) / 3 + distance;
+        float moveY = 0f;
+        float moveYMax = mHeight / 4f / 2f;
+        float shadowHighMax = 5f;
+        float shadowHigh = 0f;
+
+        if (mAnimatedValue <= 0.25) {
+            moveY = (float) (moveYMax / 0.25 * mAnimatedValue);
+            rectFGhost.top = moveY;
+
+            rectFGhost.bottom = mHeight / 4 * 3 + moveY;
+
+            shadowHigh = shadowHighMax / 0.25f * mAnimatedValue;
+
+
+        } else if (mAnimatedValue > 0.25 && mAnimatedValue <= 0.5f) {
+
+            moveY = (float) (moveYMax / 0.25 * (mAnimatedValue - 0.25f));
+            rectFGhost.top = moveYMax - moveY;
+            rectFGhost.bottom = mHeight / 4 * 3 + moveYMax - moveY;
+
+            shadowHigh = shadowHighMax - shadowHighMax / 0.25f * (mAnimatedValue - 0.25f);
+
+        } else if (mAnimatedValue > 0.5 && mAnimatedValue <= 0.75f) {
+            moveY = (float) (moveYMax / 0.25 * (mAnimatedValue - 0.5f));
+            rectFGhost.top = moveY;
+            rectFGhost.bottom = mHeight / 4 * 3 + moveY;
+            shadowHigh = shadowHighMax / 0.25f * (mAnimatedValue - 0.5f);
+
+
+        } else if (mAnimatedValue > 0.75 && mAnimatedValue <= 1f) {
+            moveY = (float) (moveYMax / 0.25 * (mAnimatedValue - 0.75f));
+            rectFGhost.top = moveYMax - moveY;
+            rectFGhost.bottom = mHeight / 4 * 3 + moveYMax - moveY;
+            shadowHigh = shadowHighMax - shadowHighMax / 0.25f * (mAnimatedValue - 0.75f);
+
+        }
+
+
+        rectFGhostShadow.top = mHeight - 25 + shadowHigh;
+        rectFGhostShadow.bottom = mHeight - 5 - shadowHigh;
+        rectFGhostShadow.left = rectFGhost.left + 5 + shadowHigh * 3;
+        rectFGhostShadow.right = rectFGhost.right - 5 - shadowHigh * 3;
+        drawShadow(canvas);
+        drawHead(canvas);
+        drawBody(canvas);
+        drawHand(canvas);
+        canvas.restore();
+
+    }
+
+
+    public void startAnim() {
+        stopAnim();
+        startViewAnim(0f, 1f, 2500);
+    }
+
+    private ValueAnimator valueAnimator;
+    private float mAnimatedValue = 0.f;
+
+    public void stopAnim() {
+        if (valueAnimator != null) {
+            clearAnimation();
+            valueAnimator.setRepeatCount(0);
+            valueAnimator.cancel();
+            valueAnimator.end();
+            mAnimatedValue = 0f;
+            wSpace = 10;
+            onAnimationRepeatFlag = 1;
+            postInvalidate();
+        }
+    }
+
+    int onAnimationRepeatFlag = 1;
+
+    private ValueAnimator startViewAnim(float startF, final float endF, long time) {
+        valueAnimator = ValueAnimator.ofFloat(startF, endF);
+        valueAnimator.setDuration(time);
+        valueAnimator.setInterpolator(new LinearInterpolator());
+        valueAnimator.setRepeatCount(ValueAnimator.INFINITE);//无限循环
+        valueAnimator.setRepeatMode(ValueAnimator.REVERSE);
+        valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
+            @Override
+            public void onAnimationUpdate(ValueAnimator valueAnimator) {
+
+                mAnimatedValue = (float) valueAnimator.getAnimatedValue();
+
+                invalidate();
+            }
+        });
+        valueAnimator.addListener(new AnimatorListenerAdapter() {
+
+
+            @Override
+            public void onAnimationEnd(Animator animation) {
+                super.onAnimationEnd(animation);
+            }
+
+            @Override
+            public void onAnimationStart(Animator animation) {
+                super.onAnimationStart(animation);
+
+            }
+
+            @Override
+            public void onAnimationRepeat(Animator animation) {
+                super.onAnimationRepeat(animation);
+                onAnimationRepeatFlag = onAnimationRepeatFlag * -1;
+
+                if (onAnimationRepeatFlag == -1) {
+                    wSpace = 22;
+                } else {
+                    wSpace = -2;
+                }
+
+
+            }
+
+        });
+        if (!valueAnimator.isRunning()) {
+            wSpace = -2;
+            valueAnimator.start();
+
+        }
+
+        return valueAnimator;
+    }
+
+
+}
+

+ 61 - 0
app_third/recyclerlibrary/src/main/java/com/module/recyclerlibrary/ui/refresh/smart/SmartRefreshFooter.java

@@ -0,0 +1,61 @@
+package com.module.recyclerlibrary.ui.refresh.smart;
+
+import android.content.Context;
+import android.view.LayoutInflater;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import com.module.recyclerlibrary.R;
+import com.module.recyclerlibrary.ui.refresh.BaseRefreshView;
+
+/**
+ * Created by Bitliker on 2017/9/18.
+ */
+
+public class SmartRefreshFooter extends BaseRefreshView {
+    EatBeanLoadingView ghostLoadingView;
+    TextView statusTV;
+    private final ImageView statusImg;
+
+    public SmartRefreshFooter(Context context, LayoutInflater mInflater) {
+        super(context, mInflater);
+        mInflater.inflate(R.layout.refresh_smart_footer, this);
+        ghostLoadingView = (EatBeanLoadingView) findViewById(R.id.srl_elv_pull_up);
+        statusTV = (TextView) findViewById(R.id.statusTV);
+        statusImg = (ImageView) findViewById(R.id.statusImg);
+    }
+
+    @Override
+    public void startAnim() {
+        statusTV.setVisibility(GONE);
+        statusTV.setText(R.string.pull_up_to_load);
+        statusImg.setImageResource(R.drawable.pull_up);
+        statusImg.setVisibility(GONE);
+        ghostLoadingView.setVisibility(VISIBLE);
+        ghostLoadingView.startAnim();
+    }
+
+    @Override
+    public void stopAnim() {
+        ghostLoadingView.stopAnim();
+        statusTV.setVisibility(VISIBLE);
+        statusImg.setVisibility(VISIBLE);
+        ghostLoadingView.setVisibility(GONE);
+
+    }
+
+
+    @Override
+    public void upStatus(int status) {
+        switch (status) {
+            case TRY_LOAD_MORE:
+                statusTV.setText(R.string.pull_up_to_load);
+                statusImg.setImageResource(R.drawable.pull_up);
+                break;
+            case LOAD_MORE:
+                statusTV.setText(R.string.up_to_load);
+                statusImg.setImageResource(R.drawable.pull_down);
+                break;
+        }
+    }
+}

+ 61 - 0
app_third/recyclerlibrary/src/main/java/com/module/recyclerlibrary/ui/refresh/smart/SmartRefreshHeader.java

@@ -0,0 +1,61 @@
+package com.module.recyclerlibrary.ui.refresh.smart;
+
+import android.content.Context;
+import android.view.LayoutInflater;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import com.module.recyclerlibrary.R;
+import com.module.recyclerlibrary.ui.refresh.BaseRefreshView;
+
+/**
+ * Created by Bitliker on 2017/9/18.
+ */
+
+public class SmartRefreshHeader extends BaseRefreshView {
+    GhostLoadingView ghostLoadingView;
+    TextView statusTV;
+    private final ImageView statusImg;
+
+    public SmartRefreshHeader(Context context, LayoutInflater mInflater) {
+        super(context, mInflater);
+        mInflater.inflate(R.layout.refresh_smart_header, this);
+        ghostLoadingView = (GhostLoadingView) findViewById(R.id.srl_glv_pull_down);
+        statusTV = (TextView) findViewById(R.id.statusTV);
+        statusImg = (ImageView) findViewById(R.id.statusImg);
+
+    }
+
+    @Override
+    public void startAnim() {
+        statusTV.setVisibility(GONE);
+        statusImg.setVisibility(GONE);
+        statusTV.setText(R.string.pull_down_to_refresh);
+        statusImg.setImageResource(R.drawable.pull_down);
+        ghostLoadingView.setVisibility(VISIBLE);
+        ghostLoadingView.startAnim();
+    }
+
+    @Override
+    public void stopAnim() {
+        ghostLoadingView.stopAnim();
+        statusTV.setVisibility(VISIBLE);
+        statusImg.setVisibility(VISIBLE);
+        ghostLoadingView.setVisibility(GONE);
+
+    }
+
+    @Override
+    public void upStatus(int status) {
+        switch (status) {
+            case TRY_REFRESH:
+                statusTV.setText(R.string.pull_down_to_refresh);
+                statusImg.setImageResource(R.drawable.pull_down);
+                break;
+            case REFRESH:
+                statusTV.setText(R.string.up_to_refresh);
+                statusImg.setImageResource(R.drawable.pull_up);
+                break;
+        }
+    }
+}

+ 29 - 0
app_third/recyclerlibrary/src/main/java/com/module/recyclerlibrary/ui/refresh/smart/SmartRefreshLayout.java

@@ -0,0 +1,29 @@
+package com.module.recyclerlibrary.ui.refresh.smart;
+
+import android.content.Context;
+import android.util.AttributeSet;
+import android.view.LayoutInflater;
+
+import com.module.recyclerlibrary.ui.refresh.BaseRefreshLayout;
+import com.module.recyclerlibrary.ui.refresh.BaseRefreshView;
+
+/**
+ * Created by Bitliker on 2017/9/18.
+ */
+
+public class SmartRefreshLayout extends BaseRefreshLayout {
+
+    public SmartRefreshLayout(Context context, AttributeSet attrs) {
+        super(context, attrs);
+    }
+
+    @Override
+    protected BaseRefreshView getHeader(LayoutInflater mInflater) {
+        return new SmartRefreshHeader(getContext(), mInflater);
+    }
+
+    @Override
+    protected BaseRefreshView getFooter(LayoutInflater mInflater) {
+        return new SmartRefreshFooter(getContext(), mInflater);
+    }
+}

+ 33 - 0
app_third/recyclerlibrary/src/main/java/com/module/recyclerlibrary/ui/refresh/webempty/EmptyRefreshLayout.java

@@ -0,0 +1,33 @@
+package com.module.recyclerlibrary.ui.refresh.webempty;
+
+import android.content.Context;
+import android.util.AttributeSet;
+import android.view.LayoutInflater;
+
+import com.module.recyclerlibrary.ui.refresh.BaseRefreshLayout;
+import com.module.recyclerlibrary.ui.refresh.BaseRefreshView;
+import com.module.recyclerlibrary.ui.refresh.simlpe.SimpleRefreshFooter;
+import com.module.recyclerlibrary.ui.refresh.simlpe.SimpleRefreshHeader;
+
+/**
+ * Created by Bitliker on 2017/9/19.
+ */
+
+public class EmptyRefreshLayout extends BaseRefreshLayout {
+
+    public EmptyRefreshLayout(Context context, AttributeSet attrs) {
+        super(context, attrs);
+    }
+
+    @Override
+    protected BaseRefreshView getHeader(LayoutInflater mInflater) {
+        SimpleRefreshHeader baseRefreshView = new SimpleRefreshHeader(getContext(), mInflater);
+        baseRefreshView.hintAll();
+        return baseRefreshView;
+    }
+
+    @Override
+    protected BaseRefreshView getFooter(LayoutInflater mInflater) {
+        return new SimpleRefreshFooter(getContext(), mInflater);
+    }
+}

BIN
app_third/recyclerlibrary/src/main/res/drawable-hdpi/loading_01.png


BIN
app_third/recyclerlibrary/src/main/res/drawable-hdpi/loading_02.png


BIN
app_third/recyclerlibrary/src/main/res/drawable-hdpi/loading_03.png


BIN
app_third/recyclerlibrary/src/main/res/drawable-hdpi/loading_04.png


BIN
app_third/recyclerlibrary/src/main/res/drawable-hdpi/loading_05.png


BIN
app_third/recyclerlibrary/src/main/res/drawable-hdpi/loading_06.png


BIN
app_third/recyclerlibrary/src/main/res/drawable-hdpi/loading_07.png


BIN
app_third/recyclerlibrary/src/main/res/drawable-hdpi/loading_08.png


BIN
app_third/recyclerlibrary/src/main/res/drawable-hdpi/loading_09.png


BIN
app_third/recyclerlibrary/src/main/res/drawable-hdpi/loading_10.png


BIN
app_third/recyclerlibrary/src/main/res/drawable-hdpi/loading_11.png


BIN
app_third/recyclerlibrary/src/main/res/drawable-hdpi/loading_12.png


BIN
app_third/recyclerlibrary/src/main/res/drawable-hdpi/pull_down.png


BIN
app_third/recyclerlibrary/src/main/res/drawable-hdpi/pull_up.png


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