316044749 7 лет назад
Родитель
Сommit
d6919bdea6
53 измененных файлов с 750 добавлено и 121 удалено
  1. 1 0
      .idea/gradle.xml
  2. 1 0
      .idea/modules.xml
  3. 2 7
      app/build.gradle
  4. 1 1
      app/src/main/AndroidManifest.xml
  5. 3 1
      app/src/main/java/com/ynstkz/shitu/android/activity/HomeActivity.java
  6. 4 9
      app/src/main/res/layout/activity_home.xml
  7. 2 12
      library/build.gradle
  8. 10 11
      library/src/main/java/okhttp/OkHttpUtils.java
  9. 4 4
      library/src/main/java/okhttp/builder/GetBuilder.java
  10. 1 1
      library/src/main/java/okhttp/builder/HasParamsable.java
  11. 4 4
      library/src/main/java/okhttp/builder/HeadBuilder.java
  12. 3 3
      library/src/main/java/okhttp/builder/OkHttpRequestBuilder.java
  13. 3 4
      library/src/main/java/okhttp/builder/OtherRequestBuilder.java
  14. 3 4
      library/src/main/java/okhttp/builder/PostFileBuilder.java
  15. 4 4
      library/src/main/java/okhttp/builder/PostFormBuilder.java
  16. 3 4
      library/src/main/java/okhttp/builder/PostStringBuilder.java
  17. 1 1
      library/src/main/java/okhttp/callback/BitmapCallback.java
  18. 1 1
      library/src/main/java/okhttp/callback/Callback.java
  19. 2 3
      library/src/main/java/okhttp/callback/FileCallBack.java
  20. 1 1
      library/src/main/java/okhttp/callback/GenericsCallback.java
  21. 1 1
      library/src/main/java/okhttp/callback/IGenericsSerializator.java
  22. 1 1
      library/src/main/java/okhttp/callback/StringCallback.java
  23. 3 4
      library/src/main/java/okhttp/cookie/CookieJarImpl.java
  24. 1 1
      library/src/main/java/okhttp/cookie/store/CookieStore.java
  25. 1 1
      library/src/main/java/okhttp/cookie/store/HasCookieStore.java
  26. 1 1
      library/src/main/java/okhttp/cookie/store/MemoryCookieStore.java
  27. 1 1
      library/src/main/java/okhttp/cookie/store/PersistentCookieStore.java
  28. 1 1
      library/src/main/java/okhttp/cookie/store/SerializableHttpCookie.java
  29. 2 2
      library/src/main/java/okhttp/https/HttpsUtils.java
  30. 1 1
      library/src/main/java/okhttp/log/LoggerInterceptor.java
  31. 1 1
      library/src/main/java/okhttp/request/CountingRequestBody.java
  32. 1 1
      library/src/main/java/okhttp/request/GetRequest.java
  33. 3 4
      library/src/main/java/okhttp/request/OkHttpRequest.java
  34. 3 4
      library/src/main/java/okhttp/request/OtherRequest.java
  35. 4 5
      library/src/main/java/okhttp/request/PostFileRequest.java
  36. 4 5
      library/src/main/java/okhttp/request/PostFormRequest.java
  37. 2 3
      library/src/main/java/okhttp/request/PostStringRequest.java
  38. 3 4
      library/src/main/java/okhttp/request/RequestCall.java
  39. 1 1
      library/src/main/java/okhttp/utils/Exceptions.java
  40. 1 1
      library/src/main/java/okhttp/utils/ImageUtils.java
  41. 1 1
      library/src/main/java/okhttp/utils/L.java
  42. 1 1
      library/src/main/java/okhttp/utils/Platform.java
  43. 40 0
      library/src/main/java/utils/AppVersionUtil.java
  44. 87 0
      library/src/main/java/utils/ArithUtil.java
  45. 104 0
      library/src/main/java/utils/DateUtils.java
  46. 91 0
      library/src/main/java/utils/FileUtils.java
  47. 32 0
      library/src/main/java/utils/JsonAssetsReaderUtil.java
  48. 35 0
      library/src/main/java/utils/LogUtil.java
  49. 29 0
      library/src/main/java/utils/MD5Utils.java
  50. 89 0
      library/src/main/java/utils/NetWorkUtil.java
  51. 36 0
      library/src/main/java/utils/PixelUtil.java
  52. 114 0
      library/src/main/java/utils/RegularUtils.java
  53. 1 1
      settings.gradle

+ 1 - 0
.idea/gradle.xml

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

+ 1 - 0
.idea/modules.xml

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

+ 2 - 7
app/build.gradle

@@ -8,7 +8,6 @@ android {
         targetSdkVersion 26
         versionCode 1
         versionName "1.0"
-        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
     }
     buildTypes {
         release {
@@ -19,10 +18,6 @@ android {
 }
 
 dependencies {
-    implementation fileTree(dir: 'libs', include: ['*.jar'])
-    implementation 'com.android.support:appcompat-v7:26.1.0'
-    implementation 'com.android.support.constraint:constraint-layout:1.0.2'
-    testImplementation 'junit:junit:4.12'
-    androidTestImplementation 'com.android.support.test:runner:1.0.1'
-    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
+    compile fileTree(dir: 'libs', include: ['*.jar'])
+    compile 'com.android.support:appcompat-v7:26.1.0'
 }

+ 1 - 1
app/src/main/AndroidManifest.xml

@@ -9,7 +9,7 @@
         android:roundIcon="@mipmap/ic_launcher_round"
         android:supportsRtl="true"
         android:theme="@style/AppTheme">
-        <activity android:name=".HomeActivity">
+        <activity android:name=".activity.HomeActivity">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
 

+ 3 - 1
app/src/main/java/com/ynstkz/shitu/android/activity/HomeActivity.java

@@ -1,8 +1,10 @@
-package com.ynstkz.shitu.android;
+package com.ynstkz.shitu.android.activity;
 
 import android.support.v7.app.AppCompatActivity;
 import android.os.Bundle;
 
+import com.ynstkz.shitu.android.R;
+
 public class HomeActivity extends AppCompatActivity {
 
     @Override

+ 4 - 9
app/src/main/res/layout/activity_home.xml

@@ -1,18 +1,13 @@
 <?xml version="1.0" encoding="utf-8"?>
-<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    tools:context="com.ynstkz.shitu.android.HomeActivity">
+    tools:context="com.ynstkz.shitu.android.activity.HomeActivity">
 
     <TextView
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
-        android:text="Hello World!"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintLeft_toLeftOf="parent"
-        app:layout_constraintRight_toRightOf="parent"
-        app:layout_constraintTop_toTopOf="parent" />
+        android:text="Hello World!" />
 
-</android.support.constraint.ConstraintLayout>
+</LinearLayout>

+ 2 - 12
library/build.gradle

@@ -2,17 +2,11 @@ apply plugin: 'com.android.library'
 
 android {
     compileSdkVersion 26
-
-
-
     defaultConfig {
         minSdkVersion 16
         targetSdkVersion 26
         versionCode 1
         versionName "1.0"
-
-        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
-
     }
 
     buildTypes {
@@ -25,10 +19,6 @@ android {
 }
 
 dependencies {
-    implementation fileTree(dir: 'libs', include: ['*.jar'])
-
-    implementation 'com.android.support:appcompat-v7:26.1.0'
-    testImplementation 'junit:junit:4.12'
-    androidTestImplementation 'com.android.support.test:runner:1.0.1'
-    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
+    compile fileTree(dir: 'libs', include: ['*.jar'])
+    compile 'com.squareup.okhttp3:okhttp:3.3.1'
 }

+ 10 - 11
library/src/main/java/okhttp/OkHttpUtils.java

@@ -1,18 +1,17 @@
-package com.zhy.http.okhttp;
-
-import com.zhy.http.okhttp.builder.GetBuilder;
-import com.zhy.http.okhttp.builder.HeadBuilder;
-import com.zhy.http.okhttp.builder.OtherRequestBuilder;
-import com.zhy.http.okhttp.builder.PostFileBuilder;
-import com.zhy.http.okhttp.builder.PostFormBuilder;
-import com.zhy.http.okhttp.builder.PostStringBuilder;
-import com.zhy.http.okhttp.callback.Callback;
-import com.zhy.http.okhttp.request.RequestCall;
-import com.zhy.http.okhttp.utils.Platform;
+package okhttp;
 
 import java.io.IOException;
 import java.util.concurrent.Executor;
 
+import okhttp.builder.GetBuilder;
+import okhttp.builder.HeadBuilder;
+import okhttp.builder.OtherRequestBuilder;
+import okhttp.builder.PostFileBuilder;
+import okhttp.builder.PostFormBuilder;
+import okhttp.builder.PostStringBuilder;
+import okhttp.callback.Callback;
+import okhttp.request.RequestCall;
+import okhttp.utils.Platform;
 import okhttp3.Call;
 import okhttp3.OkHttpClient;
 import okhttp3.Response;

+ 4 - 4
library/src/main/java/okhttp/builder/GetBuilder.java

@@ -1,15 +1,15 @@
-package com.zhy.http.okhttp.builder;
+package okhttp.builder;
 
 import android.net.Uri;
 
-import com.zhy.http.okhttp.request.GetRequest;
-import com.zhy.http.okhttp.request.RequestCall;
-
 import java.util.Iterator;
 import java.util.LinkedHashMap;
 import java.util.Map;
 import java.util.Set;
 
+import okhttp.request.GetRequest;
+import okhttp.request.RequestCall;
+
 /**
  * Created by zhy on 15/12/14.
  */

+ 1 - 1
library/src/main/java/okhttp/builder/HasParamsable.java

@@ -1,4 +1,4 @@
-package com.zhy.http.okhttp.builder;
+package okhttp.builder;
 
 import java.util.Map;
 

+ 4 - 4
library/src/main/java/okhttp/builder/HeadBuilder.java

@@ -1,8 +1,8 @@
-package com.zhy.http.okhttp.builder;
+package okhttp.builder;
 
-import com.zhy.http.okhttp.OkHttpUtils;
-import com.zhy.http.okhttp.request.OtherRequest;
-import com.zhy.http.okhttp.request.RequestCall;
+import okhttp.OkHttpUtils;
+import okhttp.request.OtherRequest;
+import okhttp.request.RequestCall;
 
 /**
  * Created by zhy on 16/3/2.

+ 3 - 3
library/src/main/java/okhttp/builder/OkHttpRequestBuilder.java

@@ -1,10 +1,10 @@
-package com.zhy.http.okhttp.builder;
-
-import com.zhy.http.okhttp.request.RequestCall;
+package okhttp.builder;
 
 import java.util.LinkedHashMap;
 import java.util.Map;
 
+import okhttp.request.RequestCall;
+
 /**
  * Created by zhy on 15/12/14.
  */

+ 3 - 4
library/src/main/java/okhttp/builder/OtherRequestBuilder.java

@@ -1,8 +1,7 @@
-package com.zhy.http.okhttp.builder;
-
-import com.zhy.http.okhttp.request.OtherRequest;
-import com.zhy.http.okhttp.request.RequestCall;
+package okhttp.builder;
 
+import okhttp.request.OtherRequest;
+import okhttp.request.RequestCall;
 import okhttp3.RequestBody;
 
 /**

+ 3 - 4
library/src/main/java/okhttp/builder/PostFileBuilder.java

@@ -1,10 +1,9 @@
-package com.zhy.http.okhttp.builder;
-
-import com.zhy.http.okhttp.request.PostFileRequest;
-import com.zhy.http.okhttp.request.RequestCall;
+package okhttp.builder;
 
 import java.io.File;
 
+import okhttp.request.PostFileRequest;
+import okhttp.request.RequestCall;
 import okhttp3.MediaType;
 
 /**

+ 4 - 4
library/src/main/java/okhttp/builder/PostFormBuilder.java

@@ -1,7 +1,4 @@
-package com.zhy.http.okhttp.builder;
-
-import com.zhy.http.okhttp.request.PostFormRequest;
-import com.zhy.http.okhttp.request.RequestCall;
+package okhttp.builder;
 
 import java.io.File;
 import java.util.ArrayList;
@@ -9,6 +6,9 @@ import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 
+import okhttp.request.PostFormRequest;
+import okhttp.request.RequestCall;
+
 /**
  * Created by zhy on 15/12/14.
  */

+ 3 - 4
library/src/main/java/okhttp/builder/PostStringBuilder.java

@@ -1,8 +1,7 @@
-package com.zhy.http.okhttp.builder;
-
-import com.zhy.http.okhttp.request.PostStringRequest;
-import com.zhy.http.okhttp.request.RequestCall;
+package okhttp.builder;
 
+import okhttp.request.PostStringRequest;
+import okhttp.request.RequestCall;
 import okhttp3.MediaType;
 
 /**

+ 1 - 1
library/src/main/java/okhttp/callback/BitmapCallback.java

@@ -1,4 +1,4 @@
-package com.zhy.http.okhttp.callback;
+package okhttp.callback;
 
 import android.graphics.Bitmap;
 import android.graphics.BitmapFactory;

+ 1 - 1
library/src/main/java/okhttp/callback/Callback.java

@@ -1,4 +1,4 @@
-package com.zhy.http.okhttp.callback;
+package okhttp.callback;
 
 import okhttp3.Call;
 import okhttp3.Request;

+ 2 - 3
library/src/main/java/okhttp/callback/FileCallBack.java

@@ -1,12 +1,11 @@
-package com.zhy.http.okhttp.callback;
-
-import com.zhy.http.okhttp.OkHttpUtils;
+package okhttp.callback;
 
 import java.io.File;
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 
+import okhttp.OkHttpUtils;
 import okhttp3.Response;
 
 /**

+ 1 - 1
library/src/main/java/okhttp/callback/GenericsCallback.java

@@ -1,4 +1,4 @@
-package com.zhy.http.okhttp.callback;
+package okhttp.callback;
 
 import java.io.IOException;
 import java.lang.reflect.ParameterizedType;

+ 1 - 1
library/src/main/java/okhttp/callback/IGenericsSerializator.java

@@ -1,4 +1,4 @@
-package com.zhy.http.okhttp.callback;
+package okhttp.callback;
 
 /**
  * Created by JimGong on 2016/6/23.

+ 1 - 1
library/src/main/java/okhttp/callback/StringCallback.java

@@ -1,4 +1,4 @@
-package com.zhy.http.okhttp.callback;
+package okhttp.callback;
 
 import java.io.IOException;
 

+ 3 - 4
library/src/main/java/okhttp/cookie/CookieJarImpl.java

@@ -1,10 +1,9 @@
-package com.zhy.http.okhttp.cookie;
-
-import com.zhy.http.okhttp.cookie.store.CookieStore;
-import com.zhy.http.okhttp.utils.Exceptions;
+package okhttp.cookie;
 
 import java.util.List;
 
+import okhttp.cookie.store.CookieStore;
+import okhttp.utils.Exceptions;
 import okhttp3.Cookie;
 import okhttp3.CookieJar;
 import okhttp3.HttpUrl;

+ 1 - 1
library/src/main/java/okhttp/cookie/store/CookieStore.java

@@ -1,4 +1,4 @@
-package com.zhy.http.okhttp.cookie.store;
+package okhttp.cookie.store;
 
 import java.util.List;
 

+ 1 - 1
library/src/main/java/okhttp/cookie/store/HasCookieStore.java

@@ -1,4 +1,4 @@
-package com.zhy.http.okhttp.cookie.store;
+package okhttp.cookie.store;
 
 /**
  * Created by zhy on 16/3/10.

+ 1 - 1
library/src/main/java/okhttp/cookie/store/MemoryCookieStore.java

@@ -1,4 +1,4 @@
-package com.zhy.http.okhttp.cookie.store;
+package okhttp.cookie.store;
 
 import java.util.ArrayList;
 import java.util.HashMap;

+ 1 - 1
library/src/main/java/okhttp/cookie/store/PersistentCookieStore.java

@@ -1,4 +1,4 @@
-package com.zhy.http.okhttp.cookie.store;
+package okhttp.cookie.store;
 
 import android.content.Context;
 import android.content.SharedPreferences;

+ 1 - 1
library/src/main/java/okhttp/cookie/store/SerializableHttpCookie.java

@@ -1,4 +1,4 @@
-package com.zhy.http.okhttp.cookie.store;
+package okhttp.cookie.store;
 
 import java.io.IOException;
 import java.io.ObjectInputStream;

+ 2 - 2
library/src/main/java/okhttp/https/HttpsUtils.java

@@ -1,4 +1,4 @@
-package com.zhy.http.okhttp.https;
+package okhttp.https;
 
 import java.io.IOException;
 import java.io.InputStream;
@@ -90,7 +90,7 @@ public class HttpsUtils
         @Override
         public X509Certificate[] getAcceptedIssuers()
         {
-            return new java.security.cert.X509Certificate[]{};
+            return new X509Certificate[]{};
         }
     }
 

+ 1 - 1
library/src/main/java/okhttp/log/LoggerInterceptor.java

@@ -1,4 +1,4 @@
-package com.zhy.http.okhttp.log;
+package okhttp.log;
 
 import android.text.TextUtils;
 import android.util.Log;

+ 1 - 1
library/src/main/java/okhttp/request/CountingRequestBody.java

@@ -1,4 +1,4 @@
-package com.zhy.http.okhttp.request;
+package okhttp.request;
 
 import okhttp3.MediaType;
 import okhttp3.RequestBody;

+ 1 - 1
library/src/main/java/okhttp/request/GetRequest.java

@@ -1,4 +1,4 @@
-package com.zhy.http.okhttp.request;
+package okhttp.request;
 
 import java.util.Map;
 

+ 3 - 4
library/src/main/java/okhttp/request/OkHttpRequest.java

@@ -1,13 +1,12 @@
-package com.zhy.http.okhttp.request;
-
-import com.zhy.http.okhttp.callback.Callback;
-import com.zhy.http.okhttp.utils.Exceptions;
+package okhttp.request;
 
 import java.util.Map;
 
+import okhttp.utils.Exceptions;
 import okhttp3.Headers;
 import okhttp3.Request;
 import okhttp3.RequestBody;
+import okhttp.callback.Callback;
 
 /**
  * Created by zhy on 15/11/6.

+ 3 - 4
library/src/main/java/okhttp/request/OtherRequest.java

@@ -1,12 +1,11 @@
-package com.zhy.http.okhttp.request;
+package okhttp.request;
 
 import android.text.TextUtils;
 
-import com.zhy.http.okhttp.OkHttpUtils;
-import com.zhy.http.okhttp.utils.Exceptions;
-
 import java.util.Map;
 
+import okhttp.OkHttpUtils;
+import okhttp.utils.Exceptions;
 import okhttp3.MediaType;
 import okhttp3.Request;
 import okhttp3.RequestBody;

+ 4 - 5
library/src/main/java/okhttp/request/PostFileRequest.java

@@ -1,12 +1,11 @@
-package com.zhy.http.okhttp.request;
-
-import com.zhy.http.okhttp.OkHttpUtils;
-import com.zhy.http.okhttp.callback.Callback;
-import com.zhy.http.okhttp.utils.Exceptions;
+package okhttp.request;
 
 import java.io.File;
 import java.util.Map;
 
+import okhttp.OkHttpUtils;
+import okhttp.callback.Callback;
+import okhttp.utils.Exceptions;
 import okhttp3.MediaType;
 import okhttp3.Request;
 import okhttp3.RequestBody;

+ 4 - 5
library/src/main/java/okhttp/request/PostFormRequest.java

@@ -1,8 +1,4 @@
-package com.zhy.http.okhttp.request;
-
-import com.zhy.http.okhttp.OkHttpUtils;
-import com.zhy.http.okhttp.builder.PostFormBuilder;
-import com.zhy.http.okhttp.callback.Callback;
+package okhttp.request;
 
 import java.io.UnsupportedEncodingException;
 import java.net.FileNameMap;
@@ -11,6 +7,9 @@ import java.net.URLEncoder;
 import java.util.List;
 import java.util.Map;
 
+import okhttp.OkHttpUtils;
+import okhttp.builder.PostFormBuilder;
+import okhttp.callback.Callback;
 import okhttp3.FormBody;
 import okhttp3.Headers;
 import okhttp3.MediaType;

+ 2 - 3
library/src/main/java/okhttp/request/PostStringRequest.java

@@ -1,9 +1,8 @@
-package com.zhy.http.okhttp.request;
-
-import com.zhy.http.okhttp.utils.Exceptions;
+package okhttp.request;
 
 import java.util.Map;
 
+import okhttp.utils.Exceptions;
 import okhttp3.MediaType;
 import okhttp3.Request;
 import okhttp3.RequestBody;

+ 3 - 4
library/src/main/java/okhttp/request/RequestCall.java

@@ -1,15 +1,14 @@
-package com.zhy.http.okhttp.request;
-
-import com.zhy.http.okhttp.OkHttpUtils;
-import com.zhy.http.okhttp.callback.Callback;
+package okhttp.request;
 
 import java.io.IOException;
 import java.util.concurrent.TimeUnit;
 
+import okhttp.OkHttpUtils;
 import okhttp3.Call;
 import okhttp3.OkHttpClient;
 import okhttp3.Request;
 import okhttp3.Response;
+import okhttp.callback.Callback;
 
 /**
  * Created by zhy on 15/12/15.

+ 1 - 1
library/src/main/java/okhttp/utils/Exceptions.java

@@ -1,4 +1,4 @@
-package com.zhy.http.okhttp.utils;
+package okhttp.utils;
 
 /**
  * Created by zhy on 15/12/14.

+ 1 - 1
library/src/main/java/okhttp/utils/ImageUtils.java

@@ -1,4 +1,4 @@
-package com.zhy.http.okhttp.utils;
+package okhttp.utils;
 
 import android.graphics.BitmapFactory;
 import android.util.DisplayMetrics;

+ 1 - 1
library/src/main/java/okhttp/utils/L.java

@@ -1,4 +1,4 @@
-package com.zhy.http.okhttp.utils;
+package okhttp.utils;
 
 import android.util.Log;
 

+ 1 - 1
library/src/main/java/okhttp/utils/Platform.java

@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.zhy.http.okhttp.utils;
+package okhttp.utils;
 
 import android.os.Build;
 import android.os.Handler;

+ 40 - 0
library/src/main/java/utils/AppVersionUtil.java

@@ -1,8 +1,48 @@
 package utils;
 
+import android.content.Context;
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager;
+
 /**
  * 作者:fuchangle on 2018/1/26 16:29
  */
 
 public class AppVersionUtil {
+
+    /**
+     * 获取版本号
+     * String
+     * @return 当前应用的版本名称
+     */
+    public static String getVersionName(Context context) {
+        try {
+            PackageManager manager = context.getPackageManager();
+            PackageInfo info = manager.getPackageInfo(context.getPackageName(), 0);
+            String versionName = info.versionName;
+            LogUtil.e("info", "versionName" + versionName);
+            return versionName;
+        } catch (Exception e) {
+            e.printStackTrace();
+            return "";
+        }
+    }
+
+    /**
+     * 获取版本号
+     * int
+     * @return 当前应用的版本号
+     */
+    public static int getVersionCode(Context context) {
+        try {
+            PackageManager manager = context.getPackageManager();
+            PackageInfo info = manager.getPackageInfo(context.getPackageName(), 0);
+            int versionCode = info.versionCode;
+            LogUtil.e("info", "versionCode" + versionCode);
+            return versionCode;
+        } catch (Exception e) {
+            e.printStackTrace();
+            return 1;
+        }
+    }
 }

+ 87 - 0
library/src/main/java/utils/ArithUtil.java

@@ -1,8 +1,95 @@
 package utils;
 
+import java.math.BigDecimal;
+
 /**
  * 作者:fuchangle on 2018/1/26 16:26
  */
 
 public class ArithUtil {
+
+    //默认除法运算精度
+    private static final int DEF_DIV_SCALE = 10;
+    //这个类不能实例化
+    private ArithUtil(){
+    }
+
+    /**
+     * 提供精确的加法运算。
+     * @param v1 被加数
+     * @param v2 加数
+     * @return 两个参数的和
+     */
+    public static double add(double v1,double v2){
+        BigDecimal b1 = new BigDecimal(Double.toString(v1));
+        BigDecimal b2 = new BigDecimal(Double.toString(v2));
+        return b1.add(b2).doubleValue();
+    }
+    /**
+     * 提供精确的减法运算。
+     * @param v1 被减数
+     * @param v2 减数
+     * @return 两个参数的差
+     */
+    public static double sub(double v1,double v2){
+        BigDecimal b1 = new BigDecimal(Double.toString(v1));
+        BigDecimal b2 = new BigDecimal(Double.toString(v2));
+        return b1.subtract(b2).doubleValue();
+    }
+    /**
+     * 提供精确的乘法运算。
+     * @param v1 被乘数
+     * @param v2 乘数
+     * @return 两个参数的积
+     */
+    public static double mul(double v1,double v2){
+        BigDecimal b1 = new BigDecimal(Double.toString(v1));
+        BigDecimal b2 = new BigDecimal(Double.toString(v2));
+        return b1.multiply(b2).doubleValue();
+    }
+
+    /**
+     * 提供(相对)精确的除法运算,当发生除不尽的情况时,精确到
+     * 小数点以后10位,以后的数字四舍五入。
+     * @param v1 被除数
+     * @param v2 除数
+     * @return 两个参数的商
+     */
+    public static double div(double v1,double v2){
+        return div(v1,v2,DEF_DIV_SCALE);
+    }
+
+    /**
+     * 提供(相对)精确的除法运算。当发生除不尽的情况时,由scale参数指
+     * 定精度,以后的数字四舍五入。
+     * @param v1 被除数
+     * @param v2 除数
+     * @param scale 表示表示需要精确到小数点以后几位。
+     * @return 两个参数的商
+     */
+    public static double div(double v1,double v2,int scale){
+        if(scale<0){
+            throw new IllegalArgumentException(
+                    "The scale must be a positive integer or zero");
+        }
+        BigDecimal b1 = new BigDecimal(Double.toString(v1));
+        BigDecimal b2 = new BigDecimal(Double.toString(v2));
+        return b1.divide(b2,scale,BigDecimal.ROUND_HALF_UP).doubleValue();
+    }
+
+    /**
+     * 提供精确的小数位四舍五入处理。
+     * @param v 需要四舍五入的数字
+     * @param scale 小数点后保留几位
+     * @return 四舍五入后的结果
+     */
+    public static double round(double v,int scale){
+        if(scale<0){
+            throw new IllegalArgumentException(
+                    "The scale must be a positive integer or zero");
+        }
+        BigDecimal b = new BigDecimal(Double.toString(v));
+        BigDecimal one = new BigDecimal("1");
+        return b.divide(one,scale,BigDecimal.ROUND_HALF_UP).doubleValue();
+    }
 }

+ 104 - 0
library/src/main/java/utils/DateUtils.java

@@ -1,8 +1,112 @@
 package utils;
 
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
 /**
  * 作者:fuchangle on 2018/1/26 16:35
  */
 
 public class DateUtils {
+
+    private static SimpleDateFormat sf;
+    private static SimpleDateFormat sdf;
+
+    /**
+     * 获取系统时间 格式为:"yyyy/MM/dd "
+     **/
+    public static String getCurrentDate() {
+        Date d = new Date();
+        sf = new SimpleDateFormat("yyyy年MM月dd日");
+        return sf.format(d);
+    }
+
+    /**
+     * 获取系统时间 格式为:"yyyy "
+     **/
+    public static String getCurrentYear() {
+        Date d = new Date();
+        sf = new SimpleDateFormat("yyyy");
+        return sf.format(d);
+    }
+
+    /**
+     * 获取系统时间 格式为:"MM"
+     **/
+    public static String getCurrentMonth() {
+        Date d = new Date();
+        sf = new SimpleDateFormat("MM");
+        return sf.format(d);
+    }
+
+    /**
+     * 获取系统时间 格式为:"dd"
+     **/
+    public static String getCurrentDay() {
+        Date d = new Date();
+        sf = new SimpleDateFormat("dd");
+        return sf.format(d);
+    }
+
+    /**
+     * 获取当前时间戳
+     *
+     * @return
+     */
+    public static long getCurrentTime() {
+        long d = new Date().getTime() / 1000;
+        return d;
+    }
+
+    /**
+     * 时间戳转换成字符窜
+     */
+    public static String getDateToString(long time) {
+        Date d = new Date(time * 1000);
+        sf = new SimpleDateFormat("yyyy年MM月dd日");
+        return sf.format(d);
+    }
+
+    /**
+     * 时间戳中获取年
+     */
+    public static String getYearFromTime(long time) {
+        Date d = new Date(time * 1000);
+        sf = new SimpleDateFormat("yyyy");
+        return sf.format(d);
+    }
+
+    /**
+     * 时间戳中获取月
+     */
+    public static String getMonthFromTime(long time) {
+        Date d = new Date(time * 1000);
+        sf = new SimpleDateFormat("MM");
+        return sf.format(d);
+    }
+
+    /**
+     * 时间戳中获取日
+     */
+    public static String getDayFromTime(long time) {
+        Date d = new Date(time * 1000);
+        sf = new SimpleDateFormat("dd");
+        return sf.format(d);
+    }
+
+    /**
+     * 将字符串转为时间戳
+     */
+    public static long getStringToDate(String time) {
+        sdf = new SimpleDateFormat("yyyy年MM月dd日");
+        Date date = new Date();
+        try {
+            date = sdf.parse(time);
+        } catch (ParseException e) {
+            // TODO Auto-generated catch block
+            e.printStackTrace();
+        }
+        return date.getTime();
+    }
 }

+ 91 - 0
library/src/main/java/utils/FileUtils.java

@@ -1,8 +1,99 @@
 package utils;
 
+import android.graphics.Bitmap;
+import android.os.Environment;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+
 /**
  * 作者:fuchangle on 2018/1/26 16:35
  */
 
 public class FileUtils {
+
+    public static String SDPATH = Environment.getExternalStorageDirectory() + "/formats/";// 获取文件夹
+    // 保存图片
+    public static boolean saveBitmap(Bitmap mBitmap, String path, String imgName) {
+        String sdStatus = Environment.getExternalStorageState();
+        if (!sdStatus.equals(Environment.MEDIA_MOUNTED)) { // 检测sd是否可用
+            return false;
+        }
+        FileOutputStream b = null;
+        File file = new File(path);
+        file.mkdirs();// 创建文件夹
+        String fileName = path + imgName;
+//        delFile(path, imgName);//删除本地旧图
+        try {
+            b = new FileOutputStream(fileName);
+            mBitmap.compress(Bitmap.CompressFormat.JPEG, 100, b);// 把数据写入文件
+        } catch (FileNotFoundException e) {
+            e.printStackTrace();
+        } finally {
+            try {
+                b.flush();
+                b.close();
+
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+
+        }
+        return true;
+    }
+
+    public static File createSDDir(String dirName) throws IOException {
+        File dir = new File(SDPATH + dirName);
+        if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
+
+            System.out.println("createSDDir:" + dir.getAbsolutePath());
+            System.out.println("createSDDir:" + dir.mkdir());
+        }
+        return dir;
+    }
+
+    public static boolean isFileExist(String fileName) {
+        File file = new File(SDPATH + fileName);
+        file.isFile();
+        return file.exists();
+    }
+
+    // 删除文件
+    public static void delFile(String path, String fileName) {
+        File file = new File(path + fileName);
+        if (file.isFile()) {
+            file.delete();
+        }
+        file.exists();
+    }
+
+    // 删除文件夹和文件夹里面的文件
+    public static void deleteDir() {
+        File dir = new File(SDPATH);
+        if (dir == null || !dir.exists() || !dir.isDirectory())
+            return;
+
+        for (File file : dir.listFiles()) {
+            if (file.isFile())
+                file.delete(); // 删除所有文件
+            else if (file.isDirectory())
+                deleteDir(); // 递规的方式删除文件夹
+        }
+        dir.delete();// 删除目录本身
+    }
+
+    public static boolean fileIsExists(String path) {
+        try {
+            File f = new File(path);
+            if (!f.exists()) {
+                return false;
+            }
+        } catch (Exception e) {
+
+            return false;
+        }
+        return true;
+    }
 }

+ 32 - 0
library/src/main/java/utils/JsonAssetsReaderUtil.java

@@ -1,8 +1,40 @@
 package utils;
 
+import android.content.Context;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+
 /**
  * 作者:fuchangle on 2018/1/26 16:30
  */
 
 public class JsonAssetsReaderUtil {
+
+    public static String getJsonStrFromAssets(Context context, String jsonFileName) {
+        InputStreamReader inputStreamReader = null;
+        StringBuilder stringBuilder = null;
+        BufferedReader bufferedReader = null;
+        try {
+            inputStreamReader = new InputStreamReader(context.getAssets().open(jsonFileName), "UTF-8");
+            bufferedReader = new BufferedReader(inputStreamReader);
+            String jsonStr;
+            stringBuilder = new StringBuilder();
+            while ((jsonStr = bufferedReader.readLine()) != null) {
+                stringBuilder.append(jsonStr);
+            }
+        } catch (IOException e) {
+            e.printStackTrace();
+        } finally {
+            try {
+                inputStreamReader.close();
+                bufferedReader.close();
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+        }
+
+        return stringBuilder.toString();
+    }
 }

+ 35 - 0
library/src/main/java/utils/LogUtil.java

@@ -1,8 +1,43 @@
 package utils;
 
+import android.util.Log;
+
 /**
  * 作者:fuchangle on 2018/1/26 16:31
  */
 
 public class LogUtil {
+
+    public static final int VERBOSE = 1;
+    public static final int DEBUG = 2;
+    public static final int INFO = 3;
+    public static final int WARN = 4;
+    public static final int ERROR = 5;
+    public static final int LEVEL = VERBOSE;//打印所有等级的信息
+
+    public static void v(String tag,String msg){
+        if(LEVEL <= VERBOSE){
+            Log.v(tag,msg);
+        }
+    }
+    public static void d(String tag,String msg){
+        if(LEVEL <= DEBUG){
+            Log.d(tag,msg);
+        }
+    }
+    public static void i(String tag,String msg){
+        if(LEVEL <= INFO){
+            Log.i(tag,msg);
+        }
+    }
+    public static void w(String tag,String msg){
+        if(LEVEL <= WARN){
+            Log.w(tag,msg);
+        }
+    }
+    public static void e(String tag,String msg){
+        if(LEVEL <= ERROR){
+            Log.e(tag,msg);
+        }
+    }
 }

+ 29 - 0
library/src/main/java/utils/MD5Utils.java

@@ -1,8 +1,37 @@
 package utils;
 
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
+
 /**
  * 作者:fuchangle on 2018/1/26 16:31
  */
 
 public class MD5Utils {
+
+    public static String ecodeTwice(String str) {//MD5两次
+        return ecode(ecode(str));
+    }
+
+    public static String ecode(String passwd) {
+        try {
+            MessageDigest instance = MessageDigest.getInstance("MD5");
+            byte[] digest = instance.digest(passwd.getBytes());
+
+            StringBuilder sb = new StringBuilder();
+            for (byte b : digest) {
+                int i = b & 0xff;
+                String hexString = Integer.toHexString(i);
+                if (hexString.length() < 2) {
+                    hexString = "0" + hexString;
+                }
+                sb.append(hexString);
+            }
+            return sb.toString();
+        } catch (NoSuchAlgorithmException e) {
+            e.printStackTrace();
+        }
+
+        return "";
+    }
 }

+ 89 - 0
library/src/main/java/utils/NetWorkUtil.java

@@ -1,8 +1,97 @@
 package utils;
 
+import android.content.Context;
+import android.net.ConnectivityManager;
+import android.net.NetworkInfo;
+import android.telephony.TelephonyManager;
+import android.text.TextUtils;
+
 /**
  * 作者:fuchangle on 2018/1/26 16:27
  */
 
 public class NetWorkUtil {
+
+    /** 没有网络 */
+    public static final int NETWORKTYPE_INVALID = 0;
+    /** wap网络 */
+    public static final int NETWORKTYPE_WAP = 1;
+    /** 2G网络 */
+    public static final int NETWORKTYPE_2G = 2;
+    /** 3G和3G以上网络,或统称为快速网络 */
+    public static final int NETWORKTYPE_3G = 3;
+    /** wifi网络 */
+    public static final int NETWORKTYPE_WIFI = 4;
+    private static int mNetWorkType;
+
+    /**
+     * 获取网络状态,wifi,wap,2g,3g.
+     *
+     * @param context 上下文
+     * @return int 网络状态 {@link #NETWORKTYPE_2G},{@link #NETWORKTYPE_3G},          *{@link #NETWORKTYPE_INVALID},{@link #NETWORKTYPE_WAP}* <p>{@link #NETWORKTYPE_WIFI}
+     */
+    public static int getNetWorkType(Context context) {
+        ConnectivityManager manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
+        NetworkInfo networkInfo = manager.getActiveNetworkInfo();
+        if (networkInfo != null && networkInfo.isConnected()) {
+            String type = networkInfo.getTypeName();
+            if (type.equalsIgnoreCase("WIFI")) {
+                mNetWorkType = NETWORKTYPE_WIFI;
+            } else if (type.equalsIgnoreCase("MOBILE")) {
+                String proxyHost = android.net.Proxy.getDefaultHost();
+                mNetWorkType = TextUtils.isEmpty(proxyHost)
+                        ? (isFastMobileNetwork(context) ? NETWORKTYPE_3G : NETWORKTYPE_2G)
+                        : NETWORKTYPE_WAP;
+            }
+        } else {
+            mNetWorkType = NETWORKTYPE_INVALID;
+        }
+        LogUtil.e("info","mNetWorkType:" + mNetWorkType);
+        return mNetWorkType;
+    }
+
+    /**
+     * 通过TelephonyManager判断移动网络的类型
+     * @param context
+     * @return
+     */
+    private static boolean isFastMobileNetwork(Context context) {
+        TelephonyManager telephonyManager = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);
+        switch (telephonyManager.getNetworkType()) {
+            case TelephonyManager.NETWORK_TYPE_1xRTT:
+                return false; // ~ 50-100 kbps
+            case TelephonyManager.NETWORK_TYPE_CDMA:
+                return false; // ~ 14-64 kbps
+            case TelephonyManager.NETWORK_TYPE_EDGE:
+                return false; // ~ 50-100 kbps
+            case TelephonyManager.NETWORK_TYPE_EVDO_0:
+                return true; // ~ 400-1000 kbps
+            case TelephonyManager.NETWORK_TYPE_EVDO_A:
+                return true; // ~ 600-1400 kbps
+            case TelephonyManager.NETWORK_TYPE_GPRS:
+                return false; // ~ 100 kbps
+            case TelephonyManager.NETWORK_TYPE_HSDPA:
+                return true; // ~ 2-14 Mbps
+            case TelephonyManager.NETWORK_TYPE_HSPA:
+                return true; // ~ 700-1700 kbps
+            case TelephonyManager.NETWORK_TYPE_HSUPA:
+                return true; // ~ 1-23 Mbps
+            case TelephonyManager.NETWORK_TYPE_UMTS:
+                return true; // ~ 400-7000 kbps
+            case TelephonyManager.NETWORK_TYPE_EHRPD:
+                return true; // ~ 1-2 Mbps
+            case TelephonyManager.NETWORK_TYPE_EVDO_B:
+                return true; // ~ 5 Mbps
+            case TelephonyManager.NETWORK_TYPE_HSPAP:
+                return true; // ~ 10-20 Mbps
+            case TelephonyManager.NETWORK_TYPE_IDEN:
+                return false; // ~25 kbps
+            case TelephonyManager.NETWORK_TYPE_LTE:
+                return true; // ~ 10+ Mbps
+            case TelephonyManager.NETWORK_TYPE_UNKNOWN:
+                return false;
+            default:
+                return false;
+        }
+    }
 }

+ 36 - 0
library/src/main/java/utils/PixelUtil.java

@@ -1,8 +1,44 @@
 package utils;
 
+import android.app.Activity;
+import android.util.DisplayMetrics;
+import android.view.View;
+
 /**
  * 作者:fuchangle on 2018/1/26 16:33
  */
 
 public class PixelUtil {
+
+    //获取运行屏幕宽度
+    //宽度 dm.widthPixels
+    //高度 dm.heightPixels
+    public static int getScreenWidth(Activity context) {
+        DisplayMetrics dm = new DisplayMetrics();
+        context.getWindowManager().getDefaultDisplay().getMetrics(dm);
+        return dm.widthPixels;
+    }
+
+    /**
+     * 获取控件宽
+     */
+    public static int getWidth(View view) {
+        int w = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED);
+        int h = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED);
+        view.measure(w, h);
+        return (view.getMeasuredWidth());
+    }
+
+
+    //DP转PX
+    public static int dp2px(Activity context, float dpValue) {
+        final float scale = context.getResources().getDisplayMetrics().density;
+        return (int) (dpValue * scale + 0.5f);
+    }
+
+    //PX转DP
+    public static int px2dp(Activity context, float pxValue) {
+        final float scale = context.getResources().getDisplayMetrics().density;
+        return (int) (pxValue / scale + 0.5f);
+    }
 }

+ 114 - 0
library/src/main/java/utils/RegularUtils.java

@@ -1,8 +1,122 @@
 package utils;
 
+import android.text.TextUtils;
+
+import java.util.regex.Pattern;
+
 /**
  * 作者:fuchangle on 2018/1/26 16:32
  */
 
 public class RegularUtils {
+
+    private RegularUtils() {
+        throw new UnsupportedOperationException("u can't fuck me...");
+    }
+
+    /**
+     * 验证手机号(简单)
+     */
+    private static final String REGEX_MOBILE_SIMPLE = "^[1]\\d{10}$";
+    /**
+     * 验证手机号(精确)
+     * <p>
+     * <p>移动:134(0-8)、135、136、137、138、139、147、150、151、152、157、158、159、178、182、183、184、187、188
+     * <p>联通:130、131、132、145、155、156、175、176、185、186
+     * <p>电信:133、153、173、177、180、181、189
+     * <p>全球星:1349
+     * <p>虚拟运营商:170
+     */
+    private static final String REGEX_MOBILE_EXACT = "^((13[0-9])|(14[5,7])|(15[0-3,5-8])|(17[0,3,5-8])|(18[0-9])|(147))\\d{8}$";
+    /**
+     * 验证座机号,正确格式:xxx/xxxx-xxxxxxx/xxxxxxxx/
+     */
+    private static final String REGEX_TEL = "^0\\d{2,3}[- ]?\\d{7,8}";
+    /**
+     * 验证邮箱
+     */
+    private static final String REGEX_EMAIL = "^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$";
+    /**
+     * 验证url
+     */
+    private static final String REGEX_URL = "http(s)?://([\\w-]+\\.)+[\\w-]+(/[\\w-./?%&=]*)?";
+    /**
+     * 验证汉字
+     */
+    private static final String REGEX_CHZ = "^[\\u4e00-\\u9fa5]+$";
+    /**
+     * 验证用户名,取值范围为a-z,A-Z,0-9,"_",汉字,不能以"_"结尾,用户名必须是6-20位
+     */
+    private static final String REGEX_USERNAME = "^[\\w\\u4e00-\\u9fa5]{6,20}(?<!_)$";
+    /**
+     * 验证IP地址
+     */
+    private static final String REGEX_IP = "((2[0-4]\\d|25[0-5]|[01]?\\d\\d?)\\.){3}(2[0-4]\\d|25[0-5]|[01]?\\d\\d?)";
+
+    //If u want more please visit http://toutiao.com/i6231678548520731137/
+
+    /**
+     * @param string 待验证文本
+     * @return 是否符合手机号(简单)格式
+     */
+    public static boolean isMobileSimple(String string) {
+        return isMatch(REGEX_MOBILE_SIMPLE, string);
+    }
+
+    /**
+     * @param string 待验证文本
+     * @return 是否符合手机号(精确)格式
+     */
+    public static boolean isMobileExact(String string) {
+        return isMatch(REGEX_MOBILE_EXACT, string);
+    }
+
+    /**
+     * @param string 待验证文本
+     * @return 是否符合座机号码格式
+     */
+    public static boolean isTel(String string) {
+        return isMatch(REGEX_TEL, string);
+    }
+
+    /**
+     * @param string 待验证文本
+     * @return 是否符合邮箱格式
+     */
+    public static boolean isEmail(String string) {
+        return isMatch(REGEX_EMAIL, string);
+    }
+
+    /**
+     * @param string 待验证文本
+     * @return 是否符合网址格式
+     */
+    public static boolean isURL(String string) {
+        return isMatch(REGEX_URL, string);
+    }
+
+    /**
+     * @param string 待验证文本
+     * @return 是否符合汉字
+     */
+    public static boolean isChz(String string) {
+        return isMatch(REGEX_CHZ, string);
+    }
+
+    /**
+     * @param string 待验证文本
+     * @return 是否符合用户名
+     */
+    public static boolean isUsername(String string) {
+        return isMatch(REGEX_USERNAME, string);
+    }
+
+    /**
+     * @param regex  正则表达式字符串
+     * @param string 要匹配的字符串
+     * @return 如果str 符合 regex的正则表达式格式,返回true, 否则返回 false;
+     */
+    public static boolean isMatch(String regex, String string) {
+        return !TextUtils.isEmpty(string) && Pattern.matches(regex, string);
+    }
 }

+ 1 - 1
settings.gradle

@@ -1 +1 @@
-include ':app'
+include ':app', ':library'