Преглед изворни кода

提交类型 修复bug
提交内容 处理首页显示图标错乱的问题

Bitliker пре 7 година
родитељ
комит
f2fb50b05b
99 измењених фајлова са 2155 додато и 512 уклоњено
  1. 2 2
      WeiChat/build.gradle
  2. BIN
      WeiChat/src/main/assets/gif_splash_welcome.gif
  3. 158 22
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/SplashActivity.java
  4. 1 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/circle/BusinessCircleActivity.java
  5. 12 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/secretary/BookingAddActivity.java
  6. 0 4
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/fragment/WorkPlatFragment.java
  7. 6 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/me/MeFragment.java
  8. 1 1
      WeiChat/src/main/res/drawable/shape_brounds_bottom.xml
  9. 7 7
      WeiChat/src/main/res/layout/activity_booking_list.xml
  10. 40 49
      WeiChat/src/main/res/layout/layout_menu_send_qzone_message.xml
  11. 1 1
      WeiChat/src/main/res/values-zh-rCN/strings.xml
  12. 1 1
      WeiChat/src/main/res/values/strings.xml
  13. 1 1
      WeiChat/src/main/res/values/styles.xml
  14. 3 3
      WeiChat/version.properties
  15. 10 0
      app_core/common/src/main/assets/work_menu.json
  16. 10 0
      app_core/common/src/main/assets/work_menu_b2b.json
  17. 11 0
      app_core/common/src/main/assets/work_menu_personal.json
  18. 58 3
      app_core/common/src/main/java/com/common/file/FileUtils.java
  19. 7 1
      app_core/common/src/main/java/com/core/app/Constants.java
  20. 34 45
      app_core/common/src/main/java/com/core/net/http/ViewUtil.java
  21. 43 32
      app_core/common/src/main/res/drawable/bg_bule_btn.xml
  22. 1 1
      app_core/common/src/main/res/drawable/shape_brounds_bottom.xml
  23. 2 1
      app_core/common/src/main/res/layout/activity_setting.xml
  24. 1 0
      app_core/common/src/main/res/layout/base_bar_layout.xml
  25. 40 49
      app_core/common/src/main/res/layout/layout_menu_send_qzone_message.xml
  26. 1 0
      app_core/common/src/main/res/layout/pop_dialog_list.xml
  27. 1 1
      app_core/common/src/main/res/menu/menu_list.xml
  28. 1 0
      app_core/common/src/main/res/values-en/strings.xml
  29. 6 3
      app_core/common/src/main/res/values-v21/styles.xml
  30. 2 1
      app_core/common/src/main/res/values-zh-rCN/strings.xml
  31. 1 0
      app_core/common/src/main/res/values-zh-rTW/strings.xml
  32. 2 1
      app_core/common/src/main/res/values/strings.xml
  33. 42 0
      app_core/network/src/main/java/com/me/network/app/base/HttpParams.java
  34. 3 0
      app_core/network/src/main/java/com/me/network/app/http/HttpRequest.java
  35. 6 0
      app_modular/appbooking/src/main/java/com/modular/booking/activity/business/BBookingAddActivity.java
  36. 1 1
      app_modular/appbooking/src/main/java/com/modular/booking/adapter/ItemPopListAdapter.java
  37. 1 1
      app_modular/appbooking/src/main/res/layout/item_pop_list_select.xml
  38. 48 35
      app_modular/appme/src/main/java/com/uas/appme/settings/activity/SettingActivity.java
  39. 12 1
      app_modular/appme/src/main/res/drawable/bg_bule_btn.xml
  40. 8 8
      app_modular/appme/src/main/res/menu/bsetting_more.xml
  41. 1 1
      app_modular/appme/src/main/res/values-en/strings.xml
  42. 1 1
      app_modular/appme/src/main/res/values/strings.xml
  43. 9 7
      app_modular/appmessages/src/main/AndroidManifest.xml
  44. 20 23
      app_modular/appmessages/src/main/java/com/modular/appmessages/activity/Subscription2Activity.java
  45. 1 0
      app_modular/appmusic/.gitignore
  46. 24 0
      app_modular/appmusic/build.gradle
  47. 25 0
      app_modular/appmusic/proguard-rules.pro
  48. 26 0
      app_modular/appmusic/src/androidTest/java/com/usoftchina/music/ExampleInstrumentedTest.java
  49. 18 0
      app_modular/appmusic/src/main/AndroidManifest.xml
  50. 67 0
      app_modular/appmusic/src/main/java/com/lg/lrcview_master/DefaultLrcParser.java
  51. 13 0
      app_modular/appmusic/src/main/java/com/lg/lrcview_master/ILrcParser.java
  52. 35 0
      app_modular/appmusic/src/main/java/com/lg/lrcview_master/ILrcView.java
  53. 118 0
      app_modular/appmusic/src/main/java/com/lg/lrcview_master/LrcRow.java
  54. 466 0
      app_modular/appmusic/src/main/java/com/lg/lrcview_master/LrcView.java
  55. 271 0
      app_modular/appmusic/src/main/java/com/usoftchina/pay/MainMusicActivity.java
  56. BIN
      app_modular/appmusic/src/main/res/drawable-hdpi/back_black.png
  57. BIN
      app_modular/appmusic/src/main/res/drawable-hdpi/bg_music.jpg
  58. BIN
      app_modular/appmusic/src/main/res/drawable-hdpi/bg_yingtang_music.png
  59. BIN
      app_modular/appmusic/src/main/res/drawable-hdpi/ic_launcher.png
  60. BIN
      app_modular/appmusic/src/main/res/drawable-hdpi/ic_player_seeker.png
  61. BIN
      app_modular/appmusic/src/main/res/drawable-hdpi/icon_music_yingtang.png
  62. BIN
      app_modular/appmusic/src/main/res/drawable-hdpi/music_paying.png
  63. BIN
      app_modular/appmusic/src/main/res/drawable-hdpi/music_start.png
  64. BIN
      app_modular/appmusic/src/main/res/drawable-hdpi/music_top.png
  65. BIN
      app_modular/appmusic/src/main/res/drawable-xhdpi/back_black.png
  66. BIN
      app_modular/appmusic/src/main/res/drawable-xhdpi/ic_launcher.png
  67. BIN
      app_modular/appmusic/src/main/res/drawable-xhdpi/music_paying.png
  68. BIN
      app_modular/appmusic/src/main/res/drawable-xhdpi/music_start.png
  69. BIN
      app_modular/appmusic/src/main/res/drawable-xxhdpi/back_black.png
  70. BIN
      app_modular/appmusic/src/main/res/drawable-xxhdpi/ic_launcher.png
  71. BIN
      app_modular/appmusic/src/main/res/drawable-xxhdpi/music_paying.png
  72. BIN
      app_modular/appmusic/src/main/res/drawable-xxhdpi/music_start.png
  73. 18 0
      app_modular/appmusic/src/main/res/drawable/layer_list_progrssbar_play_bottom.xml
  74. 11 0
      app_modular/appmusic/src/main/res/drawable/layer_list_thumb_playing_default.xml
  75. 10 0
      app_modular/appmusic/src/main/res/drawable/layer_list_thumb_playing_press.xml
  76. 10 0
      app_modular/appmusic/src/main/res/drawable/selector_btn.xml
  77. 6 0
      app_modular/appmusic/src/main/res/drawable/selector_progress_bar_playing.xml
  78. 9 0
      app_modular/appmusic/src/main/res/drawable/shape_btn_n.xml
  79. 9 0
      app_modular/appmusic/src/main/res/drawable/shape_btn_p.xml
  80. 9 0
      app_modular/appmusic/src/main/res/drawable/shape_btn_u.xml
  81. 10 0
      app_modular/appmusic/src/main/res/drawable/shape_toast_bg.xml
  82. 101 0
      app_modular/appmusic/src/main/res/layout/activity_main_music.xml
  83. 18 0
      app_modular/appmusic/src/main/res/layout/seekbar.xml
  84. 16 0
      app_modular/appmusic/src/main/res/layout/toast.xml
  85. BIN
      app_modular/appmusic/src/main/res/raw/yingtang.mp3
  86. 33 0
      app_modular/appmusic/src/main/res/raw/yingtanglrc.lrc
  87. 3 0
      app_modular/appmusic/src/main/res/values/strings.xml
  88. 17 0
      app_modular/appmusic/src/test/java/com/usoftchina/music/ExampleUnitTest.java
  89. 25 14
      app_modular/apputils/src/main/res/layout/item_select_alert_pop.xml
  90. 3 0
      app_modular/appworks/src/main/AndroidManifest.xml
  91. 2 1
      app_modular/appworks/src/main/java/com/uas/appworks/OA/erp/activity/ExpenseReimbursementActivity.java
  92. 9 14
      app_modular/appworks/src/main/java/com/uas/appworks/OA/erp/activity/FlightsActivity.java
  93. 30 32
      app_modular/appworks/src/main/java/com/uas/appworks/OA/erp/activity/OfficeAddressSettingsActivity.java
  94. 27 27
      app_modular/appworks/src/main/java/com/uas/appworks/OA/erp/activity/SignSeniorSettingActivity.java
  95. 16 19
      app_modular/appworks/src/main/java/com/uas/appworks/OA/erp/activity/WorkDailyShowActivity.java
  96. 73 89
      app_modular/appworks/src/main/java/com/uas/appworks/OA/erp/activity/WorkReportAddActivity.java
  97. 3 1
      app_modular/appworks/src/main/java/com/uas/appworks/OA/platform/activity/PurchaseDetailsActivity.java
  98. 5 4
      app_modular/appworks/src/main/java/com/uas/appworks/activity/CustomerInquiryDetailActivity.java
  99. 2 2
      settings.gradle

+ 2 - 2
WeiChat/build.gradle

@@ -167,7 +167,7 @@ dependencies {
     androidTestCompile deps.leakcanaryNp
     debugCompile deps.leakcanary
     releaseCompile deps.leakcanaryNp
-    //project
+  
     compile project(':common')
     compile project(':appmessages')
     compile project(':network')
@@ -178,7 +178,7 @@ dependencies {
     compile project(':appme')
     compile project(':appworks')
     compile project(':appbooking')
-//    compile project(':android-pdf-viewer')
+    compile project(':appmusic')
     compile project(':apputils')
     compile 'com.android.support.constraint:constraint-layout:1.0.2'
     compile 'com.android.support:support-v4:26.+'

BIN
WeiChat/src/main/assets/gif_splash_welcome.gif


+ 158 - 22
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/SplashActivity.java

@@ -3,6 +3,7 @@ package com.xzjmyk.pm.activity.ui;
 import android.Manifest;
 import android.annotation.SuppressLint;
 import android.content.Intent;
+import android.graphics.Bitmap;
 import android.os.Bundle;
 import android.os.Handler;
 import android.text.TextUtils;
@@ -13,11 +14,13 @@ import android.view.animation.AnimationUtils;
 import android.widget.RelativeLayout;
 
 import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.android.volley.Response;
 import com.android.volley.VolleyError;
 import com.common.LogUtil;
 import com.common.data.JSONUtil;
+import com.common.file.FileUtils;
 import com.common.hmac.Md5Util;
 import com.common.preferences.PreferenceUtils;
 import com.common.system.SystemUtil;
@@ -29,6 +32,8 @@ import com.core.dao.UserDao;
 import com.core.model.ConfigBean;
 import com.core.model.LoginRegisterResult;
 import com.core.model.User;
+import com.core.net.ProgressDownloader;
+import com.core.net.ProgressResponseBody;
 import com.core.net.volley.ObjectResult;
 import com.core.net.volley.Result;
 import com.core.net.volley.StringJsonObjectRequest;
@@ -46,7 +51,10 @@ import com.xzjmyk.pm.activity.R;
 import com.xzjmyk.pm.activity.ui.erp.activity.ADActivity;
 import com.xzjmyk.pm.activity.ui.me.TimeStatisticsActivity;
 
+import java.io.File;
+import java.io.IOException;
 import java.util.HashMap;
+import java.util.List;
 
 import pl.droidsonroids.gif.AnimationListener;
 import pl.droidsonroids.gif.GifDrawable;
@@ -58,7 +66,7 @@ import pl.droidsonroids.gif.GifImageView;
  * @author Dean Tao
  * @version 1.0
  */
-public class SplashActivity extends BaseActivity {
+public class SplashActivity extends BaseActivity implements ProgressResponseBody.ProgressListener {
     private RelativeLayout mSelectLv;
     private GifImageView mGifImageView;
     private final String IS_FIRST = "IS_FIRST";
@@ -67,6 +75,9 @@ public class SplashActivity extends BaseActivity {
     private boolean mConfigReady = false;// 配置获取成功
     private GifDrawable mGifDrawable;
     private boolean mAnimationCompleted = false;
+    private ProgressDownloader mDownloader;
+    private String mSplshUrl;
+    private long mStartTime;
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
@@ -75,38 +86,135 @@ public class SplashActivity extends BaseActivity {
         getSupportActionBar().hide();
         StatusBarUtil.immersive(this, 0x00000000, 0.0f);
 
+        mStartTime = System.currentTimeMillis();
         new Handler().postDelayed(new Runnable() {
             @Override
             public void run() {
                 jump();
             }
-        }, 3000);
+        }, 2500);
         mGifImageView = findViewById(R.id.splash_gif_view);
+        showSplash();
+        mSelectLv = (RelativeLayout) findViewById(R.id.select_lv);
+        mSelectLv.setVisibility(View.INVISIBLE);
+        initConfig();// 初始化配置
+        updateAccountToken();//更新账户中心token
+        requestSplash();
+    }
+
+    private void showSplash() {
         try {
-            mGifDrawable = new GifDrawable(getAssets(), "gif_splash_welcome.gif");
-            mGifDrawable.setLoopCount(1);
-            mGifDrawable.setSpeed(1f);
-            mGifDrawable.addAnimationListener(new AnimationListener() {
-                @Override
-                public void onAnimationCompleted(int loopNumber) {
-                    Log.d("gifdrawable", "AnimationCompleted");
-                    mAnimationCompleted = true;
-                    if (isJumpable) {
-                        jump();
+            List<String> pictures = FileUtils.getPictures(Constants.SPLASH_FILE_PATH);
+            if (pictures != null && pictures.size() > 0) {
+                String localSplash = pictures.get(0);
+                int dotIndex = localSplash.lastIndexOf(".");
+                if (dotIndex >= 0) {
+                    String resExtension = localSplash.substring(dotIndex + 1).toLowerCase();
+                    if ("gif".equals(resExtension)) {
+                        mGifDrawable = new GifDrawable(new File(localSplash));
+                    } else {
+                        Bitmap localBitmap = FileUtils.getLocalBitmap(localSplash);
+                        mGifImageView.setImageBitmap(localBitmap);
+                        mAnimationCompleted = true;
+                        return;
                     }
+                } else {
+                    mGifDrawable = new GifDrawable(getAssets(), "gif_splash_welcome.gif");
                 }
-            });
-            mGifImageView.setImageDrawable(mGifDrawable);
-
-            mGifDrawable.start();
+            } else {
+                mGifDrawable = new GifDrawable(getAssets(), "gif_splash_welcome.gif");
+            }
         } catch (Exception e) {
+            try {
+                mGifDrawable = new GifDrawable(getAssets(), "gif_splash_welcome.gif");
+            } catch (IOException e1) {
+            }
+        }
+        mGifDrawable.setLoopCount(1);
+        mGifDrawable.setSpeed(1f);
+        mGifDrawable.addAnimationListener(new AnimationListener() {
+            @Override
+            public void onAnimationCompleted(int loopNumber) {
+                mAnimationCompleted = true;
+                if (isJumpable) {
+                    jump();
+                }
+            }
+        });
+        mGifImageView.setImageDrawable(mGifDrawable);
+        mGifDrawable.start();
+    }
 
+    private void requestSplash() {
+        if (!CommonUtil.isNetWorkConnected(mContext)) {
+            return;
         }
+        HttpRequest.getInstance().sendRequest(Constants.IM_BASE_URL,
+                new HttpParams.Builder()
+                        .url("user/appStart")
+                        .method(Method.GET)
+                        .addParam("token", 1)
+                        .build(), new HttpCallback() {
+                    @Override
+                    public void onSuccess(int flag, Object o) throws Exception {
+                        try {
+                            String result = o.toString();
+                            if (JSONUtil.validate(result)) {
+                                JSONObject resultObject = JSON.parseObject(result);
+                                JSONArray resArray = resultObject.getJSONArray("result");
+                                if (resArray != null && resArray.size() > 0) {
+                                    JSONObject resObject = resArray.getJSONObject(0);
+                                    String resUrl = JSONUtil.getText(resObject, "aa_urlc");
+                                    if (!TextUtils.isEmpty(resUrl)) {
+                                        String oldUrl = CommonUtil.getSharedPreferences(mContext, Constants.CACHE.CACHE_SPLASH_URL);
+                                        if (resUrl.equals(oldUrl)) {
+                                            return;
+                                        } else {
+                                            initSplashDir();
+                                            mSplshUrl = resUrl;
+                                            downloadSplash(resUrl);
+                                        }
+                                    } else {
+                                        initSplashDir();
+                                        CommonUtil.setSharedPreferences(mContext, Constants.CACHE.CACHE_SPLASH_URL, "");
+                                    }
+                                } else {
+                                    initSplashDir();
+                                    CommonUtil.setSharedPreferences(mContext, Constants.CACHE.CACHE_SPLASH_URL, "");
+                                }
+                            }
+                        } catch (Exception e) {
+                        }
+                    }
 
-        mSelectLv = (RelativeLayout) findViewById(R.id.select_lv);
-        mSelectLv.setVisibility(View.INVISIBLE);
-        initConfig();// 初始化配置
-        updateAccountToken();//更新账户中心token
+                    @Override
+                    public void onFail(int flag, String failStr) throws Exception {
+                    }
+                });
+    }
+
+    private void initSplashDir() {
+        File directory = new File(Constants.SPLASH_FILE_PATH);
+        if (!directory.exists() && !directory.isDirectory()) {
+            boolean mkdirs = directory.mkdirs();
+        } else {
+            CommonUtil.delAllFile(Constants.SPLASH_FILE_PATH);
+        }
+    }
+
+    private void downloadSplash(String resUrl) {
+        int dotIndex = resUrl.lastIndexOf(".");
+        if (dotIndex >= 0) {
+            String resExtension = resUrl.substring(dotIndex);
+            File splashFile = new File(Constants.SPLASH_FILE_PATH, Constants.SPLASH_FILE_NAME + resExtension);
+            try {
+                splashFile.createNewFile();
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+            mDownloader = new ProgressDownloader(resUrl, splashFile, SplashActivity.this);
+            mDownloader.download(0L);
+        }
     }
 
     @Override
@@ -192,6 +300,18 @@ public class SplashActivity extends BaseActivity {
             return;
         }
 
+        long currentTime = System.currentTimeMillis();
+        long duration = currentTime - mStartTime;
+        if (duration < 2500) {
+            new Handler().postDelayed(new Runnable() {
+                @Override
+                public void run() {
+                    jump();
+                }
+            }, 2500 - duration);
+            return;
+        }
+
         int userStatus = LoginHelper.prepareUser(mContext);
         switch (userStatus) {
             case LoginHelper.STATUS_USER_FULL://5
@@ -340,7 +460,23 @@ public class SplashActivity extends BaseActivity {
     @Override
     protected void onDestroy() {
         super.onDestroy();
-        mGifDrawable.recycle();
-        mGifDrawable = null;
+        if (mGifDrawable != null) {
+            mGifDrawable.recycle();
+            mGifDrawable = null;
+        }
+    }
+
+    @Override
+    public void onPreExecute(long contentLength) {
+
+    }
+
+    @Override
+    public void update(long totalBytes, boolean done) {
+        if (done) {
+            if (!TextUtils.isEmpty(mSplshUrl)) {
+                CommonUtil.setSharedPreferences(mContext, Constants.CACHE.CACHE_SPLASH_URL, mSplshUrl);
+            }
+        }
     }
 }

+ 1 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/circle/BusinessCircleActivity.java

@@ -197,7 +197,7 @@ public class BusinessCircleActivity extends BaseActivity implements showCEView {
         sendqzonecancel_tv = (TextView) mMoreMenuView.findViewById(R.id.send_qzone_cancel);
         mMoreWindow = new PopupWindow(mMoreMenuView, LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT, true);
         mMoreWindow.setAnimationStyle(R.style.MenuAnimationFade);
-        mMoreWindow.setBackgroundDrawable(new BitmapDrawable());
+        mMoreWindow.setBackgroundDrawable(mContext.getResources().getDrawable(com.uas.appme.R.drawable.bg_popuwin));
         mMoreWindow.setOnDismissListener(new PopupWindow.OnDismissListener() {
             @Override
             public void onDismiss() {

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

@@ -87,7 +87,7 @@ public class BookingAddActivity extends SupportToolBarActivity implements  View.
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_book_add);
-       setTitle(getString(R.string.booking_add));
+        setTitle(getString(R.string.booking_add));
         tvBookObject =findViewById(R.id.tv_book_object);
         companyAddRl =findViewById(R.id.company_add_rl);
         tvBookTimes =findViewById(R.id.tv_book_times);
@@ -270,6 +270,12 @@ public class BookingAddActivity extends SupportToolBarActivity implements  View.
             bt_commit.setEnabled(true);
             return;
         }
+
+        if (StringUtil.isEmpty(tv_book_topic.getText().toString())) {
+            ToastMessage("请选择预约地址!");
+            bt_commit.setEnabled(true);
+            return;
+        }
 //        showLoading();
         String content = "";
         content = et_book_content.getText().toString();
@@ -332,6 +338,11 @@ public class BookingAddActivity extends SupportToolBarActivity implements  View.
             bt_commit.setEnabled(true);
             return;
         }
+        if (StringUtil.isEmpty(tv_book_topic.getText().toString())) {
+            ToastMessage("请选择预约地址!");
+            bt_commit.setEnabled(true);
+            return;
+        }
 //        showLoading();
         String content = "";
         content = et_book_content.getText().toString();

+ 0 - 4
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/fragment/WorkPlatFragment.java

@@ -158,8 +158,6 @@ public class WorkPlatFragment extends BaseMVPFragment<WorkPlatPresenter> impleme
 
                 @Override
                 public void onHeaderPulling(RefreshHeader header, float percent, int offset, int headerHeight, int extendHeight) {
-                    Log.d("工作台下拉", "offset->" + offset + "||percent->" + percent + "||headerHeight->" + headerHeight + "||extendHeight->" + extendHeight);
-
                     ViewGroup.LayoutParams layoutParams = mHeaderRelativeLayout.getLayoutParams();
                     layoutParams.height = (int) (mHeaderHeight * (1 + percent));
                     mHeaderRelativeLayout.setLayoutParams(layoutParams);
@@ -169,8 +167,6 @@ public class WorkPlatFragment extends BaseMVPFragment<WorkPlatPresenter> impleme
 
                 @Override
                 public void onHeaderReleasing(RefreshHeader header, float percent, int offset, int headerHeight, int extendHeight) {
-                    Log.d("工作台释放", "offset->" + offset + "||percent->" + percent + "||headerHeight->" + headerHeight + "||extendHeight->" + extendHeight);
-
                     ViewGroup.LayoutParams layoutParams = mHeaderRelativeLayout.getLayoutParams();
                     layoutParams.height = (int) (mHeaderHeight * (1 + percent));
                     mHeaderRelativeLayout.setLayoutParams(layoutParams);

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

@@ -480,6 +480,9 @@ public class MeFragment extends EasyFragment implements View.OnClickListener, On
                     showToact(R.string.networks_out);
                     return;
                 }
+                if (DialogUtils.isDialogShowing(ViewUtil.popupWindow)){
+                    ViewUtil.popupWindow.dismiss();
+                }
                 if (DialogUtils.isDialogShowing(popupWindow)){
                     popupWindow.dismiss();
                 }
@@ -494,6 +497,9 @@ public class MeFragment extends EasyFragment implements View.OnClickListener, On
                     if (DialogUtils.isDialogShowing(ViewUtil.popupWindow)){
                         ViewUtil.popupWindow.dismiss();
                     }
+                    if (DialogUtils.isDialogShowing(popupWindow)){
+                        popupWindow.dismiss();
+                    }
                     changeMaster();
                 }
                 break;

+ 1 - 1
WeiChat/src/main/res/drawable/shape_brounds_bottom.xml

@@ -15,7 +15,7 @@
             <item android:bottom="0.0dp" android:left="-2.7dp" android:right="-2.7dp" android:top="-2.7dp">
                 <shape>
                     <solid android:color="@color/white" />
-                    <stroke android:width="2.5dp" android:color="@color/yellow_home" />
+                    <stroke android:width="2.5dp" android:color="#1084D1" />
                 </shape>
             </item>
         </layer-list>

+ 7 - 7
WeiChat/src/main/res/layout/activity_booking_list.xml

@@ -46,7 +46,7 @@
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:orientation="horizontal"
-            android:background="#FFFFFF"
+            android:background="#F4F4F4"
             android:paddingTop="10dp"
             android:paddingBottom="10dp">
             <RelativeLayout
@@ -208,17 +208,17 @@
                 android:textSize="@dimen/text_main" />
         </LinearLayout>
 
-        <android.support.v4.view.ViewPager
-            android:id="@+id/viewPager"
-            android:layout_width="match_parent"
-            android:layout_height="200dp" 
-            android:background="@color/white"/>
-
         <View
             android:layout_width="match_parent"
             android:layout_height="2px"
             android:background="@color/item_line" />
 
+        <android.support.v4.view.ViewPager
+            android:id="@+id/viewPager"
+            android:layout_width="match_parent"
+            android:layout_height="200dp"
+            android:background="@color/white" />
+
         <com.core.widget.MyListView
             android:id="@+id/lv_book"
             android:layout_width="match_parent"

+ 40 - 49
WeiChat/src/main/res/layout/layout_menu_send_qzone_message.xml

@@ -1,54 +1,45 @@
 <?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:orientation="vertical"
-    android:background="@color/white">
+<LinearLayout
+    style="@style/commonPopView"
+    xmlns:android="http://schemas.android.com/apk/res/android">
 
-    <TextView
-        android:id="@+id/send_qzone_text"
+    <LinearLayout
         android:layout_width="match_parent"
-        android:layout_height="45dp"
-        android:gravity="center"
-        android:text="@string/qzone_send_word"
-        android:textColor="@color/black"
-        android:textSize="15sp"/>
-    <View
-        android:layout_width="match_parent"
-        android:layout_height="0.3dp"
-        android:background="@color/button_invalid"/>
-    <TextView
-        android:id="@+id/send_qzone_picture"
-        android:layout_width="match_parent"
-        android:layout_height="45dp"
-        android:gravity="center"
-        android:text="@string/qzone_send_picture"
-        android:textColor="@color/black"
-        android:textSize="15sp"/>
-
-    <View
-        android:layout_width="match_parent"
-        android:layout_height="0.3dp"
-        android:background="@color/button_invalid"/>
-    <TextView
-        android:id="@+id/send_qzone_video"
-        android:layout_width="match_parent"
-        android:layout_height="45dp"
-        android:gravity="center"
-        android:textColor="@color/black"
-        android:text="@string/qzone_send_video"
-        android:textSize="15sp"/>
-    <View
-        android:layout_width="match_parent"
-        android:layout_height="10dp"
-        android:background="@color/black_gray"/>
-    <TextView
-        android:id="@+id/send_qzone_cancel"
-        android:layout_width="match_parent"
-        android:layout_height="45dp"
-        android:gravity="center"
-        android:textColor="@color/black"
-        android:text="@string/common_cancel"
-        android:textSize="15sp"/>
+        android:layout_height="wrap_content"
+        android:background="@drawable/shape_common_pop_option_item"
+        android:orientation="vertical">
+        <TextView
+            android:id="@+id/send_qzone_text"
+            style="@style/commonPopItemTop"
+            android:text="@string/qzone_send_word"
+            />
+        <View
+            android:layout_width="match_parent"
+            android:layout_height="0.3dp"
+            android:background="@color/button_invalid"/>
+        <TextView
+            android:id="@+id/send_qzone_picture"
+            style="@style/commonPopItem"
+            android:text="@string/qzone_send_picture"
+            />
 
+        <View
+            android:layout_width="match_parent"
+            android:layout_height="0.3dp"
+            android:background="@color/button_invalid"/>
+        <TextView
+            android:id="@+id/send_qzone_video"
+            style="@style/commonPopItem"
+            android:text="@string/qzone_send_video"
+            />
+        <View
+            android:layout_width="match_parent"
+            android:layout_height="10dp"
+            android:background="@color/black_gray"/>
+        <TextView
+            android:id="@+id/send_qzone_cancel"
+            style="@style/commonPopCancelItem"
+            android:text="@string/common_cancel"
+            />
+    </LinearLayout>
 </LinearLayout>

+ 1 - 1
WeiChat/src/main/res/values-zh-rCN/strings.xml

@@ -1166,7 +1166,7 @@
     <string name="c_photo_album">相册</string>
     <string name="c_photo_album_failed">选择失败</string>
     <string name="c_crop_failed">裁减失败</string>
-    <string name="exit_tips">确定退出此账号吗?</string>
+    <string name="exit_tips">确定退出此账号吗?</string>
     <string name="watting">等待</string>
     <string name="approvel">审批</string>
     <string name="Did_not_pass">未通过</string>

+ 1 - 1
WeiChat/src/main/res/values/strings.xml

@@ -376,7 +376,7 @@
     <string name="use_help">用户反馈</string>
     <string name="about_us">关于UU互联</string>
     <string name="app_version">当前版本</string>
-    <string name="exit_tips">确定退出此账号吗?</string>
+    <string name="exit_tips">确定退出此账号吗?</string>
     <string name="exit_current_account">退出登录</string>
     <string name="deleteing">删除中&#8230;</string>
     <string name="clear_completed">清除完毕</string>

+ 1 - 1
WeiChat/src/main/res/values/styles.xml

@@ -998,7 +998,7 @@
     </style>
 
     <!--TabPageIndicatorStyle-->
-    <style name="StyledIndicators" parent="@style/AppTheme">
+    <style name="StyledIndicators" parent="@style/MainBaseTheme">
         <item name="vpiTabPageIndicatorStyle">@style/CustomTabPageIndicator</item>
         <item name="vpiUnderlinePageIndicatorStyle">@style/CustomUnderlinePageIndicator</item>
     </style>

+ 3 - 3
WeiChat/version.properties

@@ -1,5 +1,5 @@
-#Tue May 22 17:48:24 CST 2018
-debugName=322
+#Thu May 24 16:37:00 CST 2018
+debugName=376
 versionName=630
-debugCode=322
+debugCode=376
 versionCode=170

+ 10 - 0
app_core/common/src/main/assets/work_menu.json

@@ -55,6 +55,16 @@
         "menuUrl": "",
         "caller": "",
         "isHide": false
+      },
+      {
+        "isLocalMenu": true,
+        "menuName": "str_work_yingtang_song",
+        "menuIcon": "icon_music_yingtang",
+        "menuActivity": "com.usoftchina.pay.MainMusicActivity",
+        "menuTag": "local_yingtang_song",
+        "menuUrl": "",
+        "caller": "",
+        "isHide": false
       }
     ]
   },

+ 10 - 0
app_core/common/src/main/assets/work_menu_b2b.json

@@ -55,6 +55,16 @@
         "menuUrl": "",
         "caller": "",
         "isHide": false
+      },
+      {
+        "isLocalMenu": true,
+        "menuName": "str_work_yingtang_song",
+        "menuIcon": "icon_music_yingtang",
+        "menuActivity": "com.usoftchina.pay.MainMusicActivity",
+        "menuTag": "local_yingtang_song",
+        "menuUrl": "",
+        "caller": "",
+        "isHide": false
       }
     ]
   },

+ 11 - 0
app_core/common/src/main/assets/work_menu_personal.json

@@ -56,6 +56,17 @@
         "caller": "",
         "isHide": false
       }
+    ,
+      {
+        "isLocalMenu": true,
+        "menuName": "str_work_yingtang_song",
+        "menuIcon": "icon_music_yingtang",
+        "menuActivity": "com.usoftchina.pay.MainMusicActivity",
+        "menuTag": "local_yingtang_song",
+        "menuUrl": "",
+        "caller": "",
+        "isHide": false
+      }
     ]
   }
 ]

+ 58 - 3
app_core/common/src/main/java/com/common/file/FileUtils.java

@@ -1,6 +1,8 @@
 package com.common.file;
 
 import android.content.Intent;
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
 import android.net.Uri;
 import android.os.Environment;
 import android.util.Log;
@@ -13,6 +15,8 @@ import java.io.FileNotFoundException;
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.text.DecimalFormat;
+import java.util.ArrayList;
+import java.util.List;
 
 /**
  * Created by Bitliker on 2017/8/10.
@@ -46,10 +50,10 @@ public class FileUtils {
     public static String getMIMEType(File f) {
         String type = "";
         String fName = f.getName();
-      /* 取得扩展名 */
+        /* 取得扩展名 */
         String end = fName.substring(fName.lastIndexOf(".") + 1, fName.length()).toLowerCase();
 
-      /* 依扩展名的类型决定MimeType */
+        /* 依扩展名的类型决定MimeType */
         if (end.equals("pdf")) {
             type = "application/pdf";//
         } else if (end.equals("m4a") || end.equals("mp3") || end.equals("mid") ||
@@ -63,7 +67,7 @@ public class FileUtils {
         } else if (end.equals("apk")) {
             type = "application/vnd.android.package-archive";
         } else {
-        /*如果无法直接打开,就跳出软件列表给用户选择 */
+            /*如果无法直接打开,就跳出软件列表给用户选择 */
             type = "*/*";
         }
         LogUtil.d("下载文件类型:" + type);
@@ -234,4 +238,55 @@ public class FileUtils {
             Log.e("deleteFileOrDir", "delete file no exists " + file.getAbsolutePath());
         }
     }
+
+    /**
+     * 获取SDCard中某个目录下图片路径集合
+     */
+
+    public static List<String> getPictures(final String strPath) {
+        try {
+            List<String> list = new ArrayList<String>();
+            File file = new File(strPath);
+            File[] allfiles = file.listFiles();
+            if (allfiles == null) {
+                return null;
+            }
+            for (int i = 0; i < allfiles.length; i++) {
+                final File fi = allfiles[i];
+                if (fi.isFile()) {
+                    int idx = fi.getPath().lastIndexOf(".");
+                    if (idx <= 0) {
+                        continue;
+                    }
+                    String suffix = fi.getPath().substring(idx);
+                    if (suffix.toLowerCase().equals(".jpg") ||
+                            suffix.toLowerCase().equals(".jpeg") ||
+                            suffix.toLowerCase().equals(".bmp") ||
+                            suffix.toLowerCase().equals(".png") ||
+                            suffix.toLowerCase().equals(".gif")) {
+                        list.add(fi.getPath());
+                    }
+                }
+            }
+            return list;
+        } catch (Exception e) {
+            return null;
+        }
+    }
+
+    /**
+     * 加载本地图片
+     *
+     * @param url
+     * @return
+     */
+    public static Bitmap getLocalBitmap(String url) {
+        try {
+            FileInputStream fis = new FileInputStream(url);
+            return BitmapFactory.decodeStream(fis);  ///把流转化为Bitmap图片
+        } catch (FileNotFoundException e) {
+            e.printStackTrace();
+            return null;
+        }
+    }
 }

+ 7 - 1
app_core/common/src/main/java/com/core/app/Constants.java

@@ -1,5 +1,7 @@
 package com.core.app;
 
+import android.os.Environment;
+
 import com.common.config.BaseConfig;
 import com.core.db.DatabaseTables;
 
@@ -10,7 +12,7 @@ public class Constants {
     public static final String BASE_URL_LOGIN = "http://manage.ubtob.com/public/account";
     //账户中心地址
     public static final String ACCOUNT_CENTER_HOST = "https://sso.ubtob.com/";
-//    public static final String ACCOUNT_CENTER_HOST = "http://10.1.51.50:3001/";
+    //    public static final String ACCOUNT_CENTER_HOST = "http://10.1.51.50:3001/";
     //    public static final String ACCOUNT_CENTER_HOST = "https://account.ubtob.com/";
     //IM正式地址
     public static final String IM_BASE_URL = "http://113.105.74.140:8092/";
@@ -472,6 +474,8 @@ public class Constants {
     public static String BASE_CHARIT_ACTIVITY_URL = "http://lj.ubtob.com/mobile#/activity/detail/";
     public static String BASE_CHARIT_PROJECT_URL = "http://lj.ubtob.com/mobile#/project/detail/";
 
+    public static String SPLASH_FILE_PATH = Environment.getExternalStorageDirectory().getAbsolutePath() + "/UU/splash";
+    public static String SPLASH_FILE_NAME = "splash";
 
     public interface FLAG {
         //webview Cookie缓存
@@ -547,5 +551,7 @@ public class Constants {
         String EN_BUSINESS_CODE = "en_business_code";
 
         String MODIFY_PASSWORD_VERIFY_CODE = "modify_password_verify_code";
+
+        String CACHE_SPLASH_URL = "cache_splash_url";
     }
 }

+ 34 - 45
app_core/common/src/main/java/com/core/net/http/ViewUtil.java

@@ -94,7 +94,6 @@ public class ViewUtil {
 
     public static void ToastMessage(Context cont, String msg) {
         ToastUtil.showToast(cont,msg);
-
     }
 
 
@@ -322,7 +321,7 @@ public class ViewUtil {
                             if (mdProcessDialog != null) {
                                 mdProcessDialog.dismiss();
                             }
-                            ToastUtil.showToast(ct, errorMsg);
+                            ToastMessage(MyApplication.getInstance(),errorMsg);
                         } else {
                             String loginToken = JSONUtil.getText(resultObject, "token");
                             CommonUtil.setSharedPreferences(ct, Constants.CACHE.ACCOUNT_CENTER_TOKEN, loginToken);
@@ -331,7 +330,7 @@ public class ViewUtil {
                                 String accounts = JSON.toJSONString(accountArray);
                                 LoginSucess(accounts, user_phone, user_password);
                             } else {
-                                ToastUtil.showToast(ct, "企业列表为空");
+                                ToastMessage(MyApplication.getInstance(),"企业列表为空");
                             }
                         }
                     }
@@ -342,7 +341,7 @@ public class ViewUtil {
                         if (mdProcessDialog != null) {
                             mdProcessDialog.dismiss();
                         }
-                        ToastUtil.showToast(ct, failStr);
+                        ToastMessage(MyApplication.getInstance(),failStr);
                     }
                 });
     }
@@ -527,7 +526,7 @@ public class ViewUtil {
                 ct.startActivity(new Intent("com.modular.main.DataDownloadActivity"));
             }
             CommonUtil.setSharedPreferences(ct, "erp_baseurl", erp_baseurl);
-        }else{
+        } else {
             if (!StringUtil.isEmpty(CommonUtil.getSharedPreferences(MyApplication.getInstance(), "erp_baseurl"))) {
             } else {
               MyApplication.getInstance().startActivity(new Intent("com.modular.main.DataDownloadActivity"));
@@ -639,8 +638,7 @@ public class ViewUtil {
     }
 
 
-   
-      /*@功能:管理平台的返回信息处理*/
+    /*@功能:管理平台的返回信息处理*/
     public static void LoginSucess(String json, String phone, String password) {
         CommonUtil.setSharedPreferences(ct, "loginJson", json);
         try {
@@ -654,7 +652,7 @@ public class ViewUtil {
                 }
             }
         } catch (Exception e) {
-             e.printStackTrace();
+            e.printStackTrace();
         }
         if (JSONUtil.validate(json)) {
             // showDialogCompany(json, phone, password);
@@ -665,7 +663,6 @@ public class ViewUtil {
     }
 
 
-
     public static void showLoginDialog(String loginResult, final String phone, final String password) {
         List<LoginEntity> loginMsg = JSON.parseArray(loginResult, LoginEntity.class);
         List<LoginEntity> loginEntities = new ArrayList<>();
@@ -723,16 +720,16 @@ public class ViewUtil {
             erpEntities = loginEntities;
             String[] items = new String[loginEntities.size()];
             int select = 0;
-            List<ItemsSelectType1> itemsSelectType1s=new ArrayList<>();
+            List<ItemsSelectType1> itemsSelectType1s = new ArrayList<>();
             for (int j = 0; j < loginEntities.size(); j++) {
-                ItemsSelectType1 model=new ItemsSelectType1();
+                ItemsSelectType1 model = new ItemsSelectType1();
                 model.setName(loginEntities.get(j).getName());
                 items[j] = loginEntities.get(j).getName();
                 itemsSelectType1s.add(model);
-                String companyName=CommonUtil.getSharedPreferences(MyApplication.getInstance(),"erp_commpany");
-                if (!StringUtil.isEmpty(companyName)){
-                    if (companyName.equals(loginEntities.get(j).getName())){
-                        selectId=j;
+                String companyName = CommonUtil.getSharedPreferences(MyApplication.getInstance(), "erp_commpany");
+                if (!StringUtil.isEmpty(companyName)) {
+                    if (companyName.equals(loginEntities.get(j).getName())) {
+                        selectId = j;
                     }
                 }
             }
@@ -743,8 +740,8 @@ public class ViewUtil {
 //                if (select > items.length) {
 //                    select = 0;
 //                }
-                popupWindow=null;
-                showPopDialog((Activity) ct,itemsSelectType1s,phone,password);
+                popupWindow = null;
+                showPopDialog((Activity) ct, itemsSelectType1s, phone, password);
 //                loginERPDialog = new MaterialDialog.Builder(ct)
 //                        .title(ct.getString(R.string.user_dialog_company))
 //                        .items(items)
@@ -763,22 +760,23 @@ public class ViewUtil {
 
 
     public static PopupWindow popupWindow = null;
-    public static int selectId=0;
+    public static int selectId = 0;
     public static ItemPopListAdapter adapter;
-    public static void  showPopDialog(final Activity ct, List<ItemsSelectType1> itemsSelectType1s
-    , final String phone, final String password){
-        erp_phone=phone;
-        erp_password=password;
+
+    public static void showPopDialog(final Activity ct, List<ItemsSelectType1> itemsSelectType1s
+            , final String phone, final String password) {
+        erp_phone = phone;
+        erp_password = password;
         View view = null;
-        if (DialogUtils.isDialogShowing(mdProcessDialog)){
+        if (DialogUtils.isDialogShowing(mdProcessDialog)) {
             mdProcessDialog.dismiss();
         }
-        WindowManager windowManager = (WindowManager)ct. getSystemService(Context.WINDOW_SERVICE);
+        WindowManager windowManager = (WindowManager) ct.getSystemService(Context.WINDOW_SERVICE);
         if (popupWindow == null) {
             LayoutInflater layoutInflater = (LayoutInflater) ct.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
             view = layoutInflater.inflate(R.layout.pop_dialog_list, null);
             ListView plist = view.findViewById(R.id.mList);
-            List<ItemsSelectType1> datas =itemsSelectType1s;
+            List<ItemsSelectType1> datas = itemsSelectType1s;
             adapter = new ItemPopListAdapter(ct, datas);
             adapter.setSelectId(selectId);
             plist.setAdapter(adapter);
@@ -792,11 +790,12 @@ public class ViewUtil {
                     selectId = position;
                     adapter.setSelectId(selectId);
                     adapter.notifyDataSetChanged();
-                    ItemPopListAdapter.ViewHolder viewHolder= (ItemPopListAdapter.ViewHolder) view.getTag();
-                    String text= viewHolder.tvItemName.getText().toString();
+                    ItemPopListAdapter.ViewHolder viewHolder = (ItemPopListAdapter.ViewHolder) view.getTag();
+                    String text = viewHolder.tvItemName.getText().toString();
                     selectCompanyItems(selectId, text, phone, password);
-                }});
-            popupWindow = new PopupWindow(view, windowManager.getDefaultDisplay().getWidth()- DensityUtil.dp2px(50), LinearLayout.LayoutParams.WRAP_CONTENT);
+                }
+            });
+            popupWindow = new PopupWindow(view, windowManager.getDefaultDisplay().getWidth() - DensityUtil.dp2px(50), LinearLayout.LayoutParams.WRAP_CONTENT);
         }
         popupWindow.setFocusable(true);
         popupWindow.setOutsideTouchable(true);
@@ -811,8 +810,7 @@ public class ViewUtil {
         popupWindow.setHeight(ViewGroup.LayoutParams.WRAP_CONTENT);
         popupWindow.showAtLocation(ct.getWindow().getDecorView(), Gravity.CENTER, 0, 0);
     }
-        
-  
+
 
     private static boolean selectCompanyItems(int which, CharSequence text, String phone, String password) {
         if (!CommonUtil.isNetWorkConnected(ct)) {
@@ -1191,25 +1189,16 @@ public class ViewUtil {
     }
 
     // 登录ERP
-    public static void LoginERPTask(String url, String enuu, String master, String username,
-                                    String password) {
+    public static void LoginERPTask(String url, String enuu, String master, String username, String password) {
         mdProcessDialog.setContent(MyApplication.getInstance().getString(R.string.login_progress_erp));
-//        url = url + "mobile/login.action";
-//        url = CommonUtil.getAppBaseUrl(MyApplication.getInstance()) + "mobile/login.action";
-//        Map<String, String> params = new HashMap<String, String>();
-//        params.put("username", username);
-//        params.put("password", password);
-//        params.put("master", master);
-//        LogUtil.i("login", "url=" + url);
-//        LogUtil.i("login", "params=" + JSONUtil.map2JSON(params));
-//        startNetThread(url, params, handler, Constants.SUCCESS_ERP, null, null, "post");
-//
         String loginToken = CommonUtil.getSharedPreferences(ct, Constants.CACHE.ACCOUNT_CENTER_TOKEN);
         HttpRequest.getInstance().sendRequest(url,
                 new HttpParams.Builder()
                         .url("mobile/login.action")
                         .addParam("token", loginToken)
                         .addParam("enuu", enuu)
+                        .connectTimeOut(5)
+                        .readTimeOut(5)
                         .method(Method.POST)
                         .build(), new HttpCallback() {
                     @Override
@@ -1222,8 +1211,8 @@ public class ViewUtil {
 
                     @Override
                     public void onFail(int flag, String failStr) throws Exception {
-                        Log.e("erp登录失败", "登录失败:"+failStr);
-                        ToastMessage(MyApplication.getInstance(),"登录失败:"+failStr);
+                        Log.e("erp登录失败", "登录失败:" + failStr);
+                        ToastMessage(MyApplication.getInstance(), "登录失败:" + failStr);
                         mdProcessDialog.setContent("登录失败");
                         new Handler().postDelayed(new Runnable() {
                             @Override

+ 43 - 32
app_core/common/src/main/res/drawable/bg_bule_btn.xml

@@ -1,35 +1,46 @@
 <?xml version="1.0" encoding="utf-8"?>
 <selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <item android:state_pressed="true">
-        <shape>
-            <solid android:color="@color/btn_orange_press" />
-            <corners android:radius="1dp" />
-            <padding android:bottom="0.5dp" android:left="0.5dp" android:right="0.5dp" android:top="0.5dp" />
-        </shape>
-    </item>
-    <item android:state_enabled="false">
-        <shape>
-            <solid android:color="@color/btn_orange_press" />
-            <corners android:radius="1dp" />
-            <padding android:bottom="0.5dp" android:left="0.5dp" android:right="0.5dp" android:top="0.5dp" />
-        </shape>
-    </item>
-    <item>
-        <shape android:shape="rectangle">
-            <corners
-                android:topLeftRadius="4dp"
-                android:topRightRadius="4dp"
-                android:bottomRightRadius="4dp"
-                android:bottomLeftRadius="4dp">
-            </corners>
-            <stroke
-                android:width="1dp"
-                android:color="#999999">
-            </stroke>
-            <solid
-                android:color="@color/titleBlue">
-            </solid>
-        </shape>
+    <item android:drawable="@drawable/shape_corner_deep_blue_bg" android:state_selected="true" />
+    <item android:drawable="@drawable/shape_corner_deep_blue_bg" android:state_pressed="true" />
+    <item android:drawable="@drawable/shape_corner_deep_blue_bg" android:state_checked="true" />
+    <item android:drawable="@drawable/shape_corner_shallow_blue_bg" android:state_enabled="true" />
+    <item android:drawable="@drawable/shape_corner_blue_unable_bg" android:state_enabled="false" />
+    <item android:drawable="@drawable/shape_corner_shallow_blue_bg" />
+</selector>
 
-    </item>
-</selector>
+    <!--
+    <?xml version="1.0" encoding="utf-8"?>
+    <selector xmlns:android="http://schemas.android.com/apk/res/android">
+        <item android:state_pressed="true">
+            <shape>
+                <solid android:color="@color/btn_orange_press" />
+                <corners android:radius="1dp" />
+                <padding android:bottom="0.5dp" android:left="0.5dp" android:right="0.5dp" android:top="0.5dp" />
+            </shape>
+        </item>
+        <item android:state_enabled="false">
+            <shape>
+                <solid android:color="@color/btn_orange_press" />
+                <corners android:radius="1dp" />
+                <padding android:bottom="0.5dp" android:left="0.5dp" android:right="0.5dp" android:top="0.5dp" />
+            </shape>
+        </item>
+        <item>
+            <shape android:shape="rectangle">
+                <corners
+                    android:topLeftRadius="4dp"
+                    android:topRightRadius="4dp"
+                    android:bottomRightRadius="4dp"
+                    android:bottomLeftRadius="4dp">
+                </corners>
+                <stroke
+                    android:width="1dp"
+                    android:color="#999999">
+                </stroke>
+                <solid
+                    android:color="@color/titleBlue">
+                </solid>
+            </shape>
+    
+        </item>
+    </selector>-->

+ 1 - 1
app_core/common/src/main/res/drawable/shape_brounds_bottom.xml

@@ -15,7 +15,7 @@
             <item android:bottom="0.0dp" android:left="-2.7dp" android:right="-2.7dp" android:top="-2.7dp">
                 <shape>
                     <solid android:color="@color/white" />
-                    <stroke android:width="2.5dp" android:color="@color/yellow_home" />
+                    <stroke android:width="2.5dp" android:color="#1084D1" />
                 </shape>
             </item>
         </layer-list>

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

@@ -195,7 +195,8 @@
             <RelativeLayout
                 android:id="@+id/businessmen_setting_rl"
                 style="@style/commonSettingItem"
-                android:layout_marginTop="12dp">
+                android:layout_marginTop="12dp"
+                android:visibility="gone">
 
                 <View
                     android:layout_width="match_parent"

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

@@ -14,5 +14,6 @@
             android:id="@+id/contentFl"
             android:layout_width="match_parent"
             android:layout_height="match_parent"
+            android:layout_below="@+id/toolbarVs"
             android:orientation="horizontal" />
 </LinearLayout>

+ 40 - 49
app_core/common/src/main/res/layout/layout_menu_send_qzone_message.xml

@@ -1,54 +1,45 @@
 <?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:orientation="vertical"
-    android:background="@color/white">
+<LinearLayout
+    style="@style/commonPopView"
+    xmlns:android="http://schemas.android.com/apk/res/android">
 
-    <TextView
-        android:id="@+id/send_qzone_text"
+    <LinearLayout
         android:layout_width="match_parent"
-        android:layout_height="45dp"
-        android:gravity="center"
-        android:text="@string/qzone_send_word"
-        android:textColor="@color/black"
-        android:textSize="15sp"/>
-    <View
-        android:layout_width="match_parent"
-        android:layout_height="0.3dp"
-        android:background="@color/button_invalid"/>
-    <TextView
-        android:id="@+id/send_qzone_picture"
-        android:layout_width="match_parent"
-        android:layout_height="45dp"
-        android:gravity="center"
-        android:text="@string/qzone_send_picture"
-        android:textColor="@color/black"
-        android:textSize="15sp"/>
-
-    <View
-        android:layout_width="match_parent"
-        android:layout_height="0.3dp"
-        android:background="@color/button_invalid"/>
-    <TextView
-        android:id="@+id/send_qzone_video"
-        android:layout_width="match_parent"
-        android:layout_height="45dp"
-        android:gravity="center"
-        android:textColor="@color/black"
-        android:text="@string/qzone_send_video"
-        android:textSize="15sp"/>
-    <View
-        android:layout_width="match_parent"
-        android:layout_height="10dp"
-        android:background="@color/black_gray"/>
-    <TextView
-        android:id="@+id/send_qzone_cancel"
-        android:layout_width="match_parent"
-        android:layout_height="45dp"
-        android:gravity="center"
-        android:textColor="@color/black"
-        android:text="@string/common_cancel"
-        android:textSize="15sp"/>
+        android:layout_height="wrap_content"
+        android:background="@drawable/shape_common_pop_option_item"
+        android:orientation="vertical">
+        <TextView
+            android:id="@+id/send_qzone_text"
+            style="@style/commonPopItemTop"
+            android:text="@string/qzone_send_word"
+            />
+        <View
+            android:layout_width="match_parent"
+            android:layout_height="0.3dp"
+            android:background="@color/button_invalid"/>
+        <TextView
+            android:id="@+id/send_qzone_picture"
+            style="@style/commonPopItem"
+            android:text="@string/qzone_send_picture"
+           />
 
+        <View
+            android:layout_width="match_parent"
+            android:layout_height="0.3dp"
+            android:background="@color/button_invalid"/>
+        <TextView
+            android:id="@+id/send_qzone_video"
+            style="@style/commonPopItem"
+            android:text="@string/qzone_send_video"
+           />
+        <View
+            android:layout_width="match_parent"
+            android:layout_height="10dp"
+            android:background="@color/black_gray"/>
+        <TextView
+            android:id="@+id/send_qzone_cancel"
+            style="@style/commonPopCancelItem"
+            android:text="@string/common_cancel"
+            />
+    </LinearLayout>
 </LinearLayout>

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

@@ -25,6 +25,7 @@
             android:id="@+id/mList"
             style="@style/ListViewBasic"
             android:layout_height="300dp"
+            android:divider="@color/gray_light"
             android:dividerHeight="0dp">
         </ListView>
 </LinearLayout>

+ 1 - 1
app_core/common/src/main/res/menu/menu_list.xml

@@ -6,7 +6,7 @@
     <item
         android:id="@+id/push"
         android:title="@string/more"
-        android:icon="@drawable/xlist"
+        android:icon="@drawable/ic_oa_list"
         app:showAsAction="ifRoom" />
 
 </menu>

+ 1 - 0
app_core/common/src/main/res/values-en/strings.xml

@@ -1491,6 +1491,7 @@
     <string name="str_work_uu_sports">UU Sport</string>
     <string name="str_work_invite_register">invitation to register</string>
     <string name="str_work_uu_education">UU education</string>
+    <string name="str_work_yingtang_song">yingtang song</string>
 
     <string name="str_administrative_office">OA</string>
     <string name="str_work_work_approval">my reviews</string>

+ 6 - 3
app_core/common/src/main/res/values-v21/styles.xml

@@ -1,10 +1,13 @@
 <resources>>
     <style name="AppTheme.NoActionBar">
-        <item name="colorPrimary">@color/colorPrimary</item>
-        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
-        <item name="colorAccent">@color/colorAccent</item>
+        <item name="colorPrimary">@color/transparent</item>
+        <item name="colorPrimaryDark">@color/transparent</item>
+        <item name="colorAccent">@color/transparent</item>
         <item name="windowActionBar">false</item>
         <item name="windowNoTitle">true</item>
         <item name="android:windowTranslucentStatus">true</item>
+        <item name="android:windowBackground">@color/transparent</item>
+        <item name="android:windowIsTranslucent">true</item>
+        <item name="android:windowAnimationStyle">@android:style/Animation.Translucent</item>
     </style>
 </resources>

+ 2 - 1
app_core/common/src/main/res/values-zh-rCN/strings.xml

@@ -1167,7 +1167,7 @@
     <string name="c_photo_album">相册</string>
     <string name="c_photo_album_failed">选择失败</string>
     <string name="c_crop_failed">裁减失败</string>
-    <string name="exit_tips">确定退出此账号吗?</string>
+    <string name="exit_tips">确定退出此账号吗?</string>
     <string name="watting">等待</string>
     <string name="approvel">审批</string>
     <string name="Did_not_pass">未通过</string>
@@ -1555,6 +1555,7 @@
     <string name="str_work_uu_sports">UU运动</string>
     <string name="str_work_invite_register">邀请注册</string>
     <string name="str_work_uu_education">UU课堂</string>
+    <string name="str_work_yingtang_song">英唐之歌</string>
 
     <string name="str_administrative_office">行政办公</string>
     <string name="str_work_work_approval">我的审批</string>

+ 1 - 0
app_core/common/src/main/res/values-zh-rTW/strings.xml

@@ -1542,6 +1542,7 @@
     <string name="str_work_uu_sports">UU運動</string>
     <string name="str_work_invite_register">邀請註冊</string>
     <string name="str_work_uu_education">UU课堂</string>
+    <string name="str_work_yingtang_song">英唐之歌</string>
 
     <string name="str_administrative_office">行政辦公</string>
     <string name="str_work_work_approval">我的審批</string>

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

@@ -376,7 +376,7 @@
     <string name="use_help">用户反馈</string>
     <string name="about_us">关于UU互联</string>
     <string name="app_version">当前版本</string>
-    <string name="exit_tips">确定退出此账号吗?</string>
+    <string name="exit_tips">确定退出此账号吗?</string>
     <string name="exit_current_account">退出登录</string>
     <string name="deleteing">删除中&#8230;</string>
     <string name="clear_completed">清除完毕</string>
@@ -1892,6 +1892,7 @@
     <string name="str_work_uu_sports">UU运动</string>
     <string name="str_work_invite_register">邀请注册</string>
     <string name="str_work_uu_education">UU课堂</string>
+    <string name="str_work_yingtang_song">英唐之歌</string>
 
     <string name="str_administrative_office">行政办公</string>
     <string name="str_work_work_approval">我的审批</string>

+ 42 - 0
app_core/network/src/main/java/com/me/network/app/base/HttpParams.java

@@ -10,6 +10,9 @@ import java.util.Map;
  */
 
 public class HttpParams {
+    public static final long CONNECT_TIME_OUT = 30;
+    public static final long READ_TIME_OUT = 30;
+    public static final long WRITE_TIME_OUT = 30;
 
     /**
      * 请求地址
@@ -36,6 +39,12 @@ public class HttpParams {
      */
     private int method;
 
+    private long connectTimeOut = CONNECT_TIME_OUT;
+
+    private long readTimeOut = READ_TIME_OUT;
+
+    private long writeTimeOut = WRITE_TIME_OUT;
+
 
     public HttpParams(Builder builder) {
         this.url = builder.url;
@@ -43,6 +52,9 @@ public class HttpParams {
         this.params = builder.params;
         this.headers = builder.headers;
         this.method = builder.method;
+        this.connectTimeOut = builder.connectTimeOut;
+        this.readTimeOut = builder.readTimeOut;
+        this.writeTimeOut = builder.writeTimeOut;
     }
 
     public String getUrl() {
@@ -65,12 +77,27 @@ public class HttpParams {
         return method;
     }
 
+    public long getConnectTimeOut() {
+        return connectTimeOut;
+    }
+
+    public long getReadTimeOut() {
+        return readTimeOut;
+    }
+
+    public long getWriteTimeOut() {
+        return writeTimeOut;
+    }
+
     public static class Builder {
         private String url;
         private int flag;
         private Map<String, Object> params = new HashMap<>();
         private Map<String, Object> headers = new HashMap<>();
         private int method;
+        private long connectTimeOut = CONNECT_TIME_OUT;
+        private long readTimeOut = READ_TIME_OUT;
+        private long writeTimeOut = WRITE_TIME_OUT;
 
         public Builder url(String val) {
             this.url = val;
@@ -123,6 +150,21 @@ public class HttpParams {
             return this;
         }
 
+        public Builder connectTimeOut(long seconds) {
+            this.connectTimeOut = seconds;
+            return this;
+        }
+
+        public Builder readTimeOut(long seconds) {
+            this.readTimeOut = seconds;
+            return this;
+        }
+
+        public Builder writeTimeOut(long seconds) {
+            this.writeTimeOut = seconds;
+            return this;
+        }
+
         public HttpParams build() {
             return new HttpParams(this);
         }

+ 3 - 0
app_core/network/src/main/java/com/me/network/app/http/HttpRequest.java

@@ -79,6 +79,9 @@ public class HttpRequest {
 
         mHttpClient.Api().send(new HttpClient.Builder()
                 .url(httpParams.getUrl())
+                .connectTimeout(httpParams.getConnectTimeOut())
+                .readTimeout(httpParams.getReadTimeOut())
+                .writeTimeout(httpParams.getWriteTimeOut())
                 .addHeaders(httpParams.getHeaders())
                 .addParams(httpParams.getParams())
                 .method((httpParams.getMethod() == Method.GET) ? Method.GET : Method.POST)

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

@@ -333,6 +333,12 @@ public class BBookingAddActivity extends SupportToolBarActivity implements View.
             bt_commit.setEnabled(true);
             return;
         }
+
+        if (StringUtil.isEmpty(tv_book_topic.getText().toString())) {
+            ToastMessage("请选择预约主题!");
+            bt_commit.setEnabled(true);
+            return;
+        }
         //前面四个值是连带出来的
         String map = "{" +
                 "\"ab_bman\":\"" + tvBookObject.getText().toString() + "\"," +

+ 1 - 1
app_modular/appbooking/src/main/java/com/modular/booking/adapter/ItemPopListAdapter.java

@@ -63,7 +63,7 @@ public class ItemPopListAdapter extends BaseAdapter {
         if (selectId==position) {
             convertView.setBackgroundResource(R.color.me_menu_item_press);
         }else{
-            convertView.setBackgroundResource(android.R.color.transparent);
+            convertView.setBackgroundResource(android.R.color.white);
         }
         initializeViews((ItemsSelectType1)getItem(position), (ViewHolder) convertView.getTag(),position);
         return convertView;

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

@@ -3,7 +3,7 @@
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:id="@+id/tv_top"
-    android:background="@drawable/select_weixin_list_item">
+    android:background="@drawable/selector_check_items">
     <TextView
         android:id="@+id/tv_item_name"
         android:layout_width="wrap_content"

+ 48 - 35
app_modular/appme/src/main/java/com/uas/appme/settings/activity/SettingActivity.java

@@ -2,7 +2,6 @@ package com.uas.appme.settings.activity;
 
 import android.annotation.TargetApi;
 import android.app.ActivityManager;
-import android.app.AlertDialog;
 import android.app.ProgressDialog;
 import android.content.Context;
 import android.content.DialogInterface;
@@ -64,6 +63,7 @@ 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.modular.apputils.utils.PopupWindowHelper;
 import com.scwang.smartrefresh.layout.util.DensityUtil;
 import com.uas.appme.R;
 import com.uas.appme.pedometer.view.NewStepActivity;
@@ -183,8 +183,18 @@ public class SettingActivity extends SupportToolBarActivity implements View.OnCl
         mExitBtn.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
-              //  showExitDialog();
-                showExitPop();
+//                startActivity(new Intent("com.usoftchina.pay.MainMusicActivity"));
+                PopupWindowHelper.showAlart(SettingActivity.this, getString(R.string.app_name), getString(R.string.exit_tips), new PopupWindowHelper.OnSelectListener() {
+                    @Override
+                    public void select(boolean selectOk) {
+                        if (selectOk) {
+                            UserSp.getInstance(mContext).clearUserInfo();
+                            ViewUtil.clearAccount(mContext);
+                            LoginHelper.broadcastLogout(mContext);
+                            SettingActivity.this.finish();
+                        }
+                    }
+                });
             }
         });
         mCacheTv = (TextView) findViewById(R.id.cache_tv);
@@ -296,9 +306,11 @@ public class SettingActivity extends SupportToolBarActivity implements View.OnCl
                 try {
                     //{"result":"1","url":"http://113.105.74.140:8081/u/0/0/201710/o/48fda5af663f40f795f2dd49e2d8801f.jpg"}
                     if (o.toString().contains("result")) {
-                        if (!CommonUtil.isReleaseVersion()) {
-                            businessmen_setting_rl.setVisibility(View.VISIBLE);
-                        } else if ("1".equals(JSON.parseObject(o.toString()).getString("result"))) {
+//                        if (!CommonUtil.isReleaseVersion()) {
+//                            businessmen_setting_rl.setVisibility(View.VISIBLE);
+//                        } else
+
+                        if ("1".equals(JSON.parseObject(o.toString()).getString("result"))) {
                             businessmen_setting_rl.setVisibility(View.VISIBLE);
                         } else {
                             businessmen_setting_rl.setVisibility(View.GONE);
@@ -345,7 +357,7 @@ public class SettingActivity extends SupportToolBarActivity implements View.OnCl
         new MaterialDialog.Builder(this)
                 .title(R.string.app_name)
                 .titleGravity(GravityEnum.CENTER)
-                
+
                 .content(R.string.exit_tips)
                 .positiveText(R.string.common_sure)
                 .positiveColorRes(R.color.white)
@@ -356,7 +368,7 @@ public class SettingActivity extends SupportToolBarActivity implements View.OnCl
                 .negativeText(R.string.common_cancel)
                 .negativeColorRes(R.color.white)
                 .show();
-        
+
 //        new AlertDialog.Builder(mContext)
 //                .setTitle(R.string.app_name)
 //                .setMessage(R.string.exit_tips)
@@ -428,9 +440,17 @@ public class SettingActivity extends SupportToolBarActivity implements View.OnCl
                                                     .getInstallPath())) {
                                     } else if (info != null) {
                                     } else {
-                                        ViewUtil.ShowMessageTitle(
-                                                SettingActivity.this,
-                                                getString(R.string.set_isnewVersion));
+//                                        ViewUtil.ShowMessageTitle(
+//                                                SettingActivity.this,
+//                                                getString(R.string.set_isnewVersion));
+                                        PopupWindowHelper.showAlart(SettingActivity.this,
+                                                getString(R.string.app_dialog_title), getString(R.string.set_isnewVersion)
+                                                , new PopupWindowHelper.OnSelectListener() {
+                                                    @Override
+                                                    public void select(boolean selectOk) {
+
+                                                    }
+                                                });
                                     }
                                     dialog.dismiss();
                                 }
@@ -481,19 +501,15 @@ public class SettingActivity extends SupportToolBarActivity implements View.OnCl
 
     //确认是否清空本地缓存
     private void showclearDialog() {
-        new AlertDialog
-                .Builder(mContext)
-                .setTitle(getString(R.string.common_notice))
-                .setMessage(getString(R.string.cache_msg))
-                .setNegativeButton(getString(R.string.common_cancel), null)
-                .setPositiveButton(getString(R.string.common_sure), new DialogInterface.OnClickListener() {
-
+        PopupWindowHelper.showAlart(this, getString(R.string.common_notice),
+                getString(R.string.cache_msg), new PopupWindowHelper.OnSelectListener() {
                     @Override
-                    public void onClick(DialogInterface dialog, int which) {
-                        clearCache();
-                        Log.i("clearCache", "clearCache");
+                    public void select(boolean selectOk) {
+                        if (selectOk) {
+                            clearCache();
+                        }
                     }
-                }).create().show();
+                });
     }
 
     @TargetApi(Build.VERSION_CODES.HONEYCOMB)
@@ -650,28 +666,25 @@ public class SettingActivity extends SupportToolBarActivity implements View.OnCl
         DisplayUtil.backgroundAlpha(this, 1f);
     }
 
-    private  PopupWindow popupWindow;
+    private PopupWindow popupWindow;
+
     public void showExitPop() {
         View view = null;
-        
         WindowManager windowManager = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
         if (popupWindow == null) {
             LayoutInflater layoutInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
             view = layoutInflater.inflate(R.layout.pop_simple_dialog, null);
-            TextView tv_title= view.findViewById(R.id.tv_title);
-            TextView tv_content= view.findViewById(R.id.tv_content);
-            TextView tv_cancel=view.findViewById(R.id.tv_cancel);
-            TextView tv_sure= view.findViewById(R.id.tv_sure);
+            TextView tv_title = view.findViewById(R.id.tv_title);
+            TextView tv_content = view.findViewById(R.id.tv_content);
+            TextView tv_cancel = view.findViewById(R.id.tv_cancel);
+            TextView tv_sure = view.findViewById(R.id.tv_sure);
             tv_content.setText(R.string.exit_tips);
-            popupWindow = new PopupWindow(view, windowManager.getDefaultDisplay().getWidth()- DensityUtil.dp2px(50), LinearLayout.LayoutParams.MATCH_PARENT);
+            popupWindow = new PopupWindow(view, windowManager.getDefaultDisplay().getWidth() - DensityUtil.dp2px(50), LinearLayout.LayoutParams.MATCH_PARENT);
             tv_sure.setOnClickListener(new View.OnClickListener() {
                 @Override
                 public void onClick(View view) {
                     popupWindow.dismiss();
-                    UserSp.getInstance(mContext).clearUserInfo();
-                    ViewUtil.clearAccount(mContext);
-                    LoginHelper.broadcastLogout(mContext);
-                    SettingActivity.this.finish();
+
                 }
             });
             tv_cancel.setOnClickListener(new View.OnClickListener() {
@@ -680,7 +693,7 @@ public class SettingActivity extends SupportToolBarActivity implements View.OnCl
                     popupWindow.dismiss();
                 }
             });
-           
+
         }
 
         popupWindow.setFocusable(true);
@@ -696,5 +709,5 @@ public class SettingActivity extends SupportToolBarActivity implements View.OnCl
         popupWindow.setHeight(ViewGroup.LayoutParams.WRAP_CONTENT);
         popupWindow.showAtLocation(activity.getWindow().getDecorView(), Gravity.CENTER, 0, 0);
     }
-    
+
 }

+ 12 - 1
app_modular/appme/src/main/res/drawable/bg_bule_btn.xml

@@ -1,4 +1,15 @@
 <?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:drawable="@drawable/shape_corner_deep_blue_bg" android:state_selected="true" />
+    <item android:drawable="@drawable/shape_corner_deep_blue_bg" android:state_pressed="true" />
+    <item android:drawable="@drawable/shape_corner_deep_blue_bg" android:state_checked="true" />
+    <item android:drawable="@drawable/shape_corner_shallow_blue_bg" android:state_enabled="true" />
+    <item android:drawable="@drawable/shape_corner_blue_unable_bg" android:state_enabled="false" />
+    <item android:drawable="@drawable/shape_corner_shallow_blue_bg" />
+</selector>
+
+<!--
+<?xml version="1.0" encoding="utf-8"?>
 <selector xmlns:android="http://schemas.android.com/apk/res/android">
     <item android:state_pressed="true">
         <shape>
@@ -21,4 +32,4 @@
             <padding android:bottom="0.5dp" android:left="0.5dp" android:right="0.5dp" android:top="0.5dp" />
         </shape>
     </item>
-</selector>
+</selector>-->

+ 8 - 8
app_modular/appme/src/main/res/menu/bsetting_more.xml

@@ -1,12 +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">
+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/booking_set_list"
-        android:title="@string/more"
-        android:icon="@drawable/ic_oa_list"
-        app:showAsAction="ifRoom" />
+<item
+    android:id="@+id/booking_set_list"
+    android:title="@string/more"
+    android:icon="@drawable/ic_oa_list"
+    app:showAsAction="ifRoom" />
 
 </menu>

+ 1 - 1
app_modular/appme/src/main/res/values-en/strings.xml

@@ -376,7 +376,7 @@
     <string name="use_help">用户反馈</string>
     <string name="about_us">关于UU互联</string>
     <string name="app_version">当前版本</string>
-    <string name="exit_tips">确定退出此账号吗?</string>
+    <string name="exit_tips">确定退出此账号吗?</string>
     <string name="exit_current_account">退出登录</string>
     <string name="deleteing">删除中&#8230;</string>
     <string name="clear_completed">清除完毕</string>

+ 1 - 1
app_modular/appme/src/main/res/values/strings.xml

@@ -376,7 +376,7 @@
     <string name="use_help">用户反馈</string>
     <string name="about_us">关于UU互联</string>
     <string name="app_version">当前版本</string>
-    <string name="exit_tips">确定退出此账号吗?</string>
+    <string name="exit_tips">确定退出此账号吗?</string>
     <string name="exit_current_account">退出登录</string>
     <string name="deleteing">删除中&#8230;</string>
     <string name="clear_completed">清除完毕</string>

+ 9 - 7
app_modular/appmessages/src/main/AndroidManifest.xml

@@ -1,13 +1,14 @@
 <?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.modular.appmessages">
+<manifest package="com.modular.appmessages"
+          xmlns:android="http://schemas.android.com/apk/res/android">
 
     <application
         android:allowBackup="true"
         android:label="@string/app_name"
         android:supportsRtl="true">
-        <activity android:name=".activity.MsgsSecondCommonActivity"
-            android:theme="@style/MainBaseTheme"/>
+        <activity
+            android:name=".activity.MsgsSecondCommonActivity"
+            android:theme="@style/MainBaseTheme" />
         <activity android:name=".activity.PlatMsgThirdActivity" />
         <activity android:name=".activity.MsgThirdWebActivity" />
         <activity android:name=".activity.ProcessB2BActivity">
@@ -48,8 +49,8 @@
             android:theme="@style/MainBaseTheme"
             android:windowSoftInputMode="adjustPan|stateHidden">
             <!--<intent-filter>-->
-                <!--<action android:name="com.modular.task.TaskActivity" />-->
-                <!--<category android:name="android.intent.category.DEFAULT" />-->
+            <!--<action android:name="com.modular.task.TaskActivity" />-->
+            <!--<category android:name="android.intent.category.DEFAULT" />-->
             <!--</intent-filter>-->
         </activity>
 
@@ -63,7 +64,8 @@
             android:name=".activity.Subscription2Activity"
             android:label="@string/subscribe_title" />
         <activity
-            android:name=".activity.SubcribeManageActivity">
+            android:name=".activity.SubcribeManageActivity"
+            android:theme="@style/StyledIndicators">
             <intent-filter>
                 <action android:name="com.modular.company.SubcribeManageActivity" />
                 <category android:name="android.intent.category.DEFAULT" />

+ 20 - 23
app_modular/appmessages/src/main/java/com/modular/appmessages/activity/Subscription2Activity.java

@@ -1,11 +1,9 @@
 package com.modular.appmessages.activity;
 
-import android.content.DialogInterface;
 import android.content.Intent;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Message;
-import android.support.v7.app.AlertDialog;
 import android.support.v7.widget.DefaultItemAnimator;
 import android.support.v7.widget.LinearLayoutManager;
 import android.support.v7.widget.RecyclerView;
@@ -33,6 +31,7 @@ import com.modular.appmessages.R;
 import com.modular.appmessages.adapter.SubscriptionAdapter;
 import com.modular.appmessages.db.SubsDao;
 import com.modular.appmessages.model.SubMessage;
+import com.modular.apputils.utils.PopupWindowHelper;
 import com.module.recyclerlibrary.ui.refresh.BaseRefreshLayout;
 import com.module.recyclerlibrary.ui.refresh.simlpe.SimpleRefreshLayout;
 
@@ -67,7 +66,7 @@ public class Subscription2Activity extends BaseActivity {
                             JSONArray array = JSON.parseObject(message).getJSONArray("data");
                             if (ListUtils.isEmpty(array)) {
                                 updataAdapter();
-                                showToast(  getString(R.string.common_list_empty));
+                                showToast(getString(R.string.common_list_empty));
                                 return;
                             }
                             if (ListUtils.isEmpty(messages)) messages = new ArrayList<>();
@@ -80,7 +79,7 @@ public class Subscription2Activity extends BaseActivity {
                                 reckonData(array, false);
                             }
                         } else {
-                          showToast( message == null ? "" : StringUtil.getChinese(message));
+                            showToast(message == null ? "" : StringUtil.getChinese(message));
                         }
                         break;
                     case Constants.APP_SOCKETIMEOUTEXCEPTION:
@@ -101,11 +100,11 @@ public class Subscription2Activity extends BaseActivity {
 
     @Override
     public boolean onOptionsItemSelected(MenuItem item) {
-        if (item.getItemId()==R.id.subscribe_manage){
+        if (item.getItemId() == R.id.subscribe_manage) {
             Intent intent = new Intent();
             intent.setClass(this, SubcribeManageActivity.class);
             startActivity(intent);
-        }else if (android.R.id.home==item.getItemId()){
+        } else if (android.R.id.home == item.getItemId()) {
             onBackPressed();
         }
         return super.onOptionsItemSelected(item);
@@ -122,8 +121,8 @@ public class Subscription2Activity extends BaseActivity {
 
 
     private void initView() {
-        swiperefresh= (SimpleRefreshLayout) findViewById(R.id.swiperefresh);
-        recycler= (RecyclerView) findViewById(R.id.recycler);
+        swiperefresh = (SimpleRefreshLayout) findViewById(R.id.swiperefresh);
+        recycler = (RecyclerView) findViewById(R.id.recycler);
         ViewUtil.LoginERPTask(this, handler, 0x12);
         LinearLayoutManager layoutManager = new LinearLayoutManager(ct);
         recycler.setLayoutManager(layoutManager);
@@ -181,18 +180,16 @@ public class Subscription2Activity extends BaseActivity {
             public void longClick(View view, SubMessage bean, final int position) {
                 if (bean == null) bean = (SubMessage) view.getTag();
                 if (bean == null) return;
-                AlertDialog.Builder builder = new AlertDialog.Builder(ct);
                 final SubMessage finalBean = bean;
-                builder.setTitle(R.string.prompt_title).setMessage(R.string.delete_prompt).setPositiveButton(R.string.sure, new DialogInterface.OnClickListener() {
-                    @Override
-                    public void onClick(DialogInterface dialogInterface, int i) {
-                        longClickItem(finalBean, position);
-                    }
-                }).setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
-                    @Override
-                    public void onClick(DialogInterface dialogInterface, int i) {
-                    }
-                }).show();
+                PopupWindowHelper.showAlart(Subscription2Activity.this, getString(R.string.common_notice),
+                        getString(R.string.delete_prompt), new PopupWindowHelper.OnSelectListener() {
+                            @Override
+                            public void select(boolean selectOk) {
+                                if (selectOk) {
+                                    longClickItem(finalBean, position);
+                                }
+                            }
+                        });
             }
         });
     }
@@ -229,16 +226,16 @@ public class Subscription2Activity extends BaseActivity {
         if (delete) {
             messages.remove(position);
             updataAdapter();
-            showToast( R.string.delete_all_succ);
+            showToast(R.string.delete_all_succ);
         } else {
-            showToast(  R.string.delete_failed);
+            showToast(R.string.delete_failed);
         }
     }
 
     private void clickItem(SubMessage bean, int position) {
         String url = baseUrl + "common/charts/mobileCharts.action";
         String title = bean.getTitle();
-        Intent intent_web = new Intent("com.modular.main.WebViewCommActivity" );
+        Intent intent_web = new Intent("com.modular.main.WebViewCommActivity");
         intent_web.putExtra("url", url);
         intent_web.putExtra("p", title);
         intent_web.putExtra("cookie", true);
@@ -324,7 +321,7 @@ public class Subscription2Activity extends BaseActivity {
         String url = baseUrl + "common/desktop/subs/getSubs.action";
         final Map<String, Object> param = new HashMap<>();
         param.put("count", 100);
-        param.put("condition", "where to_char(createdate_,'yyyymmdd')='" + DateFormatUtil.long2Str(showTime,"yyyyMMdd") + "'");
+        param.put("condition", "where to_char(createdate_,'yyyymmdd')='" + DateFormatUtil.long2Str(showTime, "yyyyMMdd") + "'");
         param.put("sessionId", CommonUtil.getSharedPreferences(this, "sessionId"));
         LinkedHashMap<String, Object> headers = new LinkedHashMap<>();
         headers.put("Cookie", "JSESSIONID=" + CommonUtil.getSharedPreferences(this, "sessionId"));

+ 1 - 0
app_modular/appmusic/.gitignore

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

+ 24 - 0
app_modular/appmusic/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')
+    compile project(':common')
+}

+ 25 - 0
app_modular/appmusic/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:\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

+ 26 - 0
app_modular/appmusic/src/androidTest/java/com/usoftchina/music/ExampleInstrumentedTest.java

@@ -0,0 +1,26 @@
+package com.usoftchina.music;
+
+import android.content.Context;
+import android.support.test.InstrumentationRegistry;
+import android.support.test.runner.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import static org.junit.Assert.*;
+
+/**
+ * Instrumentation test, which will execute on an Android device.
+ *
+ * @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
+ */
+@RunWith(AndroidJUnit4.class)
+public class ExampleInstrumentedTest {
+    @Test
+    public void useAppContext() throws Exception {
+        // Context of the app under test.
+        Context appContext = InstrumentationRegistry.getTargetContext();
+
+        assertEquals("com.usoftchina.music.test", appContext.getPackageName());
+    }
+}

+ 18 - 0
app_modular/appmusic/src/main/AndroidManifest.xml

@@ -0,0 +1,18 @@
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="com.usoftchina.music">
+
+    <application
+        android:allowBackup="true"
+        android:label="@string/app_name"
+        android:supportsRtl="true">
+        <activity android:name="com.usoftchina.pay.MainMusicActivity"
+            android:theme="@style/AppTheme.NoActionBar"
+            android:label="智慧英唐">
+            <intent-filter>
+                <action android:name="com.usoftchina.pay.MainMusicActivity" />
+
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+        </activity>
+    </application>
+</manifest>

+ 67 - 0
app_modular/appmusic/src/main/java/com/lg/lrcview_master/DefaultLrcParser.java

@@ -0,0 +1,67 @@
+package com.lg.lrcview_master;
+
+import android.text.TextUtils;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.StringReader;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * 默认的歌词解析器
+ * @author Ligang  2014/8/19
+ *
+ */
+public class DefaultLrcParser implements ILrcParser {
+	private static final DefaultLrcParser istance = new DefaultLrcParser();
+	
+	public static final DefaultLrcParser getIstance(){
+		return istance;
+	}
+	private DefaultLrcParser() {
+	}
+	/***
+	 * 将歌词文件里面的字符串 解析成一个List<LrcRow>
+	 */
+	@Override
+	public List<LrcRow> getLrcRows(String str) {
+		
+		if(TextUtils.isEmpty(str)){
+			return null;
+		}
+		BufferedReader br = new BufferedReader(new StringReader(str));
+		
+		List<LrcRow> lrcRows = new ArrayList<LrcRow>();
+		String lrcLine;
+		try {
+			while((lrcLine = br.readLine()) != null){
+				List<LrcRow> rows = LrcRow.createRows(lrcLine);
+				if(rows != null && rows.size() > 0){
+					lrcRows.addAll(rows);
+				}
+			}
+			Collections.sort(lrcRows);
+			
+			for (int i = 0; i < lrcRows.size()-1; i++) {
+				lrcRows.get(i).setTotalTime(lrcRows.get(i+1).getTime() - lrcRows.get(i).getTime());
+			}
+			lrcRows.get(lrcRows.size()-1).setTotalTime(5000);
+		} catch (IOException e) {
+			e.printStackTrace();
+			return null;
+		}finally{
+			if(br != null){
+				try {
+					br.close();
+				} catch (IOException e) {
+					e.printStackTrace();
+				}
+			}
+		}
+		
+		return lrcRows;
+	}
+
+}

+ 13 - 0
app_modular/appmusic/src/main/java/com/lg/lrcview_master/ILrcParser.java

@@ -0,0 +1,13 @@
+package com.lg.lrcview_master;
+
+import java.util.List;
+
+/**
+ * 歌词解析器
+ * @author Ligang  2014/8/19
+ *
+ */
+public interface ILrcParser {
+
+	List<LrcRow> getLrcRows(String str);
+}

+ 35 - 0
app_modular/appmusic/src/main/java/com/lg/lrcview_master/ILrcView.java

@@ -0,0 +1,35 @@
+package com.lg.lrcview_master;
+
+import java.util.List;
+
+
+public interface ILrcView {
+	/**
+	 * 初始化画笔,颜色,字体大小等设置
+	 */
+	void init();
+	
+	/***
+	 * 设置数据源
+	 * @param lrcRows
+	 */
+	void setLrcRows(List<LrcRow> lrcRows);
+	
+	/**
+	 * 指定时间
+	 * @param progress  时间进度
+	 * @param fromSeekBarByUser 是否由用户触摸Seekbar触发
+	 */
+	void seekTo(int progress, boolean fromSeekBar, boolean fromSeekBarByUser);
+	
+	/***
+	 * 设置歌词文字的缩放比例
+	 * @param scalingFactor
+	 */
+	void setLrcScalingFactor(float scalingFactor);
+	
+	/**
+	 * 重置
+	 */
+	void reset();
+}

+ 118 - 0
app_modular/appmusic/src/main/java/com/lg/lrcview_master/LrcRow.java

@@ -0,0 +1,118 @@
+package com.lg.lrcview_master;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import android.text.TextUtils;
+import android.util.Log;
+
+/**
+ * 每行歌词的实体类,实现了Comparable接口,方便List<LrcRow>的sort排序
+ * @author Ligang  2014/8/19
+ *
+ */
+public class LrcRow implements Comparable<LrcRow>{
+
+	/**开始时间 为00:10:00***/
+	private String timeStr;
+	/**开始时间 毫米数  00:10:00  为10000**/
+	private int time;
+	/**歌词内容**/
+	private String content;
+	/**该行歌词显示的总时间**/
+	private int totalTime;
+	
+	public long getTotalTime() {
+		return totalTime;
+	}
+	public void setTotalTime(int totalTime) {
+		this.totalTime = totalTime;
+	}
+	public String getTimeStr() {
+		return timeStr;
+	}
+	public void setTimeStr(String timeStr) {
+		this.timeStr = timeStr;
+	}
+	public int getTime() {
+		return time;
+	}
+	public void setTime(int time) {
+		this.time = time;
+	}
+	public String getContent() {
+		return content;
+	}
+	public void setContent(String content) {
+		this.content = content;
+	}
+
+	public LrcRow() {
+		super();
+	}
+	public LrcRow(String timeStr, int time, String content) {
+		super();
+		this.timeStr = timeStr;
+		this.time = time;
+		this.content = content;
+	}
+	/**
+	 * 将歌词文件中的某一行 解析成一个List<LrcRow> 
+	 * 因为一行中可能包含了多个LrcRow对象
+	 * 比如  [03:33.02][00:36.37]当鸽子不再象征和平  ,就包含了2个对象
+	 * @param lrcLine
+	 * @return
+	 */
+	public static final List<LrcRow> createRows(String lrcLine){
+		if(!lrcLine.startsWith("[") || lrcLine.indexOf("]") != 9){
+			return null;
+		}
+		//最后一个"]" 
+		int lastIndexOfRightBracket = lrcLine.lastIndexOf("]");
+		//歌词内容
+		String content = lrcLine.substring(lastIndexOfRightBracket+1, lrcLine.length());
+		//截取出歌词时间,并将"[" 和"]" 替换为"-"   [offset:0]
+		System.out.println("lrcLine="+lrcLine);
+		// -03:33.02--00:36.37-
+		String times = lrcLine.substring(0, lastIndexOfRightBracket+1).replace("[", "-").replace("]", "-");
+		String[] timesArray = times.split("-");
+		List<LrcRow> lrcRows = new ArrayList<LrcRow>();
+		for (String tem : timesArray) {
+			if(TextUtils.isEmpty(tem.trim())){
+				continue;
+			}
+			//
+			try{
+				LrcRow lrcRow = new LrcRow(tem, formatTime(tem), content);
+				lrcRows.add(lrcRow);
+			}catch(Exception e){
+				Log.w("LrcRow", e.getMessage());
+			}
+		}
+		return lrcRows;
+	}
+	/****
+	 * 把歌词时间转换为毫秒值  如 将00:10.00  转为10000
+	 * @param tem
+	 * @return
+	 */
+	private static int formatTime(String timeStr) {
+		timeStr = timeStr.replace('.', ':');
+		String[] times = timeStr.split(":");
+
+		return Integer.parseInt(times[0])*60*1000
+				+ Integer.parseInt(times[1])*1000 
+				+ Integer.parseInt(times[2]);
+	}
+	@Override
+	public int compareTo(LrcRow anotherLrcRow) {
+		return (int) (this.time - anotherLrcRow.time);
+	}
+	@Override
+	public String toString() {
+		return "LrcRow [timeStr=" + timeStr + ", time=" + time + ", content="
+				+ content + "]";
+	} 
+
+
+}

+ 466 - 0
app_modular/appmusic/src/main/java/com/lg/lrcview_master/LrcView.java

@@ -0,0 +1,466 @@
+package com.lg.lrcview_master;
+
+import android.animation.ValueAnimator;
+import android.animation.ValueAnimator.AnimatorUpdateListener;
+import android.content.Context;
+import android.graphics.Canvas;
+import android.graphics.Paint;
+import android.util.AttributeSet;
+import android.util.Log;
+import android.view.MotionEvent;
+import android.view.View;
+import android.view.ViewConfiguration;
+import android.widget.Scroller;
+
+import java.util.List;
+
+/***
+ * 
+ * 须知:
+ * 在ViewGroup里面 scrollTo,scrollBy方法移动的是子View
+ * 在View里面scrollTo,scrollBy方法移动的是View里面绘制的内容
+ * 要点:
+ * 1:歌词的上下平移用什么实现?
+ *    用Scroller实现,Scroller只是一个工具而已,
+ *    真正实现滚动效果的还是View的scrollTo方法
+ * 2:歌词的水平滚动怎么实现?
+ *    通过属性动画ValueAnimator控制高亮歌词绘制的x轴起始坐标
+ * 
+ * @author Ligang  2014/8/19
+ *
+ */
+public class LrcView extends View implements ILrcView {
+	/**所有的歌词***/
+	private List<LrcRow> mLrcRows;
+	/**无歌词数据的时候 显示的默认文字**/
+	private static final String DEFAULT_TEXT = "智慧英唐,全球共享";
+	/**默认文字的字体大小**/
+	private static final float SIZE_FOR_DEFAULT_TEXT = 60;
+
+	/**画高亮歌词的画笔***/
+	private Paint mPaintForHighLightLrc;
+	/**高亮歌词的默认字体大小***/
+	private static final float DEFAULT_SIZE_FOR_HIGHT_LIGHT_LRC = 37;
+	/**高亮歌词当前的字体大小***/
+	private float mCurSizeForHightLightLrc = DEFAULT_SIZE_FOR_HIGHT_LIGHT_LRC;
+	/**高亮歌词的默认字体颜色**/
+	private static final int DEFAULT_COLOR_FOR_HIGHT_LIGHT_LRC = 0xff2FABCF;
+	/**高亮歌词当前的字体颜色**/
+	private int mCurColorForHightLightLrc = DEFAULT_COLOR_FOR_HIGHT_LIGHT_LRC;
+
+	/**画其他歌词的画笔***/
+	private Paint mPaintForOtherLrc;
+	/**其他歌词的默认字体大小***/
+	private static final float DEFAULT_SIZE_FOR_OTHER_LRC = 32;
+	/**其他歌词当前的字体大小***/
+	private float mCurSizeForOtherLrc = DEFAULT_SIZE_FOR_OTHER_LRC;
+	/**高亮歌词的默认字体颜色**/
+	private static final int DEFAULT_COLOR_FOR_OTHER_LRC =  0xff666666;
+	/**高亮歌词当前的字体颜色**/
+	private int mCurColorForOtherLrc = DEFAULT_COLOR_FOR_OTHER_LRC;
+
+
+	/**画时间线的画笔***/
+	private Paint mPaintForTimeLine;
+	/***时间线的颜色**/
+	private static final int COLOR_FOR_TIME_LINE = 0xffD02090;
+	/**时间文字大小**/
+	private static final int SIZE_FOR_TIME = 18;
+	/**是否画时间线**/
+	private boolean mIsDrawTimeLine = false;
+
+	/**歌词间默认的行距**/
+	private static final float DEFAULT_PADDING = 50;
+	/**歌词当前的行距**/
+	private float mCurPadding = DEFAULT_PADDING;
+
+	/**歌词的最大缩放比例**/
+	public static final float MAX_SCALING_FACTOR = 2.5f;
+	/**歌词的最小缩放比例**/
+	public static final float MIN_SCALING_FACTOR = 1.5f;
+	/**默认缩放比例**/
+	private static final float DEFAULT_SCALING_FACTOR = 1.8f;
+	/**歌词的当前缩放比例**/
+	private float mCurScalingFactor = DEFAULT_SCALING_FACTOR;
+
+	/**实现歌词竖直方向平滑滚动的辅助对象**/
+	private Scroller mScroller;
+	/***移动一句歌词的持续时间**/
+	private static final int DURATION_FOR_LRC_SCROLL = 1500;
+	/***停止触摸时 如果View需要滚动 时的持续时间**/
+	private static final int DURATION_FOR_ACTION_UP = 400;
+
+	/**控制文字缩放的因子**/
+	private float mCurFraction = 0;
+	private int mTouchSlop;
+
+	public LrcView(Context context) {
+		super(context);
+		init();
+	}
+	public LrcView(Context context, AttributeSet attrs) {
+		super(context, attrs);
+		init();
+	}
+
+
+	/**
+	 * 初始化画笔等
+	 */
+	@Override
+	public void init() {
+		mScroller = new Scroller(getContext());
+		mPaintForHighLightLrc = new Paint();
+		mPaintForHighLightLrc.setColor(mCurColorForHightLightLrc);
+		mPaintForHighLightLrc.setTextSize(mCurSizeForHightLightLrc);
+
+		mPaintForOtherLrc = new Paint();
+		mPaintForOtherLrc.setColor(mCurColorForOtherLrc);
+		mPaintForOtherLrc.setTextSize(mCurSizeForOtherLrc);
+
+		mPaintForTimeLine = new Paint();
+		mPaintForTimeLine.setColor(COLOR_FOR_TIME_LINE);
+		mPaintForTimeLine.setTextSize(SIZE_FOR_TIME);
+
+		mTouchSlop = ViewConfiguration.get(getContext()).getScaledTouchSlop();
+	}
+
+	private int mTotleDrawRow;
+	@Override
+	protected void onDraw(Canvas canvas) {
+		super.onDraw(canvas);
+		if(mLrcRows == null || mLrcRows.size() == 0){
+			//画默认的显示文字
+			mPaintForOtherLrc.setTextSize(SIZE_FOR_DEFAULT_TEXT);
+			float textWidth = mPaintForOtherLrc.measureText(DEFAULT_TEXT);
+			float textX = (getWidth()-textWidth)/2;
+			canvas.drawText(DEFAULT_TEXT, textX, getHeight()/2, mPaintForOtherLrc);
+			return;
+		}
+		if(mTotleDrawRow == 0){
+			//初始化将要绘制的歌词行数
+			mTotleDrawRow = (int) (getHeight()/(mCurSizeForOtherLrc+mCurPadding))+4;
+		}
+		//因为不需要将所有歌词画出来
+		int minRaw = mCurRow - (mTotleDrawRow-1)/2;
+		int maxRaw = mCurRow + (mTotleDrawRow-1)/2;
+		minRaw = Math.max(minRaw, 0); //处理上边界
+		maxRaw = Math.min(maxRaw, mLrcRows.size()-1); //处理下边界
+		//实现渐变的最大歌词行数
+		int count = Math.max(maxRaw-mCurRow, mCurRow-minRaw);
+		//两行歌词间字体颜色变化的透明度
+		int alpha = (0xFF-0x11)/count;
+		//画出来的第一行歌词的y坐标
+		float rowY = getHeight()/2 + minRaw*(mCurSizeForOtherLrc + mCurPadding);
+		for (int i = minRaw; i <= maxRaw; i++) {
+
+			if(i == mCurRow){//画高亮歌词
+				//因为有缩放效果,所有需要动态设置歌词的字体大小
+				float textSize = mCurSizeForOtherLrc + (mCurSizeForHightLightLrc - mCurSizeForOtherLrc)*mCurFraction;
+				mPaintForHighLightLrc.setTextSize(textSize);
+
+				String text = mLrcRows.get(i).getContent();//获取到高亮歌词
+				float textWidth = mPaintForHighLightLrc.measureText(text);//用画笔测量歌词的宽度
+				if(textWidth > getWidth()){
+					//如果歌词宽度大于view的宽,则需要动态设置歌词的起始x坐标,以实现水平滚动
+					canvas.drawText(text, mCurTextXForHighLightLrc, rowY, mPaintForHighLightLrc);
+				}else{
+					//如果歌词宽度小于view的宽,则让歌词居中显示
+					float textX =  (getWidth()-textWidth)/2;
+					canvas.drawText(text, textX, rowY, mPaintForHighLightLrc);
+				}
+			}else{
+				if(i == mLastRow){//画高亮歌词的上一句
+					//因为有缩放效果,所有需要动态设置歌词的字体大小
+					float textSize = mCurSizeForHightLightLrc - (mCurSizeForHightLightLrc - mCurSizeForOtherLrc)*mCurFraction;
+					mPaintForOtherLrc.setTextSize(textSize);
+				}else{//画其他的歌词
+					mPaintForOtherLrc.setTextSize(mCurSizeForOtherLrc);
+				}
+				String text = mLrcRows.get(i).getContent();
+				float textWidth = mPaintForOtherLrc.measureText(text);
+				float textX = (getWidth()-textWidth)/2;
+				//如果计算出的textX为负数,将textX置为0(实现:如果歌词宽大于view宽,则居左显示,否则居中显示)
+				textX = Math.max(textX, 0);
+				//实现颜色渐变  从0xFFFFFFFF 逐渐变为 0x11FFFFFF(颜色还是白色,只是透明度变化)
+				int curAlpha = 255-(Math.abs(i-mCurRow)-1)*alpha; //求出当前歌词颜色的透明度
+				mPaintForOtherLrc.setColor(0x1000000*curAlpha+0xff666666);
+				canvas.drawText(text, textX, rowY, mPaintForOtherLrc);
+			}
+			//计算出下一行歌词绘制的y坐标
+			rowY += mCurSizeForOtherLrc + mCurPadding;
+		}
+
+		//画时间线和时间
+		if(mIsDrawTimeLine){
+			float y = getHeight()/2 + getScrollY();
+			canvas.drawText(mLrcRows.get(mCurRow).getTimeStr(), 0, y-5, mPaintForTimeLine);
+			canvas.drawLine(0, y, getWidth(), y, mPaintForTimeLine);
+		}
+
+	}
+	
+	/**是否可拖动歌词**/
+	private boolean canDrag = false;
+	/**事件的第一次的y坐标**/
+	private float firstY;
+	/**事件的上一次的y坐标**/
+	private float lastY;
+	private float lastX;
+	@Override
+	public boolean onTouchEvent(MotionEvent event) {
+		if(mLrcRows == null || mLrcRows.size() == 0){
+			return false;
+		}
+		switch (event.getAction()) {
+		case MotionEvent.ACTION_DOWN:
+			firstY = event.getRawY();
+			lastX = event.getRawX();
+			break;
+		case MotionEvent.ACTION_MOVE:
+			if(!canDrag){
+				if(Math.abs(event.getRawY() - firstY) > mTouchSlop && Math.abs(event.getRawY()-firstY) > Math.abs(event.getRawX()-lastX)){
+					canDrag = true;
+					mIsDrawTimeLine = true;
+					mScroller.forceFinished(true);
+					stopScrollLrc();
+					mCurFraction = 1;
+				}
+				lastY = event.getRawY();
+			}
+
+			if(canDrag){
+				float offset = event.getRawY() - lastY;//偏移量
+				if( getScrollY() - offset < 0){ 
+					if(offset > 0){
+						offset = offset/3;
+					}
+				}else if(getScrollY() - offset >mLrcRows.size()*(mCurSizeForOtherLrc+mCurPadding)-mCurPadding){
+					if(offset < 0 ){
+						offset = offset/3;
+					}
+				}
+				scrollBy(getScrollX(), -(int) offset);
+				lastY = event.getRawY();
+				int currentRow = (int) (getScrollY()/(mCurSizeForOtherLrc+mCurPadding));
+				currentRow = Math.min(currentRow, mLrcRows.size()-1);
+				currentRow = Math.max(currentRow, 0);
+				seekTo(mLrcRows.get(currentRow).getTime(), false,false);
+				return true;
+			}
+			lastY = event.getRawY();
+			break;
+		case MotionEvent.ACTION_UP:
+		case MotionEvent.ACTION_CANCEL:
+			if(!canDrag){
+				if(onLrcClickListener != null){
+					onLrcClickListener.onClick();
+				}
+			}else{
+				if(onSeekToListener!= null && mCurRow != -1){
+					onSeekToListener.onSeekTo(mLrcRows.get(mCurRow).getTime());
+				}
+				if(getScrollY() < 0){
+					smoothScrollTo(0,DURATION_FOR_ACTION_UP);
+				}else if(getScrollY() >mLrcRows.size()*(mCurSizeForOtherLrc+mCurPadding)-mCurPadding){
+					smoothScrollTo((int) (mLrcRows.size()*(mCurSizeForOtherLrc+mCurPadding)-mCurPadding),DURATION_FOR_ACTION_UP);
+				}
+
+				canDrag = false;
+				mIsDrawTimeLine = false;
+				invalidate();
+			}
+			break;
+		}
+		return true;
+	}
+	/**
+	 * 为LrcView设置歌词List集合数据
+	 */
+	@Override
+	public void setLrcRows(List<LrcRow> lrcRows) {
+		reset();
+		this.mLrcRows = lrcRows;
+		invalidate();
+	}
+
+	public List<LrcRow> getmLrcRows() {
+		return mLrcRows;
+	}
+	
+	/**当前高亮歌词的行号**/
+	private int mCurRow =-1;
+	/**上一次的高亮歌词的行号**/
+	private int mLastRow = -1;
+	
+	@Override
+	public void seekTo(int progress,boolean fromSeekBar,boolean fromSeekBarByUser) {
+		if(mLrcRows == null || mLrcRows.size() == 0){
+			return;
+		} 
+		//如果是由seekbar的进度改变触发 并且这时候处于拖动状态,则返回
+		if(fromSeekBar && canDrag){
+			return;
+		}
+		for (int i = mLrcRows.size()-1; i >= 0; i--) {
+
+			if(progress >= mLrcRows.get(i).getTime()){
+				if(mCurRow != i){
+					mLastRow = mCurRow;
+					mCurRow = i;
+					log("mCurRow=i="+mCurRow);
+					if(fromSeekBarByUser){
+						if(!mScroller.isFinished()){
+							mScroller.forceFinished(true);
+						}
+						scrollTo(getScrollX(), (int) (mCurRow * (mCurSizeForOtherLrc+mCurPadding)));
+					}else{
+						smoothScrollTo( (int) (mCurRow * (mCurSizeForOtherLrc+mCurPadding)), DURATION_FOR_LRC_SCROLL);
+					}
+					//如果高亮歌词的宽度大于View的宽,就需要开启属性动画,让它水平滚动
+					float textWidth = mPaintForHighLightLrc.measureText(mLrcRows.get(mCurRow).getContent());
+					log("textWidth="+textWidth+"getWidth()="+getWidth());
+					if(textWidth > getWidth()){
+						if(fromSeekBarByUser){
+							mScroller.forceFinished(true);
+						}
+						log("开始水平滚动歌词:"+mLrcRows.get(mCurRow).getContent());
+						startScrollLrc(getWidth()-textWidth, (long) (mLrcRows.get(mCurRow).getTotalTime()*0.6));
+					}
+					invalidate();
+				}
+				break;
+			}
+		}
+
+	}
+
+	/**控制歌词水平滚动的属性动画***/
+	private ValueAnimator mAnimator;
+	/**
+	 * 开始水平滚动歌词
+	 * @param endX 歌词第一个字的最终的x坐标
+	 * @param duration 滚动的持续时间
+	 */
+	private void startScrollLrc(float endX,long duration){
+		if(mAnimator == null){
+			mAnimator = ValueAnimator.ofFloat(0,endX);
+			mAnimator.addUpdateListener(updateListener);
+		}else{
+			mCurTextXForHighLightLrc = 0;
+			mAnimator.cancel();
+			mAnimator.setFloatValues(0,endX);
+		}
+		mAnimator.setDuration(duration);
+		mAnimator.setStartDelay((long) (duration*0.3)); //延迟执行属性动画
+		mAnimator.start();
+	}
+
+	/**
+	 * 停止歌词的滚动
+	 */
+	private void stopScrollLrc(){
+		if(mAnimator != null){
+			mAnimator.cancel();
+		}
+		mCurTextXForHighLightLrc = 0;
+	}
+	/**高亮歌词当前的其实x轴绘制坐标**/
+	private float mCurTextXForHighLightLrc;
+	/***
+	 * 监听属性动画的数值值的改变
+	 */
+	AnimatorUpdateListener updateListener = new AnimatorUpdateListener() {
+
+		@Override
+		public void onAnimationUpdate(ValueAnimator animation) {
+			//TODO
+			mCurTextXForHighLightLrc = (Float) animation.getAnimatedValue();
+			log("mCurTextXForHighLightLrc="+mCurTextXForHighLightLrc);
+			invalidate();
+		}
+	};
+	/**
+	 * 设置歌词的缩放比例
+	 */
+	@Override
+	public void setLrcScalingFactor(float scalingFactor) {
+		mCurScalingFactor = scalingFactor;
+		mCurSizeForHightLightLrc = DEFAULT_SIZE_FOR_HIGHT_LIGHT_LRC * mCurScalingFactor;
+		mCurSizeForOtherLrc = DEFAULT_SIZE_FOR_OTHER_LRC * mCurScalingFactor;
+		mCurPadding = DEFAULT_PADDING * mCurScalingFactor;
+		mTotleDrawRow = (int) (getHeight()/(mCurSizeForOtherLrc+mCurPadding))+3;
+		log("mRowTotal="+mTotleDrawRow);
+		scrollTo(getScrollX(), (int) (mCurRow*(mCurSizeForOtherLrc+mCurPadding)));
+		invalidate();
+		mScroller.forceFinished(true);
+	}
+	/**
+	 * 重置
+	 */
+	@Override
+	public void reset() {
+		if(!mScroller.isFinished()){
+			mScroller.forceFinished(true);
+		}
+		mLrcRows = null;
+		scrollTo(getScrollX(), 0);
+		invalidate();
+	}
+
+
+	/**
+	 * 平滑的移动到某处
+	 * @param dstY
+	 */
+	private void smoothScrollTo(int dstY,int duration){
+		int oldScrollY = getScrollY();
+		int offset = dstY - oldScrollY;
+		mScroller.startScroll(getScrollX(), oldScrollY, getScrollX(), offset, duration);
+		invalidate();
+	}
+
+	@Override
+	public void computeScroll() {
+		if (!mScroller.isFinished()) {
+			if (mScroller.computeScrollOffset()) {
+				int oldY = getScrollY();
+				int y = mScroller.getCurrY();
+				if (oldY != y && !canDrag) {
+					scrollTo(getScrollX(), y);
+				}
+				mCurFraction = mScroller.timePassed()*3f/DURATION_FOR_LRC_SCROLL;
+				mCurFraction = Math.min(mCurFraction, 1F);
+				invalidate();
+			}
+		} 
+	}
+	/**
+	 * 返回当前的歌词缩放比例
+	 * @return
+	 */
+	public float getmCurScalingFactor() {
+		return mCurScalingFactor;
+	}
+	
+	private OnSeekToListener onSeekToListener;
+	public void setOnSeekToListener(OnSeekToListener onSeekToListener) {
+		this.onSeekToListener = onSeekToListener;
+	}
+
+	public interface OnSeekToListener{
+		void onSeekTo(int progress);
+	}
+
+	private OnLrcClickListener onLrcClickListener;
+	public void setOnLrcClickListener(OnLrcClickListener onLrcClickListener) {
+		this.onLrcClickListener = onLrcClickListener;
+	}
+
+	public interface OnLrcClickListener{
+		void onClick();
+	}
+	public void log(Object o){
+		Log.d("LrcView", o+"");
+	}
+}

+ 271 - 0
app_modular/appmusic/src/main/java/com/usoftchina/pay/MainMusicActivity.java

@@ -0,0 +1,271 @@
+package com.usoftchina.pay;
+
+import android.media.MediaPlayer;
+import android.media.MediaPlayer.OnCompletionListener;
+import android.os.Bundle;
+import android.os.Handler;
+import android.support.v7.app.AppCompatActivity;
+import android.support.v7.widget.Toolbar;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.widget.Button;
+import android.widget.SeekBar;
+import android.widget.SeekBar.OnSeekBarChangeListener;
+import android.widget.TextView;
+import android.widget.Toast;
+
+import com.core.utils.StatusBarUtil;
+import com.lg.lrcview_master.DefaultLrcParser;
+import com.lg.lrcview_master.LrcRow;
+import com.lg.lrcview_master.LrcView.OnLrcClickListener;
+import com.lg.lrcview_master.LrcView.OnSeekToListener;
+import com.usoftchina.music.R;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.util.List;
+
+public class MainMusicActivity extends AppCompatActivity {
+	private MediaPlayer mPlayer;
+	/**    控制播放的SeekBar***/
+	
+	private SeekBar mPlayerSeekBar;
+	/**控制歌词字体大小的SeekBar***/
+	private SeekBar mLrcSeekBar;
+	private Button mPlayBtn;
+	private com.lg.lrcview_master.LrcView mLrcView;
+	private	TextView tv_timeStart;
+	private	TextView tv_timeTotal;
+
+	private Toast mPlayerToast;
+	private Toast mLrcToast;
+	private Toolbar toolbar;
+	@Override
+	protected void onCreate(Bundle savedInstanceState) {
+		super.onCreate(savedInstanceState);
+		setContentView(R.layout.activity_main_music);
+         
+		
+		initViews();
+		initPlayer();
+		toolbar=findViewById(R.id.commonToolBar);
+		StatusBarUtil.immersive(this, 0x00000000, 0.0f);
+		setSupportActionBar(toolbar);
+		getSupportActionBar().setDisplayShowTitleEnabled(false);
+		StatusBarUtil.setPaddingSmart(this, toolbar);
+
+		toolbar.setNavigationIcon(R.drawable.back_black);
+		toolbar.setNavigationOnClickListener(new OnClickListener() {
+			@Override
+			public void onClick(View view) {
+				onBackPressed();
+			}
+		});
+	}
+	private void initViews() {
+		mLrcView = (com.lg.lrcview_master.LrcView) findViewById(R.id.lrcView);
+		mLrcView.setOnSeekToListener(onSeekToListener);
+		mLrcView.setOnLrcClickListener(onLrcClickListener);
+		tv_timeStart = findViewById(R.id.tv_timeStart);
+		tv_timeTotal=findViewById(R.id.tv_timeTotal);
+		mPlayerSeekBar = (SeekBar) findViewById(R.id.include_player_seekbar);
+		mLrcSeekBar = (SeekBar) findViewById(R.id.include_lrc_seekbar);
+		mLrcSeekBar.setMax(100);
+		//为seekbar设置当前的progress
+		mLrcSeekBar.setOnSeekBarChangeListener(onSeekBarChangeListener);
+		new Handler().postDelayed(new Runnable() {
+			@Override
+			public void run() {
+				float scalingFactor = com.lg.lrcview_master.LrcView.MIN_SCALING_FACTOR + 0*(com.lg.lrcview_master.LrcView.MAX_SCALING_FACTOR- com.lg.lrcview_master.LrcView.MIN_SCALING_FACTOR)/100;
+				mLrcView.setLrcScalingFactor(scalingFactor);
+			}
+		},1000);
+		mPlayBtn = (Button) findViewById(R.id.btnPlay);
+		mPlayerSeekBar.setOnSeekBarChangeListener(onSeekBarChangeListener);
+		mPlayBtn.setOnClickListener(onClickListener);
+		//getCommonToolBar().setBackgroundResource(R.color.transparent);
+		
+	}
+
+	@Override
+	protected void onResume() {
+		super.onResume();
+	    
+	}
+
+	private void initPlayer() {
+		mPlayer = MediaPlayer.create(this, R.raw.yingtang);
+		mPlayer.setOnCompletionListener(onCompletionListener);
+	}
+	OnCompletionListener onCompletionListener = new OnCompletionListener() {
+		
+		@Override
+		public void onCompletion(MediaPlayer mp) {
+			mPlayBtn.setText("play");
+			mPlayBtn.setSelected(false);
+			mLrcView.reset();
+			handler.removeMessages(0);
+			mPlayerSeekBar.setProgress(0);
+		}
+	};
+	OnLrcClickListener onLrcClickListener = new OnLrcClickListener() {
+
+		@Override
+		public void onClick() {
+			//Toast.makeText(getApplicationContext(), "歌词被点击啦", Toast.LENGTH_SHORT).show();
+		}
+	};
+	OnSeekToListener onSeekToListener = new OnSeekToListener() {
+
+		@Override
+		public void onSeekTo(int progress) {
+			mPlayer.seekTo(progress);
+			
+		}
+	};
+	Handler handler = new Handler(){
+		public void handleMessage(android.os.Message msg) {
+			mPlayerSeekBar.setMax(mPlayer.getDuration());
+			mPlayerSeekBar.setProgress(mPlayer.getCurrentPosition());
+			handler.sendEmptyMessageDelayed(0, 100);
+		};
+	};
+	OnClickListener onClickListener = new OnClickListener() {
+
+		@Override
+		public void onClick(View v) {
+			if(v == mPlayBtn){
+				if("play".equals(mPlayBtn.getText())){
+					mPlayer.start();
+					mLrcView.setLrcRows(getLrcRows());
+					handler.sendEmptyMessage(0);
+					mPlayBtn.setText("暂停");
+					mPlayBtn.setSelected(true);
+				}else{
+
+					if(mPlayer.isPlaying()){
+						mPlayer.pause();
+						mPlayBtn.setText("播放");
+						mPlayBtn.setSelected(false);
+					}else{
+						mPlayBtn.setSelected(true);
+						mPlayer.start();
+						mPlayBtn.setText("暂停");
+					}
+				}
+			}
+		}
+	};
+
+	OnSeekBarChangeListener onSeekBarChangeListener = new OnSeekBarChangeListener() {
+
+		@Override
+		public void onStopTrackingTouch(SeekBar seekBar) {
+			if(seekBar == mPlayerSeekBar){
+				mPlayer.seekTo(seekBar.getProgress());
+				handler.sendEmptyMessageDelayed(0, 100);
+			}
+		}
+
+		@Override
+		public void onStartTrackingTouch(SeekBar seekBar) {
+			if(seekBar == mPlayerSeekBar){
+				handler.removeMessages(0);
+			}
+		}
+
+		@Override
+		public void onProgressChanged(SeekBar seekBar, int progress,
+				boolean fromUser) {
+			if(seekBar == mPlayerSeekBar){
+				mLrcView.seekTo(progress, true,fromUser);
+//				Log.d("timeStr",mLrcView.getmLrcRows().get(0).getTime()+"");
+				Log.d("timeStrA",progress+"");
+				tv_timeStart.setText(formatTimeFromProgress(progress));
+				tv_timeTotal.setText(formatTimeFromProgress(mPlayer.getDuration()));
+				if(fromUser){
+					
+					showPlayerToast(formatTimeFromProgress(progress));
+				}
+			}else if(seekBar == mLrcSeekBar){
+				float scalingFactor = com.lg.lrcview_master.LrcView.MIN_SCALING_FACTOR + progress*(com.lg.lrcview_master.LrcView.MAX_SCALING_FACTOR- com.lg.lrcview_master.LrcView.MIN_SCALING_FACTOR)/100;
+				mLrcView.setLrcScalingFactor(scalingFactor);
+				showLrcToast((int)(scalingFactor*100)+"%");
+			}
+		}
+
+	};
+	/**
+	 * 将播放进度的毫米数转换成时间格式
+	 * 如 3000 --> 00:03 
+	 * @param progress
+	 * @return
+	 */
+	private String formatTimeFromProgress(int progress){
+		//总的秒数 
+		int msecTotal = progress/1000;
+		int min = msecTotal/60;
+		int msec = msecTotal%60;
+		String minStr = min < 10 ? "0"+min:""+min;
+		String msecStr = msec < 10 ? "0"+msec:""+msec;
+		return minStr+":"+msecStr;
+	}
+	/**
+	 * 获取歌词List集合
+	 * @return
+	 */
+	private List<LrcRow> getLrcRows(){
+		List<LrcRow> rows = null;
+		InputStream is = getResources().openRawResource(R.raw.yingtanglrc);
+		BufferedReader br = new BufferedReader(new InputStreamReader(is));
+		String line ;
+		StringBuffer sb = new StringBuffer();
+		try {
+			while((line = br.readLine()) != null){
+				sb.append(line+"\n");
+			}
+			System.out.println(sb.toString());
+			rows = DefaultLrcParser.getIstance().getLrcRows(sb.toString());
+		} catch (IOException e) {
+			e.printStackTrace();
+		}
+		return rows;
+	}
+
+	private TextView mPlayerToastTv;
+	private void showPlayerToast(String text){
+		if(mPlayerToast == null){
+			mPlayerToast = new Toast(this);
+			mPlayerToastTv = (TextView) LayoutInflater.from(this).inflate(R.layout.toast, null);
+			mPlayerToast.setView(mPlayerToastTv);
+			mPlayerToast.setDuration(Toast.LENGTH_SHORT);
+		}
+		mPlayerToastTv.setText(text);
+		mPlayerToast.show();
+	}
+	private TextView mLrcToastTv;
+	private void showLrcToast(String text){
+		if(mLrcToast == null){
+			mLrcToast = new Toast(this);
+			mLrcToastTv = (TextView) LayoutInflater.from(this).inflate(R.layout.toast, null);
+			mLrcToast.setView(mLrcToastTv);
+			mLrcToast.setDuration(Toast.LENGTH_SHORT);
+		}
+		mLrcToastTv.setText(text);
+		mLrcToast.show();
+	}
+	
+	@Override
+	protected void onDestroy() {
+		super.onDestroy();
+		handler.removeMessages(0);
+		mPlayer.stop();
+		mPlayer.release();
+		mPlayer = null;
+		mLrcView.reset();
+	}
+}

BIN
app_modular/appmusic/src/main/res/drawable-hdpi/back_black.png


BIN
app_modular/appmusic/src/main/res/drawable-hdpi/bg_music.jpg


BIN
app_modular/appmusic/src/main/res/drawable-hdpi/bg_yingtang_music.png


BIN
app_modular/appmusic/src/main/res/drawable-hdpi/ic_launcher.png


BIN
app_modular/appmusic/src/main/res/drawable-hdpi/ic_player_seeker.png


BIN
app_modular/appmusic/src/main/res/drawable-hdpi/icon_music_yingtang.png


BIN
app_modular/appmusic/src/main/res/drawable-hdpi/music_paying.png


BIN
app_modular/appmusic/src/main/res/drawable-hdpi/music_start.png


BIN
app_modular/appmusic/src/main/res/drawable-hdpi/music_top.png


BIN
app_modular/appmusic/src/main/res/drawable-xhdpi/back_black.png


BIN
app_modular/appmusic/src/main/res/drawable-xhdpi/ic_launcher.png


BIN
app_modular/appmusic/src/main/res/drawable-xhdpi/music_paying.png


BIN
app_modular/appmusic/src/main/res/drawable-xhdpi/music_start.png


BIN
app_modular/appmusic/src/main/res/drawable-xxhdpi/back_black.png


BIN
app_modular/appmusic/src/main/res/drawable-xxhdpi/ic_launcher.png


BIN
app_modular/appmusic/src/main/res/drawable-xxhdpi/music_paying.png


BIN
app_modular/appmusic/src/main/res/drawable-xxhdpi/music_start.png


+ 18 - 0
app_modular/appmusic/src/main/res/drawable/layer_list_progrssbar_play_bottom.xml

@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layer-list
+  xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:id="@android:id/background">
+        <shape>
+            <solid android:color="#ffdcdcdc" />
+            <corners android:radius="1dip" />
+        </shape>
+    </item>
+    <item android:id="@android:id/progress">
+        <clip>
+            <shape>
+                <solid android:color="#99666666" />
+                <corners android:radius="1dp" />
+            </shape>
+        </clip>
+    </item>
+</layer-list>

+ 11 - 0
app_modular/appmusic/src/main/res/drawable/layer_list_thumb_playing_default.xml

@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layer-list
+    xmlns:android="http://schemas.android.com/apk/res/android">
+    <item >
+        <shape android:shape="oval">
+            <solid
+                android:color="@android:color/holo_green_light" />
+        </shape>
+    </item>
+    <item  android:drawable="@drawable/ic_player_seeker" />
+</layer-list>

+ 10 - 0
app_modular/appmusic/src/main/res/drawable/layer_list_thumb_playing_press.xml

@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layer-list
+  xmlns:android="http://schemas.android.com/apk/res/android">
+    <item>
+        <shape android:shape="oval">
+            <solid android:color="#99249ef6" />
+        </shape>
+    </item>
+    <item android:drawable="@drawable/ic_player_seeker" />
+</layer-list>

+ 10 - 0
app_modular/appmusic/src/main/res/drawable/selector_btn.xml

@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android" >
+    <item android:state_pressed="true"
+        android:drawable="@drawable/music_paying"
+        ></item>
+    <item android:state_selected="true"
+        android:drawable="@drawable/music_paying"
+        ></item>
+    <item android:drawable="@drawable/music_start"></item>
+</selector>

+ 6 - 0
app_modular/appmusic/src/main/res/drawable/selector_progress_bar_playing.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item 
+        android:drawable="@drawable/layer_list_thumb_playing_press" android:state_pressed="true"/>
+    <item  android:drawable="@drawable/layer_list_thumb_playing_default"/>
+</selector>

+ 9 - 0
app_modular/appmusic/src/main/res/drawable/shape_btn_n.xml

@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android" 
+    android:shape="rectangle"
+    >
+    
+    <corners android:radius="2dp"/>
+
+    <solid android:color="#ffffff"/>
+</shape>

+ 9 - 0
app_modular/appmusic/src/main/res/drawable/shape_btn_p.xml

@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android" 
+    android:shape="rectangle"
+    >
+    
+    <corners android:radius="2dp"/>
+
+    <solid android:color="#EE4000"/>
+</shape>

+ 9 - 0
app_modular/appmusic/src/main/res/drawable/shape_btn_u.xml

@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android" 
+    android:shape="rectangle"
+    >
+    
+    <corners android:radius="2dp"/>
+
+    <solid android:color="#444444"/>
+</shape>

+ 10 - 0
app_modular/appmusic/src/main/res/drawable/shape_toast_bg.xml

@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle"
+     >
+    <solid android:color="#ffffff"/>
+    <corners android:radius="3dp"/>
+
+    <stroke android:width="2dp"
+        android:color="#88444444"/>
+</shape>

+ 101 - 0
app_modular/appmusic/src/main/res/layout/activity_main_music.xml

@@ -0,0 +1,101 @@
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+ 
+    <ImageView
+        android:layout_width="fill_parent"
+        android:layout_height="match_parent"
+        android:alpha="1"
+        android:scaleType="centerCrop"
+        android:src="@drawable/bg_yingtang_music"
+        android:background="@color/transparent"
+        android:layout_alignParentTop="true"
+        android:layout_alignParentLeft="true"
+        android:layout_alignParentStart="true" />
+
+    <RelativeLayout
+        android:id="@+id/bottom"
+        android:layout_width="match_parent"
+        android:layout_height="120dp"
+        android:layout_alignParentBottom="true"
+        android:orientation="vertical" >
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="90dp"
+            android:layout_alignParentBottom="true"
+            android:gravity="center"
+            android:orientation="horizontal"
+            android:paddingBottom="5dp"
+            android:paddingLeft="20dp" >
+
+            <Button
+                android:id="@+id/btnPlay"
+                android:layout_width="30dp"
+                android:layout_height="30dp"
+                android:textColor="@android:color/transparent"
+                android:background="@drawable/selector_btn"
+                android:text="play" />
+
+            <include
+                android:id="@+id/include_lrc_seekbar"
+                android:visibility="gone"
+                layout="@layout/seekbar" />
+        </LinearLayout>
+        <RelativeLayout 
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content">
+        <TextView
+            android:id="@+id/tv_timeStart"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginLeft="10dp"
+            android:layout_centerVertical="true"
+            android:text="00:00" />
+        <include
+            android:id="@+id/include_player_seekbar"
+            android:layout_width="wrap_content"
+            android:layout_height="20dp"
+            android:layout_centerVertical="true"
+            android:layout_toEndOf="@+id/tv_timeStart"
+            android:layout_toRightOf="@+id/tv_timeStart"
+            layout="@layout/seekbar" />
+
+        <TextView
+            android:id="@+id/tv_timeTotal"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_centerVertical="true"
+            android:layout_marginRight="5dp"
+            android:layout_toRightOf="@+id/include_player_seekbar"
+            android:text="00:00" />
+        </RelativeLayout>
+    </RelativeLayout>
+
+    <android.support.v7.widget.Toolbar 
+        android:id="@+id/commonToolBar"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:minHeight="?attr/actionBarSize"
+        android:background="@color/transparent">
+        <TextView
+            android:id="@+id/commonTitleTv"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_gravity="left|center_vertical"
+            android:text="智慧英唐"
+            android:textColor="#666666"
+            android:textSize="18sp" />
+    </android.support.v7.widget.Toolbar>
+    <com.lg.lrcview_master.LrcView
+        android:id="@+id/lrcView"
+       android:layout_below="@+id/commonToolBar"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:layout_above="@id/bottom"
+        android:layout_marginLeft="30dp"
+        android:layout_marginRight="30dp"
+        android:layout_marginBottom="10dp"/>
+
+</RelativeLayout>

+ 18 - 0
app_modular/appmusic/src/main/res/layout/seekbar.xml

@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+
+
+
+    <SeekBar
+       xmlns:android="http://schemas.android.com/apk/res/android"
+        android:id="@+id/seekBar"
+        android:layout_width="wrap_content"
+        android:layout_height="20dp"
+        android:layout_alignParentTop="true"
+        android:layout_centerVertical="true"
+        android:maxHeight="1.5dp"
+        android:minHeight="1.5dp"
+        android:minWidth="230dp"
+        android:progressDrawable="@drawable/layer_list_progrssbar_play_bottom"
+        android:thumb="@drawable/selector_progress_bar_playing"
+        android:thumbOffset="10dp" />

+ 16 - 0
app_modular/appmusic/src/main/res/layout/toast.xml

@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<TextView xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:id="@+id/tv_toast_progress"
+    android:text="01:22"
+    android:background="@drawable/shape_toast_bg"
+    android:paddingLeft="20dp"
+    android:paddingRight="20dp"
+    android:paddingTop="10dp"
+    android:paddingBottom="10dp"
+    android:textColor="#000000"
+    >
+    
+
+</TextView>

BIN
app_modular/appmusic/src/main/res/raw/yingtang.mp3


+ 33 - 0
app_modular/appmusic/src/main/res/raw/yingtanglrc.lrc

@@ -0,0 +1,33 @@
+[00:00.01]歌曲:智慧英唐
+[00:20.35]
+[00:20.55]英唐英唐
+[00:24.72]迎着朝阳启航
+[00:28.56]意气风发斗志昂扬
+[00:32.55]豪情藏在胸膛
+[00:36.91]信念是我们的行囊...
+[00:45.00]泥泞中互为肩膀
+[00:49.16]彼此不再彷徨
+[00:52.98]只要心怀梦想
+[00:57.17]定能乘风破浪
+[01:01.31]自强不息坚定地追逐梦想
+[01:09.17]厚德载物诚信是我们的干粮
+[01:17.31]开拓创新英唐智慧要让全球共享
+[01:25.75]携手共进挥洒汗水铸就强大英唐
+[01:33.81]
+[01:42.48]英唐英唐
+[01:46.50]怀揣梦想启航
+[01:50.22]越过高山跨过海洋
+[01:54.62]来路不及回望
+[01:58.41]奉献是我们的信仰...
+[02:06.92]孤独时相互守望
+[02:10.90]风雨中一起成长
+[02:14.99]只要挑起责任
+[02:18.68]定能铸就辉煌
+[02:23.07]自强不息坚定地追逐梦想
+[02:31.22]厚德载物诚信是我们的干粮
+[02:39.13]开拓创新英唐智慧要让全球共享
+[02:47.35]携手共进挥洒汗水铸就强大英唐
+[02:55.27]
+[02:56.14]人人都贡献力量
+[03:00.18]让世界为我们的精彩鼓掌...
+[03:06.92]

+ 3 - 0
app_modular/appmusic/src/main/res/values/strings.xml

@@ -0,0 +1,3 @@
+<resources>
+    <string name="app_name">music</string>
+</resources>

+ 17 - 0
app_modular/appmusic/src/test/java/com/usoftchina/music/ExampleUnitTest.java

@@ -0,0 +1,17 @@
+package com.usoftchina.music;
+
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+
+/**
+ * Example local unit test, which will execute on the development machine (host).
+ *
+ * @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
+ */
+public class ExampleUnitTest {
+    @Test
+    public void addition_isCorrect() throws Exception {
+        assertEquals(4, 2 + 2);
+    }
+}

+ 25 - 14
app_modular/apputils/src/main/res/layout/item_select_alert_pop.xml

@@ -1,17 +1,19 @@
 <?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:layout_height="wrap_content"
     android:gravity="center_horizontal"
     android:orientation="vertical"
-    android:paddingLeft="10dp"
-    android:paddingRight="10dp"
-    android:paddingTop="10dp">
+    android:paddingLeft="@dimen/dp_10"
+    android:paddingTop="@dimen/dp_10"
+    android:paddingRight="@dimen/dp_10"
+    android:paddingBottom="@dimen/dp_4">
 
     <TextView
         android:id="@+id/title_tv"
         android:layout_width="match_parent"
         android:layout_height="20dp"
+        android:textStyle="bold"
         android:gravity="center"
         android:text="@string/common_dialog_title"
         android:textColor="@color/text_main"
@@ -21,24 +23,29 @@
     <TextView
         android:id="@+id/message_tv"
         android:layout_width="match_parent"
-        android:layout_height="50dp"
+        android:layout_height="60dp"
         android:layout_marginTop="5dp"
+        android:paddingLeft="@dimen/dp_10"
+        android:paddingRight="@dimen/dp_10"
         android:ellipsize="end"
-        android:gravity="center"
+        android:gravity="left|center_vertical"
         android:maxLines="2"
         android:textColor="@color/text_hine"
         android:textSize="@dimen/text_main" />
 
-    <View
+ <!--   <View
         android:layout_width="match_parent"
         android:layout_height="2px"
         android:layout_marginTop="10dp"
         android:background="@color/item_line" />
-
+-->
     <LinearLayout
         android:layout_width="match_parent"
         android:layout_height="40dp"
         android:orientation="horizontal"
+        android:paddingLeft="@dimen/dp_10"
+        android:paddingRight="@dimen/dp_10"
+        android:padding="@dimen/dp_4"
         android:textColor="@color/text_main"
         android:textSize="@dimen/text_main">
 
@@ -47,15 +54,17 @@
             android:layout_width="0dp"
             android:layout_height="match_parent"
             android:layout_weight="1"
+            android:textColor="@color/titleBlue"
+            android:background="@drawable/selector_cancel_bg"
             android:gravity="center"
             android:text="@string/common_cancel"
-            android:textColor="@color/text_main"
-            android:textSize="@dimen/text_main" />
+            android:layout_marginRight="20dp"
+            android:textSize="@dimen/text_hine" />
 
-        <View
+ <!--       <View
             android:layout_width="2px"
             android:layout_height="match_parent"
-            android:background="@color/item_line" />
+            android:background="@color/item_line" />-->
 
         <TextView
             android:id="@+id/sure_tv"
@@ -63,8 +72,10 @@
             android:layout_height="match_parent"
             android:layout_weight="1"
             android:gravity="center"
+            android:layout_marginLeft="20dp"
+            android:background="@drawable/selector_confirm_bg"
             android:text="@string/common_sure"
-            android:textColor="@color/text_main"
-            android:textSize="@dimen/text_main" />
+            android:textColor="@color/white"
+            android:textSize="@dimen/text_hine" />
     </LinearLayout>
 </LinearLayout>

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

@@ -414,14 +414,17 @@
         <activity
             android:name=".activity.PublicInquiryListActivity"
             android:hardwareAccelerated="true"
+            android:theme="@style/StyledBlueIndicators"
             android:windowSoftInputMode="adjustPan|stateHidden" />
         <activity
             android:name=".activity.CustomerInquiryListActivity"
             android:hardwareAccelerated="true"
+            android:theme="@style/StyledBlueIndicators"
             android:windowSoftInputMode="adjustPan|stateHidden" />
         <activity
             android:name=".activity.PurchaseOrderListActivity"
             android:hardwareAccelerated="true"
+            android:theme="@style/StyledBlueIndicators"
             android:windowSoftInputMode="adjustPan|stateHidden" />
         <activity android:name=".activity.PublicInquiryDetailActivity" />
 

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

@@ -1981,7 +1981,8 @@ public class ExpenseReimbursementActivity extends BaseActivity implements View.O
         if (item.getItemId() == R.id.push){
             startActivity(new Intent(mContext, FormListSelectActivity.class)
                     .putExtra("caller", caller)
-                    .putExtra("title", getToolBarTitle().toString()));
+                    .putExtra("title", getToolBarTitle().toString())
+            );
         }
         if (item.getItemId() == android.R.id.home){
 //            if (formid != 0){

+ 9 - 14
app_modular/appworks/src/main/java/com/uas/appworks/OA/erp/activity/FlightsActivity.java

@@ -1,9 +1,7 @@
 package com.uas.appworks.OA.erp.activity;
 
-import android.content.DialogInterface;
 import android.content.Intent;
 import android.os.Bundle;
-import android.support.v7.app.AlertDialog;
 import android.support.v7.widget.LinearLayoutManager;
 import android.support.v7.widget.RecyclerView;
 import android.view.Menu;
@@ -15,12 +13,13 @@ import com.core.api.wxapi.ApiPlatform;
 import com.core.api.wxapi.ApiUtils;
 import com.core.base.OABaseActivity;
 import com.core.widget.RecycleViewDivider;
-import com.uas.appworks.R;
+import com.modular.apputils.utils.PopupWindowHelper;
 import com.uas.appworks.OA.erp.adapter.FlightsAdapter;
 import com.uas.appworks.OA.erp.model.FlightsModel;
 import com.uas.appworks.OA.erp.presenter.FlightsPresernter;
 import com.uas.appworks.OA.erp.utils.MostLinearLayoutManager;
 import com.uas.appworks.OA.erp.view.IFlightsView;
+import com.uas.appworks.R;
 
 import java.util.List;
 
@@ -129,19 +128,15 @@ public class FlightsActivity extends OABaseActivity implements IFlightsView, Fli
     }
 
     private void showDeleteDialog(final int position) {
-        AlertDialog.Builder builder = new AlertDialog.Builder(ct);
-        builder.setTitle(R.string.common_dialog_title).setMessage(R.string.delete_back_default_work)
-                .setPositiveButton(R.string.common_sure, new DialogInterface.OnClickListener() {
-                    @Override
-                    public void onClick(DialogInterface dialogInterface, int i) {
-                        presernter.deleteWork(adapter.getModels(), position);
-                    }
-                })
-                .setNegativeButton(R.string.common_cancel, new DialogInterface.OnClickListener() {
+        PopupWindowHelper.showAlart(FlightsActivity.this, getString(R.string.common_dialog_title)
+                , getString(R.string.delete_back_default_work), new PopupWindowHelper.OnSelectListener() {
                     @Override
-                    public void onClick(DialogInterface dialogInterface, int i) {
+                    public void select(boolean selectOk) {
+                        if (selectOk) {
+                            presernter.deleteWork(adapter.getModels(), position);
+                        }
                     }
-                }).show();
+                });
     }
 
     private void endActivity() {

+ 30 - 32
app_modular/appworks/src/main/java/com/uas/appworks/OA/erp/activity/OfficeAddressSettingsActivity.java

@@ -1,12 +1,10 @@
 package com.uas.appworks.OA.erp.activity;
 
 import android.app.Activity;
-import android.content.DialogInterface;
 import android.content.Intent;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Message;
-import android.support.v7.app.AlertDialog;
 import android.text.Editable;
 import android.text.Selection;
 import android.text.TextUtils;
@@ -45,9 +43,10 @@ import com.core.widget.view.Activity.SearchLocationActivity;
 import com.core.widget.view.Activity.SelectActivity;
 import com.core.widget.view.model.SearchPoiParam;
 import com.lidroid.xutils.ViewUtils;
-import com.uas.appworks.R;
+import com.modular.apputils.utils.PopupWindowHelper;
 import com.uas.appworks.OA.erp.model.OfficeAddressBean;
 import com.uas.appworks.OA.platform.model.PlatSignAddressBean;
+import com.uas.appworks.R;
 
 import org.json.JSONArray;
 import org.json.JSONException;
@@ -399,7 +398,7 @@ public class OfficeAddressSettingsActivity extends BaseActivity {
                     }
 
                     if (mOfficeAddressBean.getListdata().get(0).getCS_INNERDISTANCE() > 0) {
-                        work_range.setText(mOfficeAddressBean.getListdata().get(0).getCS_INNERDISTANCE() +  getString(R.string.rice));
+                        work_range.setText(mOfficeAddressBean.getListdata().get(0).getCS_INNERDISTANCE() + getString(R.string.rice));
                     } else {
                         work_range.setText(default_work_range + getString(R.string.rice));
                     }
@@ -756,45 +755,44 @@ public class OfficeAddressSettingsActivity extends BaseActivity {
             viewHolder.office_address_delete_im.setOnClickListener(new View.OnClickListener() {
                 @Override
                 public void onClick(View v) {
-                    new AlertDialog.Builder(mContext)
-                            .setTitle(getString(R.string.common_notice))
-                            .setMessage(getString(R.string.delete_address_notice1))
-                            .setNegativeButton(getString(R.string.common_cancel), null)
-                            .setPositiveButton(getString(R.string.common_sure), new DialogInterface.OnClickListener() {
+                    PopupWindowHelper.showAlart(OfficeAddressSettingsActivity.this,
+                            getString(R.string.common_notice), getString(R.string.delete_address_notice1),
+                            new PopupWindowHelper.OnSelectListener() {
                                 @Override
-                                public void onClick(DialogInterface dialog, int which) {
-                                    if (MyApplication.getInstance().isNetworkActive()) {
-                                        mPosition = position;
-                                        progressDialog.show();
-                                        finalViewHolder.office_address_delete_im.setEnabled(false);
-                                        if (mPosition < listdada_size) {
-                                            doDeleteAddress(mPosition, ok);
-                                            finalViewHolder.office_address_delete_im.setEnabled(true);
-                                        } else {
-                                            if (mPosition < address_names.size()) {
-                                                address_names.remove(mPosition);
-                                                address_location.remove(mPosition);
-                                                address_longitude.remove(mPosition);
-                                                address_latitud.remove(mPosition);
-                                                address_id.remove(mPosition);
-                                                myadapter.notifyDataSetChanged();
+                                public void select(boolean selectOk) {
+                                    if (selectOk) {
+                                        if (MyApplication.getInstance().isNetworkActive()) {
+                                            mPosition = position;
+                                            progressDialog.show();
+                                            finalViewHolder.office_address_delete_im.setEnabled(false);
+                                            if (mPosition < listdada_size) {
+                                                doDeleteAddress(mPosition, ok);
                                                 finalViewHolder.office_address_delete_im.setEnabled(true);
-                                                progressDialog.dismiss();
-                                            }
+                                            } else {
+                                                if (mPosition < address_names.size()) {
+                                                    address_names.remove(mPosition);
+                                                    address_location.remove(mPosition);
+                                                    address_longitude.remove(mPosition);
+                                                    address_latitud.remove(mPosition);
+                                                    address_id.remove(mPosition);
+                                                    myadapter.notifyDataSetChanged();
+                                                    finalViewHolder.office_address_delete_im.setEnabled(true);
+                                                    progressDialog.dismiss();
+                                                }
 
+                                            }
+                                        } else {
+                                            ToastMessage(getString(R.string.common_notlinknet));
                                         }
-                                    } else {
-                                        ToastMessage(getString(R.string.common_notlinknet));
                                     }
-
                                 }
-                            }).show();
+                            });
                 }
             });
             return convertView;
         }
 
-        private void doDeleteAddress(int mPosition,Boolean ok) {
+        private void doDeleteAddress(int mPosition, Boolean ok) {
             if (!ok) return;
             delete_position = mPosition;
             if (!platform) {

+ 27 - 27
app_modular/appworks/src/main/java/com/uas/appworks/OA/erp/activity/SignSeniorSettingActivity.java

@@ -1,11 +1,9 @@
 package com.uas.appworks.OA.erp.activity;
 
-import android.content.DialogInterface;
 import android.content.Intent;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Message;
-import android.support.v7.app.AlertDialog;
 import android.text.TextUtils;
 import android.view.View;
 import android.widget.Button;
@@ -30,6 +28,7 @@ import com.core.utils.WorkHandlerUtil;
 import com.core.widget.view.Activity.SelectActivity;
 import com.core.widget.view.SwitchView;
 import com.lidroid.xutils.ViewUtils;
+import com.modular.apputils.utils.PopupWindowHelper;
 import com.uas.appworks.R;
 
 import java.util.ArrayList;
@@ -302,33 +301,33 @@ public class SignSeniorSettingActivity extends BaseActivity implements View.OnCl
         }
 
         if (!TextUtils.isEmpty(first_latetime)) {
-            if (Integer.parseInt(first_latetime) > 0){
+            if (Integer.parseInt(first_latetime) > 0) {
                 late_time_tv.setText(first_latetime + getString(R.string.minute));
-            }else {
+            } else {
                 late_time_tv.setText(0 + getString(R.string.minute));
             }
 
         }
         if (!TextUtils.isEmpty(first_overlatetime)) {
-            if (Integer.parseInt(first_overlatetime) > 0){
+            if (Integer.parseInt(first_overlatetime) > 0) {
                 serious_late_time_tv.setText(first_overlatetime + getString(R.string.minute));
-            }else{
+            } else {
                 serious_late_time_tv.setText(0 + getString(R.string.minute));
             }
         }
 
         if (!TextUtils.isEmpty(first_earlyoff)) {
-            if (Integer.parseInt(first_earlyoff) > 0){
+            if (Integer.parseInt(first_earlyoff) > 0) {
                 leave_early_tv.setText(first_earlyoff + getString(R.string.minute));
-            }else {
+            } else {
                 leave_early_tv.setText(0 + getString(R.string.minute));
             }
         }
 
         if (!TextUtils.isEmpty(first_nonclass)) {
-            if (Integer.parseInt(first_nonclass) > 0){
+            if (Integer.parseInt(first_nonclass) > 0) {
                 absenteeism_time_tv.setText(first_nonclass + getString(R.string.minute));
-            }else {
+            } else {
                 absenteeism_time_tv.setText(0 + getString(R.string.minute));
             }
         }
@@ -341,21 +340,21 @@ public class SignSeniorSettingActivity extends BaseActivity implements View.OnCl
     public void onClick(View v) {
         int requestCode = 0;
         String[] time = null;
-        if (v.getId() == R.id.senior_setting_late_time_tv){
+        if (v.getId() == R.id.senior_setting_late_time_tv) {
             time = getResources().getStringArray(R.array.late_time);
             requestCode = LATE_TIME_CODE;
-        }else if (v.getId() == R.id.senior_setting_serious_late_time_tv){
+        } else if (v.getId() == R.id.senior_setting_serious_late_time_tv) {
             time = getResources().getStringArray(R.array.serious_late_time);
             requestCode = ERIOUS_LATE_TIME;
-        }else if (v.getId() == R.id.senior_setting_leave_early_tv){
+        } else if (v.getId() == R.id.senior_setting_leave_early_tv) {
             time = getResources().getStringArray(R.array.serious_leave_early_time);
             requestCode = LEAVE_EARLY_TIME;
-        }else if (v.getId() == R.id.senior_setting_absenteeism_tv){
+        } else if (v.getId() == R.id.senior_setting_absenteeism_tv) {
             time = getResources().getStringArray(R.array.absenteeism_time);
             requestCode = ABSENTEEISM_TIME;
-        }else if (v.getId() == R.id.senior_setting_save_bt){
+        } else if (v.getId() == R.id.senior_setting_save_bt) {
             doTimejudgment();
-        }else if (v.getId() ==  R.id.senior_setting_auto_sign_sw){
+        } else if (v.getId() == R.id.senior_setting_auto_sign_sw) {
             if (!platform) {
                 doCheckjudge();
             } else {
@@ -389,19 +388,20 @@ public class SignSeniorSettingActivity extends BaseActivity implements View.OnCl
 
     private void doCheckjudge() {
         if (auto_sign == 1) {
-            new AlertDialog.Builder(mContext).setTitle(getString(R.string.common_notice)).setMessage(getString(R.string.ss_sign_close_notice2))
-                    .setNegativeButton(getString(R.string.common_cancel), null)
-                    .setPositiveButton(getString(R.string.common_sure), new DialogInterface.OnClickListener() {
+            PopupWindowHelper.showAlart(SignSeniorSettingActivity.this, getString(R.string.common_notice)
+                    , getString(R.string.ss_sign_close_notice2), new PopupWindowHelper.OnSelectListener() {
                         @Override
-                        public void onClick(DialogInterface dialog, int which) {
-                            if (!platform) {
-                                auto_sign = 0;
-                                doAutoSignSetting();
-                            } else {
-                                ToastMessage(getString(R.string.ss_sign_closed));
+                        public void select(boolean selectOk) {
+                            if (selectOk) {
+                                if (!platform) {
+                                    auto_sign = 0;
+                                    doAutoSignSetting();
+                                } else {
+                                    ToastMessage(getString(R.string.ss_sign_closed));
+                                }
                             }
                         }
-                    }).show();
+                    });
         } else if (auto_sign == 0) {
             if (!platform) {
                 auto_sign = 1;
@@ -496,7 +496,7 @@ public class SignSeniorSettingActivity extends BaseActivity implements View.OnCl
 
     @Override
     public void onCheckedChanged(View view, final boolean isChecked) {
-        if (view.getId() == R.id.signin_alert_sv){
+        if (view.getId() == R.id.signin_alert_sv) {
             PreferenceUtils.putBoolean(PreferenceUtils.AUTO_SIGN_SW, isChecked);
         }
     }

+ 16 - 19
app_modular/appworks/src/main/java/com/uas/appworks/OA/erp/activity/WorkDailyShowActivity.java

@@ -1,13 +1,11 @@
 package com.uas.appworks.OA.erp.activity;
 
 import android.content.Context;
-import android.content.DialogInterface;
 import android.content.Intent;
 import android.os.Build;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Message;
-import android.support.v7.app.AlertDialog;
 import android.text.Editable;
 import android.text.TextUtils;
 import android.text.TextWatcher;
@@ -38,6 +36,7 @@ import com.core.widget.EmptyLayout;
 import com.core.widget.VoiceSearchView;
 import com.handmark.pulltorefresh.library.PullToRefreshBase;
 import com.handmark.pulltorefresh.library.PullToRefreshListView;
+import com.modular.apputils.utils.PopupWindowHelper;
 import com.uas.appworks.OA.erp.model.WorkReportBean;
 import com.uas.appworks.R;
 
@@ -541,28 +540,26 @@ public class WorkDailyShowActivity extends BaseActivity {
             viewHolder.WorkDailyDelete.setOnClickListener(new View.OnClickListener() {
                 @Override
                 public void onClick(View v) {
-                    new AlertDialog
-                            .Builder(mContext)
-                            .setTitle(mContext.getString(R.string.common_notice))
-                            .setMessage(mContext.getString(R.string.delete_notice1))
-                            .setNegativeButton(mContext.getString(R.string.common_cancel), null)
-                            .setPositiveButton(mContext.getString(R.string.common_sure), new DialogInterface.OnClickListener() {
+                    PopupWindowHelper.showAlart(WorkDailyShowActivity.this, getString(R.string.common_notice),
+                            getString(R.string.delete_notice1), new PopupWindowHelper.OnSelectListener() {
                                 @Override
-                                public void onClick(DialogInterface dialog, int which) {
-                                    if (CommonUtil.isNetWorkConnected(mContext)) {
-                                        int mkeyValue = workReportList.get(position).getReportId();
-                                        mFilterPosition = position;
-                                        for (int i = 0; i < mWorkReportList.size(); i++) {
-                                            if (mWorkReportList.get(i).getReportId() == mkeyValue) {
-                                                mRealPosition = i;
+                                public void select(boolean selectOk) {
+                                    if (selectOk) {
+                                        if (CommonUtil.isNetWorkConnected(mContext)) {
+                                            int mkeyValue = workReportList.get(position).getReportId();
+                                            mFilterPosition = position;
+                                            for (int i = 0; i < mWorkReportList.size(); i++) {
+                                                if (mWorkReportList.get(i).getReportId() == mkeyValue) {
+                                                    mRealPosition = i;
+                                                }
                                             }
+                                            dodelete(mkeyValue);
+                                        } else {
+                                            ToastUtil.showToast(mContext, R.string.networks_out);
                                         }
-                                        dodelete(mkeyValue);
-                                    } else {
-                                        ToastUtil.showToast(mContext, R.string.networks_out);
                                     }
                                 }
-                            }).show();
+                            });
                 }
             });
 

+ 73 - 89
app_modular/appworks/src/main/java/com/uas/appworks/OA/erp/activity/WorkReportAddActivity.java

@@ -1,13 +1,11 @@
 package com.uas.appworks.OA.erp.activity;
 
-import android.content.DialogInterface;
 import android.content.Intent;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Message;
 import android.support.annotation.IdRes;
 import android.support.annotation.NonNull;
-import android.support.v7.app.AlertDialog;
 import android.text.Editable;
 import android.text.TextUtils;
 import android.text.TextWatcher;
@@ -45,6 +43,7 @@ import com.me.network.app.http.HttpClient;
 import com.me.network.app.http.Method;
 import com.me.network.app.http.rx.Result2Listener;
 import com.me.network.app.http.rx.ResultSubscriber;
+import com.modular.apputils.utils.PopupWindowHelper;
 import com.uas.appworks.OA.erp.model.WorkReportBean;
 import com.uas.appworks.R;
 
@@ -749,7 +748,7 @@ public class WorkReportAddActivity extends BaseActivity implements View.OnClickL
             mNewScheduleTitleTv.setText(R.string.work_schedule_tomorrow);
             mNewScheduleContentEt.setHint(R.string.please_input_work_schedule_tomorrow);
         } else if (mReportType == Constants.WORK_REPORT_WEEK) {
-           setTitle(R.string.oaworkweekly_title);
+            setTitle(R.string.oaworkweekly_title);
             mCaller = "WorkWeekly";
             mReportTimeBeforeRb.setText(R.string.str_last_week);
             mReportTimePresentRb.setText(R.string.str_this_week);
@@ -1180,17 +1179,15 @@ public class WorkReportAddActivity extends BaseActivity implements View.OnClickL
         } else if (mReportType == Constants.WORK_REPORT_MONTH) {
             submitNotice = String.format(submiString, "月");
         }
-        new AlertDialog
-                .Builder(mContext)
-                .setTitle(getString(R.string.common_notice))
-                .setMessage(submitNotice)
-                .setNegativeButton(getString(R.string.common_cancel), null)
-                .setPositiveButton(getString(R.string.common_sure), new DialogInterface.OnClickListener() {
+        PopupWindowHelper.showAlart(WorkReportAddActivity.this, getString(R.string.common_notice),
+                submitNotice, new PopupWindowHelper.OnSelectListener() {
                     @Override
-                    public void onClick(DialogInterface dialog, int which) {
-                        sendWorkDailyByErp();
+                    public void select(boolean selectOk) {
+                        if (selectOk) {
+                            sendWorkDailyByErp();
+                        }
                     }
-                }).show();
+                });
     }
 
     private void sendWorkDailyByErp() {
@@ -1385,50 +1382,43 @@ public class WorkReportAddActivity extends BaseActivity implements View.OnClickL
         final boolean isResubmit = !TextUtils.isEmpty(resubmit) && ("unsub_tosub".equals(resubmit) || "resubmit".equals(resubmit));
         if ((isResubmit && isUpdateModify) || (mReportTimePresentRb.isChecked() && isPresentExist && isPresentModify)
                 || (mReportTimeBeforeRb.isChecked() && isBeforeExist && isBeforeModify)) {
-
-            new AlertDialog
-                    .Builder(mContext)
-                    .setTitle(getString(R.string.common_notice))
-                    .setMessage("正在离开录入页面,是否更新汇报内容?")
-                    .setNegativeButton(R.string.give_up, new DialogInterface.OnClickListener() {
+            PopupWindowHelper.showAlart(WorkReportAddActivity.this,
+                    getString(R.string.common_notice), "正在离开录入页面,是否更新汇报内容?",
+                    new PopupWindowHelper.OnSelectListener() {
                         @Override
-                        public void onClick(DialogInterface dialog, int which) {
-                            if (isResubmit || isOptionEvent) {
-                                Intent intent1 = new Intent(WorkReportAddActivity.this, WorkDailyShowActivity.class);
-                                intent1.putExtra("caller", mCaller);
-                                intent1.putExtra("report_type", mReportType);
-                                if (isOptionEvent) {
-                                    intent1.putExtra("fromwhere", "nosubmitdaily");
-                                }
-                                startActivityForResult(intent1, WORK_REPORT_LIST);
-                            }
-                            if (!isOptionEvent) {
-                                finish();
-                            }
-                        }
-                    })
-                    .setPositiveButton(R.string.updata, new DialogInterface.OnClickListener() {
-                        @Override
-                        public void onClick(DialogInterface dialog, int which) {
-                            if (mSummaryContentEt.testValidity()) {
-                                if (mNewScheduleContentEt.getText().toString().length() <= WORD_RESTRICTION_NUMBER &&
-                                        mExperienceContentEt.getText().toString().length() <= WORD_RESTRICTION_NUMBER) {
-                                    if (CommonUtil.isNetWorkConnected(WorkReportAddActivity.this)) {
-                                        isOnlyUpdate = true;
-                                        progressDialog.show();
-                                        updateWorkReport();
+                        public void select(boolean selectOk) {
+                            if (selectOk) {
+                                if (mSummaryContentEt.testValidity()) {
+                                    if (mNewScheduleContentEt.getText().toString().length() <= WORD_RESTRICTION_NUMBER &&
+                                            mExperienceContentEt.getText().toString().length() <= WORD_RESTRICTION_NUMBER) {
+                                        if (CommonUtil.isNetWorkConnected(WorkReportAddActivity.this)) {
+                                            isOnlyUpdate = true;
+                                            progressDialog.show();
+                                            updateWorkReport();
+                                        } else {
+                                            ToastUtil.showToast(WorkReportAddActivity.this, R.string.networks_out);
+                                        }
+
                                     } else {
-                                        ToastUtil.showToast(WorkReportAddActivity.this, R.string.networks_out);
+                                        ToastUtil.showToast(WorkReportAddActivity.this, "字数已超限!");
                                     }
-
-                                } else {
-                                    ToastUtil.showToast(WorkReportAddActivity.this, "字数已超限!");
+                                }
+                            } else {
+                                if (isResubmit || isOptionEvent) {
+                                    Intent intent1 = new Intent(WorkReportAddActivity.this, WorkDailyShowActivity.class);
+                                    intent1.putExtra("caller", mCaller);
+                                    intent1.putExtra("report_type", mReportType);
+                                    if (isOptionEvent) {
+                                        intent1.putExtra("fromwhere", "nosubmitdaily");
+                                    }
+                                    startActivityForResult(intent1, WORK_REPORT_LIST);
+                                }
+                                if (!isOptionEvent) {
+                                    finish();
                                 }
                             }
-
                         }
-                    }).create().show();
-
+                    });
         } else {
             if (((mReportTimePresentRb.isChecked() && !isPresentExist)
                     || (mReportTimeBeforeRb.isChecked() && !isBeforeExist)) && !isResubmit) {
@@ -1437,53 +1427,47 @@ public class WorkReportAddActivity extends BaseActivity implements View.OnClickL
                         mExperienceText.length() > 0) {
                     if (mNewScheduleContentEt.getText().toString().length() <= WORD_RESTRICTION_NUMBER &&
                             mExperienceContentEt.getText().toString().length() <= WORD_RESTRICTION_NUMBER) {
-                        new AlertDialog
-                                .Builder(mContext)
-                                .setTitle(getString(R.string.common_notice))
-                                .setMessage(getString(R.string.work_report_exit_notice))
-                                .setNegativeButton(R.string.give_up, new DialogInterface.OnClickListener() {
+                        PopupWindowHelper.showAlart(WorkReportAddActivity.this, getString(R.string.common_notice),
+                                getString(R.string.work_report_exit_notice), new PopupWindowHelper.OnSelectListener() {
                                     @Override
-                                    public void onClick(DialogInterface dialog, int which) {
-                                        boolean isResubmit = !TextUtils.isEmpty(resubmit) && ("unsub_tosub".equals(resubmit) || "resubmit".equals(resubmit));
-                                        if (isResubmit || isOptionEvent) {
-                                            Intent optionIntent = new Intent(WorkReportAddActivity.this, WorkDailyShowActivity.class);
-                                            optionIntent.putExtra("caller", mCaller);
-                                            optionIntent.putExtra("report_type", mReportType);
-                                            if (isOptionEvent) {
-                                                optionIntent.putExtra("fromwhere", "nosubmitdaily");
-                                            }
-                                            startActivityForResult(optionIntent, WORK_REPORT_LIST);
-                                        } else if (!TextUtils.isEmpty(fromqzone) && "fromqzone".equals(fromqzone)) {
+                                    public void select(boolean selectOk) {
+                                        if (selectOk) {
+                                            if (mSummaryContentEt.testValidity()) {
+                                                if (mNewScheduleContentEt.getText().toString().length() <= WORD_RESTRICTION_NUMBER &&
+                                                        mExperienceContentEt.getText().toString().length() <= WORD_RESTRICTION_NUMBER) {
+                                                    if (CommonUtil.isNetWorkConnected(WorkReportAddActivity.this)) {
+                                                        progressDialog.show();
+                                                        saveWorkReport();
+                                                    } else {
+                                                        ToastUtil.showToast(WorkReportAddActivity.this, R.string.networks_out);
+                                                    }
+                                                } else {
+                                                    ToastUtil.showToast(WorkReportAddActivity.this, "字数已超限!");
+                                                }
 
+                                            }
                                         } else {
-                                            Intent intent1 = new Intent(WorkReportAddActivity.this, WorkReportMenuActivity.class);
-                                            startActivity(intent1);
-                                        }
-                                        if (!isOptionEvent) {
-                                            finish();
-                                        }
-                                    }
-                                })
-                                .setPositiveButton(R.string.save, new DialogInterface.OnClickListener() {
-
-                                    @Override
-                                    public void onClick(DialogInterface dialog, int which) {
-                                        if (mSummaryContentEt.testValidity()) {
-                                            if (mNewScheduleContentEt.getText().toString().length() <= WORD_RESTRICTION_NUMBER &&
-                                                    mExperienceContentEt.getText().toString().length() <= WORD_RESTRICTION_NUMBER) {
-                                                if (CommonUtil.isNetWorkConnected(WorkReportAddActivity.this)) {
-                                                    progressDialog.show();
-                                                    saveWorkReport();
-                                                } else {
-                                                    ToastUtil.showToast(WorkReportAddActivity.this, R.string.networks_out);
+                                            boolean isResubmit = !TextUtils.isEmpty(resubmit) && ("unsub_tosub".equals(resubmit) || "resubmit".equals(resubmit));
+                                            if (isResubmit || isOptionEvent) {
+                                                Intent optionIntent = new Intent(WorkReportAddActivity.this, WorkDailyShowActivity.class);
+                                                optionIntent.putExtra("caller", mCaller);
+                                                optionIntent.putExtra("report_type", mReportType);
+                                                if (isOptionEvent) {
+                                                    optionIntent.putExtra("fromwhere", "nosubmitdaily");
                                                 }
+                                                startActivityForResult(optionIntent, WORK_REPORT_LIST);
+                                            } else if (!TextUtils.isEmpty(fromqzone) && "fromqzone".equals(fromqzone)) {
+
                                             } else {
-                                                ToastUtil.showToast(WorkReportAddActivity.this, "字数已超限!");
+                                                Intent intent1 = new Intent(WorkReportAddActivity.this, WorkReportMenuActivity.class);
+                                                startActivity(intent1);
+                                            }
+                                            if (!isOptionEvent) {
+                                                finish();
                                             }
-
                                         }
                                     }
-                                }).show();
+                                });
                     }
                 } else if (!TextUtils.isEmpty(fromqzone) && "fromqzone".equals(fromqzone)) {
                     finish();

+ 3 - 1
app_modular/appworks/src/main/java/com/uas/appworks/OA/platform/activity/PurchaseDetailsActivity.java

@@ -23,6 +23,7 @@ import com.common.thread.ThreadPool;
 import com.core.api.wxapi.ApiPlatform;
 import com.core.app.Constants;
 import com.core.app.MyApplication;
+import com.core.base.view.AndroidBug5497Workaround;
 import com.core.net.http.http.OAHttpHelper;
 import com.core.utils.CommonUtil;
 import com.core.utils.ToastUtil;
@@ -81,6 +82,7 @@ public class PurchaseDetailsActivity extends BaseNetActivity implements OnSmartH
 
     @Override
     protected void init() throws Exception {
+        AndroidBug5497Workaround.assistActivity(this);
         Intent intent = getIntent();
         initIntent(intent);
         initView();
@@ -310,7 +312,7 @@ public class PurchaseDetailsActivity extends BaseNetActivity implements OnSmartH
                     changeStatus = true;
                     varStatus = Constants.FLAG.STATE_PURCHASE_ORDER_TODO;
                 }
-            } else if ("201".equals(status) && "1".equals(reply)) {
+            } else if ("201".equals(status)) {
                 if (!varStatus.equals(Constants.FLAG.STATE_PURCHASE_ORDER_DONE)) {
                     changeStatus = true;
                     varStatus = Constants.FLAG.STATE_PURCHASE_ORDER_DONE;

+ 5 - 4
app_modular/appworks/src/main/java/com/uas/appworks/activity/CustomerInquiryDetailActivity.java

@@ -22,6 +22,7 @@ import com.core.api.wxapi.ApiPlatform;
 import com.core.app.Constants;
 import com.core.app.MyApplication;
 import com.core.base.activity.BaseMVPActivity;
+import com.core.base.view.AndroidBug5497Workaround;
 import com.core.utils.CommonUtil;
 import com.me.network.app.base.HttpCallback;
 import com.me.network.app.base.HttpParams;
@@ -76,7 +77,7 @@ public class CustomerInquiryDetailActivity extends BaseMVPActivity<WorkPlatPrese
 
     @Override
     protected void initView() {
-
+        AndroidBug5497Workaround.assistActivity(this);
         mDataRecyclerView = $(R.id.customer_inquiry_detail_data_rv);
         mQuoteRecyclerView = $(R.id.customer_inquiry_detail_quote_rv);
         mAddImageView = $(R.id.customer_inquiry_detail_add_iv);
@@ -150,7 +151,7 @@ public class CustomerInquiryDetailActivity extends BaseMVPActivity<WorkPlatPrese
                         initEditable(false, View.GONE);
                         break;
                     case Constants.FLAG.STATE_CUSTOMER_INQUIRY_REFUSED:
-                       setTitle(R.string.str_quotation_unadopted);
+                        setTitle(R.string.str_quotation_unadopted);
                         initEditable(false, View.GONE);
                         break;
                     case Constants.FLAG.STATE_CUSTOMER_INQUIRY_INVALID:
@@ -162,7 +163,7 @@ public class CustomerInquiryDetailActivity extends BaseMVPActivity<WorkPlatPrese
                         initEditable(false, View.GONE);
                         break;
                     case Constants.FLAG.STATE_PUBLIC_INQUIRY_TODO:
-                       setTitle(R.string.str_wait_quoted);
+                        setTitle(R.string.str_wait_quoted);
                         initEditable(true, View.VISIBLE);
                         break;
                     case Constants.FLAG.STATE_PUBLIC_INQUIRY_INVALID:
@@ -532,7 +533,7 @@ public class CustomerInquiryDetailActivity extends BaseMVPActivity<WorkPlatPrese
         String result = o.toString();
         LogUtil.prinlnLongMsg("customerdetailsuccess", result);
         if (flag == CUSTOMER_INQUIRY_REPLY) {
-          setTitle(R.string.str_quoted_price);
+            setTitle(R.string.str_quoted_price);
             toast(getString(R.string.quote_success));
             String publicId = "";
             if (Constants.FLAG.STATE_PUBLIC_INQUIRY_TODO.equals(mState)) {

+ 2 - 2
settings.gradle

@@ -17,7 +17,7 @@ include ':appworks'
 include ':appmoments'
 include ':apptasks'
 include ':apputils'
-
+include  ':appmusic'
 //第三库模块
 
 include ':lib-zxing'
@@ -49,7 +49,7 @@ project(':appbooking').projectDir = new File('app_modular/appbooking')
 project(':appmoments').projectDir = new File('app_modular/appmoments')
 project(':apptasks').projectDir = new File('app_modular/apptasks')
 project(':apputils').projectDir = new File('app_modular/apputils')
-
+project(':appmusic').projectDir = new File('app_modular/appmusic')
 //第三库模块
 
 project(':lib-zxing').projectDir = new File('app_third/lib-zxing')