From 55c3fc2eb9344eb3278b2690b32488d8a200adaa Mon Sep 17 00:00:00 2001
From: Blankj <625783482@qq.com>
Date: Fri, 8 Mar 2019 17:46:44 +0800
Subject: [PATCH 001/138] see 03/08 log
---
CHANGELOG.md | 1 +
config.gradle | 17 ++++++-------
gradle.properties | 4 ++-
.../com/blankj/launcher/pkg/MainActivity.kt | 2 +-
.../pkg/src/main/res/layout/activity_main.xml | 18 ++++++-------
lib/base/build.gradle | 6 ++---
.../java/com/blankj/lib/base/BaseActivity.kt | 2 +-
.../com/blankj/lib/base/BaseApplication.kt | 2 +-
.../com/blankj/lib/base/BaseDrawerActivity.kt | 6 ++---
.../java/com/blankj/lib/base/BaseFragment.kt | 6 ++---
.../blankj/lib/base/rv/BaseViewHolder.java | 4 +--
.../lib/base/rv/RecycleViewDivider.java | 10 ++++----
.../lib/base/rv/adapter/BaseAdapter.java | 6 ++---
.../lib/base/rv/adapter/SingleAdapter.java | 2 +-
.../src/main/res/layout/activity_back.xml | 14 +++++------
.../src/main/res/layout/activity_drawer.xml | 6 ++---
subutil/lib/build.gradle | 6 ++---
.../blankj/subutil/util/LocationUtils.java | 2 +-
.../com/blankj/subutil/util/PinyinUtils.java | 2 +-
.../java/com/blankj/subutil/util/Utils.java | 4 +--
.../blankj/subutil/pkg/helper/DialogHelper.kt | 2 +-
utilcode/lib/build.gradle | 8 +++---
utilcode/lib/project.properties | 2 +-
.../utilcode/constant/MemoryConstants.java | 2 +-
.../constant/PermissionConstants.java | 2 +-
.../utilcode/constant/TimeConstants.java | 2 +-
.../blankj/utilcode/util/ActivityUtils.java | 9 ++++---
.../blankj/utilcode/util/AntiShakeUtils.java | 5 ++--
.../com/blankj/utilcode/util/AppUtils.java | 5 ++--
.../com/blankj/utilcode/util/BarUtils.java | 11 ++++----
.../blankj/utilcode/util/BrightnessUtils.java | 5 ++--
.../utilcode/util/CacheDiskStaticUtils.java | 3 ++-
.../blankj/utilcode/util/CacheDiskUtils.java | 3 ++-
.../utilcode/util/CacheDoubleStaticUtils.java | 3 ++-
.../utilcode/util/CacheDoubleUtils.java | 2 +-
.../utilcode/util/CacheMemoryStaticUtils.java | 2 +-
.../utilcode/util/CacheMemoryUtils.java | 4 +--
.../com/blankj/utilcode/util/ColorUtils.java | 12 ++++-----
.../com/blankj/utilcode/util/CrashUtils.java | 4 +--
.../com/blankj/utilcode/util/DeviceUtils.java | 4 +--
.../blankj/utilcode/util/FragmentUtils.java | 21 ++++++++--------
.../com/blankj/utilcode/util/ImageUtils.java | 14 +++++------
.../com/blankj/utilcode/util/IntentUtils.java | 4 +--
.../com/blankj/utilcode/util/LogUtils.java | 8 +++---
.../blankj/utilcode/util/MetaDataUtils.java | 2 +-
.../blankj/utilcode/util/NetworkUtils.java | 2 +-
.../utilcode/util/NotificationUtils.java | 6 ++---
.../com/blankj/utilcode/util/ObjectUtils.java | 6 ++---
.../blankj/utilcode/util/PermissionUtils.java | 8 +++---
.../com/blankj/utilcode/util/PhoneUtils.java | 2 +-
.../blankj/utilcode/util/ProcessUtils.java | 4 +--
.../com/blankj/utilcode/util/RegexUtils.java | 2 +-
.../blankj/utilcode/util/ResourceUtils.java | 2 +-
.../blankj/utilcode/util/SPStaticUtils.java | 2 +-
.../com/blankj/utilcode/util/SPUtils.java | 2 +-
.../com/blankj/utilcode/util/ScreenUtils.java | 5 ++--
.../blankj/utilcode/util/SnackbarUtils.java | 14 +++++------
.../com/blankj/utilcode/util/SpanUtils.java | 16 ++++++------
.../com/blankj/utilcode/util/StringUtils.java | 4 +--
.../com/blankj/utilcode/util/ThreadUtils.java | 7 +++---
.../com/blankj/utilcode/util/TimeUtils.java | 2 +-
.../com/blankj/utilcode/util/ToastUtils.java | 10 ++++----
.../com/blankj/utilcode/util/UriUtils.java | 25 +++++++++++++------
.../java/com/blankj/utilcode/util/Utils.java | 2 +-
.../blankj/utilcode/util/VibrateUtils.java | 2 +-
.../blankj/utilcode/util/ObjectUtilsTest.java | 5 ++--
.../pkg/feature/activity/ActivityActivity.kt | 2 +-
.../feature/activity/SubActivityActivity.kt | 2 +-
.../feature/bar/BarStatusFragmentActivity.kt | 16 ++++++------
.../pkg/feature/fragment/ContainerFragment.kt | 6 ++---
.../pkg/feature/fragment/FragmentActivity.kt | 6 ++---
.../pkg/feature/image/ImageActivity.kt | 8 +++---
.../pkg/feature/snackbar/SnackbarActivity.kt | 2 +-
.../utilcode/pkg/feature/span/SpanActivity.kt | 2 +-
.../utilcode/pkg/feature/toast/CustomToast.kt | 2 +-
.../pkg/feature/toast/ToastActivity.kt | 2 +-
.../utilcode/pkg/helper/DialogHelper.kt | 2 +-
.../main/res/layout/activity_adaptscreen.xml | 4 +--
.../res/layout/activity_adaptscreen_close.xml | 4 +--
.../layout/activity_adaptscreen_height.xml | 4 +--
.../res/layout/activity_adaptscreen_width.xml | 4 +--
.../layout/activity_bar_status_fragment.xml | 4 +--
.../src/main/res/layout/activity_fragment.xml | 2 +-
.../src/main/res/layout/activity_image.xml | 2 +-
84 files changed, 241 insertions(+), 220 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 8271c33548..a1706be701 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,4 @@
+* `19/03/09` [fix] UriUtils#uri2File.
* `19/03/08` [add] LogUtils support multi process. Publish v1.23.7.
* `19/03/02` [fix] LogUtils#file.
* `19/02/28` [fix] ImageUtils#calculateInSampleSize. Publish v1.23.6.
diff --git a/config.gradle b/config.gradle
index 57c3d35e99..106f066059 100644
--- a/config.gradle
+++ b/config.gradle
@@ -2,7 +2,7 @@ ext {
applicationId = 'com.blankj.androidutilcode'
appName = 'Util'
- compileSdkVersion = 27
+ compileSdkVersion = 28
minSdkVersion = 14
targetSdkVersion = 27
versionCode = 1_023_007
@@ -16,8 +16,8 @@ ext {
// lib version
kotlin_version = '1.3.0'
- support_version = '27.1.1'
leakcanary_version = '1.6.3'
+ androidx_version = '1.0.0'
dep = [
plugin : [
@@ -30,19 +30,18 @@ ext {
],
// lib
- support : [
- appcompat_v7: "com.android.support:appcompat-v7:$support_version",
- design : "com.android.support:design:$support_version",
- multidex : "com.android.support:multidex:1.0.2",
- ],
- constraint : "com.android.support.constraint:constraint-layout:1.1.3",
+ appcompat : "androidx.appcompat:appcompat:$androidx_version",
+ design : "com.google.android.material:material:$androidx_version",
+ multidex : "androidx.multidex:multidex:2.0.1",
+ constraint : "androidx.constraintlayout:constraintlayout:1.1.3",
+
kotlin : "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version",
leakcanary : [
android : "com.squareup.leakcanary:leakcanary-android:$leakcanary_version",
android_no_op : "com.squareup.leakcanary:leakcanary-android-no-op:$leakcanary_version",
support_fragment: "com.squareup.leakcanary:leakcanary-support-fragment:$leakcanary_version"
],
- free_proguard: "com.blankj:free-proguard:0.0.7",
+ free_proguard: "com.blankj:free-proguard:0.0.12",
adapt_screen : "com.blankj:adapt-screen:0.0.3",
gson : "com.google.code.gson:gson:2.8.2",
diff --git a/gradle.properties b/gradle.properties
index e98b0a89fc..ad5471a961 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -17,4 +17,6 @@
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
# org.gradle.parallel=true
-#org.gradle.jvmargs=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005
\ No newline at end of file
+#org.gradle.jvmargs=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005
+android.enableJetifier=true
+android.useAndroidX=true
\ No newline at end of file
diff --git a/launcher/pkg/src/main/java/com/blankj/launcher/pkg/MainActivity.kt b/launcher/pkg/src/main/java/com/blankj/launcher/pkg/MainActivity.kt
index 27d29a032a..e6dc516ed6 100644
--- a/launcher/pkg/src/main/java/com/blankj/launcher/pkg/MainActivity.kt
+++ b/launcher/pkg/src/main/java/com/blankj/launcher/pkg/MainActivity.kt
@@ -2,7 +2,7 @@ package com.blankj.launcher.pkg
import android.graphics.Color
import android.os.Bundle
-import android.support.v7.app.ActionBarDrawerToggle
+import androidx.appcompat.app.ActionBarDrawerToggle
import android.view.View
import android.widget.ImageView
import com.blankj.lib.base.BaseDrawerActivity
diff --git a/launcher/pkg/src/main/res/layout/activity_main.xml b/launcher/pkg/src/main/res/layout/activity_main.xml
index 3b31dafe32..ee8b62a6fa 100644
--- a/launcher/pkg/src/main/res/layout/activity_main.xml
+++ b/launcher/pkg/src/main/res/layout/activity_main.xml
@@ -1,17 +1,17 @@
-
diff --git a/subutil/lib/src/main/java/com/blankj/subutil/util/Utils.java b/subutil/lib/src/main/java/com/blankj/subutil/util/Utils.java
index 9cbf4e06fd..91b336abcf 100644
--- a/subutil/lib/src/main/java/com/blankj/subutil/util/Utils.java
+++ b/subutil/lib/src/main/java/com/blankj/subutil/util/Utils.java
@@ -7,8 +7,8 @@
import android.content.Context;
import android.database.Cursor;
import android.net.Uri;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
import java.lang.reflect.InvocationTargetException;
diff --git a/subutil/pkg/src/main/java/com/blankj/subutil/pkg/helper/DialogHelper.kt b/subutil/pkg/src/main/java/com/blankj/subutil/pkg/helper/DialogHelper.kt
index 45e67a4a0d..9eba25c622 100644
--- a/subutil/pkg/src/main/java/com/blankj/subutil/pkg/helper/DialogHelper.kt
+++ b/subutil/pkg/src/main/java/com/blankj/subutil/pkg/helper/DialogHelper.kt
@@ -1,6 +1,6 @@
package com.blankj.subutil.pkg.helper
-import android.support.v7.app.AlertDialog
+import androidx.appcompat.app.AlertDialog
import com.blankj.subutil.pkg.R
import com.blankj.utilcode.util.ActivityUtils
import com.blankj.utilcode.util.PermissionUtils
diff --git a/utilcode/lib/build.gradle b/utilcode/lib/build.gradle
index 3570124816..41b0dacaa4 100644
--- a/utilcode/lib/build.gradle
+++ b/utilcode/lib/build.gradle
@@ -1,7 +1,7 @@
apply {
from "${rootDir.path}/config_lib.gradle"
- plugin "tech.harmonysoft.oss.traute"
+// plugin "tech.harmonysoft.oss.traute"
plugin "com.github.dcendents.android-maven"
plugin "com.jfrog.bintray"
plugin "readme-core"
@@ -17,10 +17,10 @@ apply from: "${rootDir.path}/gradle/bintrayUploadAndroid.gradle"
dependencies {
compile dep.gson
- compileOnly dep.support.appcompat_v7
- compileOnly dep.support.design
+ compileOnly dep.appcompat
+ compileOnly dep.design
testImplementation dep.junit
testImplementation dep.robolectric
- testImplementation dep.support.appcompat_v7
+ testImplementation dep.appcompat
}
\ No newline at end of file
diff --git a/utilcode/lib/project.properties b/utilcode/lib/project.properties
index 22ae3b8603..d0f2a3f7e0 100644
--- a/utilcode/lib/project.properties
+++ b/utilcode/lib/project.properties
@@ -1,7 +1,7 @@
#project
project.name=UtilCode
project.groupId=com.blankj
-project.artifactId=utilcode
+project.artifactId=utilcodex
project.packaging=aar
project.siteUrl=https://github.com/Blankj/AndroidUtilCode
project.gitUrl=https://github.com/Blankj/AndroidUtilCode.git
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/constant/MemoryConstants.java b/utilcode/lib/src/main/java/com/blankj/utilcode/constant/MemoryConstants.java
index b68bfcb113..5c05c0163e 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/constant/MemoryConstants.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/constant/MemoryConstants.java
@@ -1,6 +1,6 @@
package com.blankj.utilcode.constant;
-import android.support.annotation.IntDef;
+import androidx.annotation.IntDef;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/constant/PermissionConstants.java b/utilcode/lib/src/main/java/com/blankj/utilcode/constant/PermissionConstants.java
index 76f7e9a217..6db826e4ab 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/constant/PermissionConstants.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/constant/PermissionConstants.java
@@ -4,7 +4,7 @@
import android.Manifest.permission;
import android.annotation.SuppressLint;
import android.os.Build;
-import android.support.annotation.StringDef;
+import androidx.annotation.StringDef;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/constant/TimeConstants.java b/utilcode/lib/src/main/java/com/blankj/utilcode/constant/TimeConstants.java
index 9932037bf8..45090576e3 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/constant/TimeConstants.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/constant/TimeConstants.java
@@ -1,6 +1,6 @@
package com.blankj.utilcode.constant;
-import android.support.annotation.IntDef;
+import androidx.annotation.IntDef;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/ActivityUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/ActivityUtils.java
index 4b8a9a07b5..9dd16d6e48 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/ActivityUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/ActivityUtils.java
@@ -10,15 +10,16 @@
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.os.Bundle;
-import android.support.annotation.AnimRes;
-import android.support.annotation.NonNull;
-import android.support.v4.app.ActivityOptionsCompat;
-import android.support.v4.util.Pair;
import android.util.Log;
import android.view.View;
import java.util.List;
+import androidx.annotation.AnimRes;
+import androidx.annotation.NonNull;
+import androidx.core.app.ActivityOptionsCompat;
+import androidx.core.util.Pair;
+
/**
*
* author: Blankj
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/AntiShakeUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/AntiShakeUtils.java
index 7e87e73474..ca9036225e 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/AntiShakeUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/AntiShakeUtils.java
@@ -1,9 +1,10 @@
package com.blankj.utilcode.util;
-import android.support.annotation.IntRange;
-import android.support.annotation.NonNull;
import android.view.View;
+import androidx.annotation.IntRange;
+import androidx.annotation.NonNull;
+
/**
*
* author: blankj
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/AppUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/AppUtils.java
index 136f27b5ed..357c423fc6 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/AppUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/AppUtils.java
@@ -17,8 +17,6 @@
import android.net.Uri;
import android.os.Build;
import android.provider.Settings;
-import android.support.annotation.NonNull;
-import android.support.v4.content.FileProvider;
import android.util.Log;
import java.io.File;
@@ -27,6 +25,9 @@
import java.util.ArrayList;
import java.util.List;
+import androidx.annotation.NonNull;
+import androidx.core.content.FileProvider;
+
/**
*
* author: Blankj
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/BarUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/BarUtils.java
index 7b5509b2b5..22178a5c20 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/BarUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/BarUtils.java
@@ -8,11 +8,6 @@
import android.graphics.Color;
import android.graphics.Point;
import android.os.Build;
-import android.support.annotation.ColorInt;
-import android.support.annotation.NonNull;
-import android.support.annotation.RequiresApi;
-import android.support.annotation.RequiresPermission;
-import android.support.v4.widget.DrawerLayout;
import android.util.Log;
import android.util.TypedValue;
import android.view.Display;
@@ -27,6 +22,12 @@
import java.lang.reflect.Method;
+import androidx.annotation.ColorInt;
+import androidx.annotation.NonNull;
+import androidx.annotation.RequiresApi;
+import androidx.annotation.RequiresPermission;
+import androidx.drawerlayout.widget.DrawerLayout;
+
import static android.Manifest.permission.EXPAND_STATUS_BAR;
/**
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/BrightnessUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/BrightnessUtils.java
index f9344b0a59..bacc519540 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/BrightnessUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/BrightnessUtils.java
@@ -2,11 +2,12 @@
import android.content.ContentResolver;
import android.provider.Settings;
-import android.support.annotation.IntRange;
-import android.support.annotation.NonNull;
import android.view.Window;
import android.view.WindowManager;
+import androidx.annotation.IntRange;
+import androidx.annotation.NonNull;
+
/**
*
* author: Blankj
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/CacheDiskStaticUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/CacheDiskStaticUtils.java
index bb48a4b5cf..c5a9a17a6d 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/CacheDiskStaticUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/CacheDiskStaticUtils.java
@@ -3,13 +3,14 @@
import android.graphics.Bitmap;
import android.graphics.drawable.Drawable;
import android.os.Parcelable;
-import android.support.annotation.NonNull;
import org.json.JSONArray;
import org.json.JSONObject;
import java.io.Serializable;
+import androidx.annotation.NonNull;
+
/**
*
* author: Blankj
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/CacheDiskUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/CacheDiskUtils.java
index 99aef6b078..2e6637febf 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/CacheDiskUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/CacheDiskUtils.java
@@ -8,7 +8,6 @@
import android.graphics.drawable.Drawable;
import android.os.Parcel;
import android.os.Parcelable;
-import android.support.annotation.NonNull;
import android.util.Log;
import com.blankj.utilcode.constant.CacheConstants;
@@ -37,6 +36,8 @@
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicLong;
+import androidx.annotation.NonNull;
+
/**
*
* author: Blankj
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/CacheDoubleStaticUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/CacheDoubleStaticUtils.java
index 2ef267bd01..6dbb9f7475 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/CacheDoubleStaticUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/CacheDoubleStaticUtils.java
@@ -3,13 +3,14 @@
import android.graphics.Bitmap;
import android.graphics.drawable.Drawable;
import android.os.Parcelable;
-import android.support.annotation.NonNull;
import org.json.JSONArray;
import org.json.JSONObject;
import java.io.Serializable;
+import androidx.annotation.NonNull;
+
/**
*
* author: Blankj
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/CacheDoubleUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/CacheDoubleUtils.java
index c800423c78..aca1c25837 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/CacheDoubleUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/CacheDoubleUtils.java
@@ -3,7 +3,7 @@
import android.graphics.Bitmap;
import android.graphics.drawable.Drawable;
import android.os.Parcelable;
-import android.support.annotation.NonNull;
+import androidx.annotation.NonNull;
import com.blankj.utilcode.constant.CacheConstants;
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/CacheMemoryStaticUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/CacheMemoryStaticUtils.java
index 56abfba117..aedcfa7fc4 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/CacheMemoryStaticUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/CacheMemoryStaticUtils.java
@@ -1,6 +1,6 @@
package com.blankj.utilcode.util;
-import android.support.annotation.NonNull;
+import androidx.annotation.NonNull;
/**
*
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/CacheMemoryUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/CacheMemoryUtils.java
index d0e06e394d..ddaa2baed9 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/CacheMemoryUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/CacheMemoryUtils.java
@@ -1,7 +1,7 @@
package com.blankj.utilcode.util;
-import android.support.annotation.NonNull;
-import android.support.v4.util.LruCache;
+import androidx.annotation.NonNull;
+import androidx.collection.LruCache;
import com.blankj.utilcode.constant.CacheConstants;
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/ColorUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/ColorUtils.java
index 4c0c22232b..a6603cfc44 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/ColorUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/ColorUtils.java
@@ -1,12 +1,12 @@
package com.blankj.utilcode.util;
import android.graphics.Color;
-import android.support.annotation.ColorInt;
-import android.support.annotation.ColorRes;
-import android.support.annotation.FloatRange;
-import android.support.annotation.IntRange;
-import android.support.annotation.NonNull;
-import android.support.v4.content.ContextCompat;
+import androidx.annotation.ColorInt;
+import androidx.annotation.ColorRes;
+import androidx.annotation.FloatRange;
+import androidx.annotation.IntRange;
+import androidx.annotation.NonNull;
+import androidx.core.content.ContextCompat;
/**
*
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/CrashUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/CrashUtils.java
index 9ef930c467..a096321cf4 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/CrashUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/CrashUtils.java
@@ -5,8 +5,8 @@
import android.content.pm.PackageManager;
import android.os.Build;
import android.os.Environment;
-import android.support.annotation.NonNull;
-import android.support.annotation.RequiresPermission;
+import androidx.annotation.NonNull;
+import androidx.annotation.RequiresPermission;
import android.util.Log;
import java.io.BufferedWriter;
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/DeviceUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/DeviceUtils.java
index c1c2c3c76e..d0c1788a02 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/DeviceUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/DeviceUtils.java
@@ -8,8 +8,8 @@
import android.os.Build;
import android.os.PowerManager;
import android.provider.Settings;
-import android.support.annotation.RequiresApi;
-import android.support.annotation.RequiresPermission;
+import androidx.annotation.RequiresApi;
+import androidx.annotation.RequiresPermission;
import android.text.TextUtils;
import java.io.File;
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/FragmentUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/FragmentUtils.java
index 43b8537e75..9e8ae14ef1 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/FragmentUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/FragmentUtils.java
@@ -3,16 +3,6 @@
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.os.Bundle;
-import android.support.annotation.AnimRes;
-import android.support.annotation.AnimatorRes;
-import android.support.annotation.ColorInt;
-import android.support.annotation.DrawableRes;
-import android.support.annotation.IdRes;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.v4.app.Fragment;
-import android.support.v4.app.FragmentManager;
-import android.support.v4.app.FragmentTransaction;
import android.util.Log;
import android.view.View;
@@ -20,6 +10,17 @@
import java.util.Collections;
import java.util.List;
+import androidx.annotation.AnimRes;
+import androidx.annotation.AnimatorRes;
+import androidx.annotation.ColorInt;
+import androidx.annotation.DrawableRes;
+import androidx.annotation.IdRes;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentManager;
+import androidx.fragment.app.FragmentTransaction;
+
/**
*
* author: Blankj
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/ImageUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/ImageUtils.java
index 83e01eb1ad..cbee7dd4bd 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/ImageUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/ImageUtils.java
@@ -27,13 +27,13 @@
import android.renderscript.Element;
import android.renderscript.RenderScript;
import android.renderscript.ScriptIntrinsicBlur;
-import android.support.annotation.ColorInt;
-import android.support.annotation.DrawableRes;
-import android.support.annotation.FloatRange;
-import android.support.annotation.IntRange;
-import android.support.annotation.NonNull;
-import android.support.annotation.RequiresApi;
-import android.support.v4.content.ContextCompat;
+import androidx.annotation.ColorInt;
+import androidx.annotation.DrawableRes;
+import androidx.annotation.FloatRange;
+import androidx.annotation.IntRange;
+import androidx.annotation.NonNull;
+import androidx.annotation.RequiresApi;
+import androidx.core.content.ContextCompat;
import android.view.View;
import java.io.BufferedOutputStream;
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/IntentUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/IntentUtils.java
index 6faa37d043..1e26dc8a9a 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/IntentUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/IntentUtils.java
@@ -8,8 +8,8 @@
import android.os.Bundle;
import android.provider.MediaStore;
import android.provider.Settings;
-import android.support.annotation.RequiresPermission;
-import android.support.v4.content.FileProvider;
+import androidx.annotation.RequiresPermission;
+import androidx.core.content.FileProvider;
import java.io.File;
import java.util.ArrayList;
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/LogUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/LogUtils.java
index e1e2e78600..f5d814207d 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/LogUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/LogUtils.java
@@ -12,10 +12,10 @@
import android.os.Build;
import android.os.Bundle;
import android.os.Environment;
-import android.support.annotation.IntDef;
-import android.support.annotation.IntRange;
-import android.support.annotation.RequiresApi;
-import android.support.v4.util.SimpleArrayMap;
+import androidx.annotation.IntDef;
+import androidx.annotation.IntRange;
+import androidx.annotation.RequiresApi;
+import androidx.collection.SimpleArrayMap;
import android.util.Log;
import com.google.gson.Gson;
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/MetaDataUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/MetaDataUtils.java
index 6f6cf85b80..bd4b8da935 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/MetaDataUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/MetaDataUtils.java
@@ -8,7 +8,7 @@
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.content.pm.ServiceInfo;
-import android.support.annotation.NonNull;
+import androidx.annotation.NonNull;
/**
*
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/NetworkUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/NetworkUtils.java
index f281d777c2..3171837f46 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/NetworkUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/NetworkUtils.java
@@ -7,7 +7,7 @@
import android.net.NetworkInfo;
import android.net.wifi.WifiManager;
import android.os.Build;
-import android.support.annotation.RequiresPermission;
+import androidx.annotation.RequiresPermission;
import android.telephony.TelephonyManager;
import android.text.format.Formatter;
import android.util.Log;
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/NotificationUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/NotificationUtils.java
index b8163d2e66..73a900b465 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/NotificationUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/NotificationUtils.java
@@ -5,9 +5,9 @@
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
-import android.support.annotation.Nullable;
-import android.support.v4.app.NotificationCompat;
-import android.support.v4.app.NotificationManagerCompat;
+import androidx.annotation.Nullable;
+import androidx.core.app.NotificationCompat;
+import androidx.core.app.NotificationManagerCompat;
/**
*
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/ObjectUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/ObjectUtils.java
index be5491ece0..3c0c087a39 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/ObjectUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/ObjectUtils.java
@@ -1,9 +1,9 @@
package com.blankj.utilcode.util;
import android.os.Build;
-import android.support.annotation.RequiresApi;
-import android.support.v4.util.LongSparseArray;
-import android.support.v4.util.SimpleArrayMap;
+import androidx.annotation.RequiresApi;
+import androidx.collection.LongSparseArray;
+import androidx.collection.SimpleArrayMap;
import android.util.SparseArray;
import android.util.SparseBooleanArray;
import android.util.SparseIntArray;
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/PermissionUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/PermissionUtils.java
index 235a0f3f94..1cb3df0156 100755
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/PermissionUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/PermissionUtils.java
@@ -10,10 +10,10 @@
import android.os.Build;
import android.os.Bundle;
import android.provider.Settings;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.annotation.RequiresApi;
-import android.support.v4.content.ContextCompat;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.RequiresApi;
+import androidx.core.content.ContextCompat;
import android.util.Log;
import android.view.MotionEvent;
import android.view.WindowManager;
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/PhoneUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/PhoneUtils.java
index 99068781a4..f407f81b5f 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/PhoneUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/PhoneUtils.java
@@ -7,7 +7,7 @@
import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.Build;
-import android.support.annotation.RequiresPermission;
+import androidx.annotation.RequiresPermission;
import android.telephony.SmsManager;
import android.telephony.TelephonyManager;
import android.text.TextUtils;
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/ProcessUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/ProcessUtils.java
index 7db75522d9..00c2bf6f73 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/ProcessUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/ProcessUtils.java
@@ -10,8 +10,8 @@
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.provider.Settings;
-import android.support.annotation.NonNull;
-import android.support.annotation.RequiresPermission;
+import androidx.annotation.NonNull;
+import androidx.annotation.RequiresPermission;
import android.util.Log;
import java.io.BufferedReader;
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/RegexUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/RegexUtils.java
index ba57fab956..817a94149f 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/RegexUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/RegexUtils.java
@@ -1,6 +1,6 @@
package com.blankj.utilcode.util;
-import android.support.v4.util.SimpleArrayMap;
+import androidx.collection.SimpleArrayMap;
import com.blankj.utilcode.constant.RegexConstants;
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/ResourceUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/ResourceUtils.java
index 92424163bb..ee41e95958 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/ResourceUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/ResourceUtils.java
@@ -1,6 +1,6 @@
package com.blankj.utilcode.util;
-import android.support.annotation.RawRes;
+import androidx.annotation.RawRes;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/SPStaticUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/SPStaticUtils.java
index d3e21fb873..21274c3023 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/SPStaticUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/SPStaticUtils.java
@@ -1,7 +1,7 @@
package com.blankj.utilcode.util;
import android.content.SharedPreferences;
-import android.support.annotation.NonNull;
+import androidx.annotation.NonNull;
import java.util.Map;
import java.util.Set;
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/SPUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/SPUtils.java
index 554a2ed586..a9d18a1a55 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/SPUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/SPUtils.java
@@ -3,7 +3,7 @@
import android.annotation.SuppressLint;
import android.content.Context;
import android.content.SharedPreferences;
-import android.support.annotation.NonNull;
+import androidx.annotation.NonNull;
import java.util.Collections;
import java.util.HashMap;
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/ScreenUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/ScreenUtils.java
index c3e089a90f..f55e4a21db 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/ScreenUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/ScreenUtils.java
@@ -7,12 +7,11 @@
import android.content.res.Configuration;
import android.content.res.Resources;
import android.graphics.Bitmap;
-import android.graphics.Canvas;
import android.graphics.Point;
import android.os.Build;
import android.provider.Settings;
-import android.support.annotation.NonNull;
-import android.support.annotation.RequiresPermission;
+import androidx.annotation.NonNull;
+import androidx.annotation.RequiresPermission;
import android.util.DisplayMetrics;
import android.view.Surface;
import android.view.View;
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/SnackbarUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/SnackbarUtils.java
index b164e6154e..eab1990d29 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/SnackbarUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/SnackbarUtils.java
@@ -1,12 +1,12 @@
package com.blankj.utilcode.util;
-import android.support.annotation.ColorInt;
-import android.support.annotation.DrawableRes;
-import android.support.annotation.IntDef;
-import android.support.annotation.IntRange;
-import android.support.annotation.LayoutRes;
-import android.support.annotation.NonNull;
-import android.support.design.widget.Snackbar;
+import androidx.annotation.ColorInt;
+import androidx.annotation.DrawableRes;
+import androidx.annotation.IntDef;
+import androidx.annotation.IntRange;
+import androidx.annotation.LayoutRes;
+import androidx.annotation.NonNull;
+import com.google.android.material.snackbar.Snackbar;
import android.text.SpannableString;
import android.text.Spanned;
import android.text.style.ForegroundColorSpan;
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/SpanUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/SpanUtils.java
index 641204fd63..d79cf9262b 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/SpanUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/SpanUtils.java
@@ -14,14 +14,14 @@
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.net.Uri;
-import android.support.annotation.ColorInt;
-import android.support.annotation.DrawableRes;
-import android.support.annotation.FloatRange;
-import android.support.annotation.IntDef;
-import android.support.annotation.IntRange;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.v4.content.ContextCompat;
+import androidx.annotation.ColorInt;
+import androidx.annotation.DrawableRes;
+import androidx.annotation.FloatRange;
+import androidx.annotation.IntDef;
+import androidx.annotation.IntRange;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.core.content.ContextCompat;
import android.text.Layout;
import android.text.Layout.Alignment;
import android.text.SpannableStringBuilder;
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/StringUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/StringUtils.java
index c3254e3d32..70f0defe50 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/StringUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/StringUtils.java
@@ -1,8 +1,8 @@
package com.blankj.utilcode.util;
import android.content.res.Resources;
-import android.support.annotation.ArrayRes;
-import android.support.annotation.StringRes;
+import androidx.annotation.ArrayRes;
+import androidx.annotation.StringRes;
/**
*
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/ThreadUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/ThreadUtils.java
index ba7122e366..819af790e8 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/ThreadUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/ThreadUtils.java
@@ -2,9 +2,6 @@
import android.os.Handler;
import android.os.Looper;
-import android.support.annotation.IntRange;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
import android.util.Log;
import android.util.SparseArray;
@@ -21,6 +18,10 @@
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicLong;
+import androidx.annotation.IntRange;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
/**
*
* author: Blankj
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/TimeUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/TimeUtils.java
index adaa920474..a5286b0fbe 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/TimeUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/TimeUtils.java
@@ -1,6 +1,6 @@
package com.blankj.utilcode.util;
-import android.support.annotation.NonNull;
+import androidx.annotation.NonNull;
import com.blankj.utilcode.constant.TimeConstants;
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/ToastUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/ToastUtils.java
index b4fe658945..b25360e52c 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/ToastUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/ToastUtils.java
@@ -14,11 +14,11 @@
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
-import android.support.annotation.ColorInt;
-import android.support.annotation.DrawableRes;
-import android.support.annotation.LayoutRes;
-import android.support.annotation.StringRes;
-import android.support.v4.app.NotificationManagerCompat;
+import androidx.annotation.ColorInt;
+import androidx.annotation.DrawableRes;
+import androidx.annotation.LayoutRes;
+import androidx.annotation.StringRes;
+import androidx.core.app.NotificationManagerCompat;
import android.util.Log;
import android.view.Gravity;
import android.view.LayoutInflater;
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/UriUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/UriUtils.java
index 98f3ef66a8..8e4fd9d09c 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/UriUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/UriUtils.java
@@ -8,12 +8,14 @@
import android.os.Environment;
import android.provider.DocumentsContract;
import android.provider.MediaStore;
-import android.support.annotation.NonNull;
-import android.support.v4.content.FileProvider;
+import android.text.TextUtils;
import android.util.Log;
import java.io.File;
+import androidx.annotation.NonNull;
+import androidx.core.content.FileProvider;
+
/**
*
* author: Blankj
@@ -70,12 +72,19 @@ public static File uri2File(@NonNull final Uri uri) {
Log.d("UriUtils", uri.toString() + " parse failed. -> 1");
return null;
} else if ("com.android.providers.downloads.documents".equals(authority)) {
- final String id = DocumentsContract.getDocumentId(uri);
- final Uri contentUri = ContentUris.withAppendedId(
- Uri.parse("content://downloads/public_downloads"),
- Long.valueOf(id)
- );
- return getFileFromUri(contentUri, 2);
+ String id = DocumentsContract.getDocumentId(uri);
+ if (!TextUtils.isEmpty(id)) {
+ if (id.startsWith("raw:")) {
+ return new File(id.substring(4));
+ }
+ final Uri contentUri = ContentUris.withAppendedId(
+ Uri.parse(Environment.DIRECTORY_DOWNLOADS),
+ Long.valueOf(id)
+ );
+ return getFileFromUri(contentUri, 2);
+ }
+ Log.d("UriUtils", uri.toString() + " parse failed. -> 3");
+ return null;
} else if ("com.android.providers.media.documents".equals(authority)) {
final String docId = DocumentsContract.getDocumentId(uri);
final String[] split = docId.split(":");
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/Utils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/Utils.java
index 52b82376e1..d858e4ad22 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/Utils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/Utils.java
@@ -7,7 +7,7 @@
import android.app.Application.ActivityLifecycleCallbacks;
import android.content.Context;
import android.os.Bundle;
-import android.support.v4.content.FileProvider;
+import androidx.core.content.FileProvider;
import android.view.View;
import android.view.inputmethod.InputMethodManager;
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/VibrateUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/VibrateUtils.java
index a57bbb8241..622d657817 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/VibrateUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/VibrateUtils.java
@@ -2,7 +2,7 @@
import android.content.Context;
import android.os.Vibrator;
-import android.support.annotation.RequiresPermission;
+import androidx.annotation.RequiresPermission;
import static android.Manifest.permission.VIBRATE;
diff --git a/utilcode/lib/src/test/java/com/blankj/utilcode/util/ObjectUtilsTest.java b/utilcode/lib/src/test/java/com/blankj/utilcode/util/ObjectUtilsTest.java
index a0203f78fc..ed12c24d8d 100644
--- a/utilcode/lib/src/test/java/com/blankj/utilcode/util/ObjectUtilsTest.java
+++ b/utilcode/lib/src/test/java/com/blankj/utilcode/util/ObjectUtilsTest.java
@@ -1,7 +1,5 @@
package com.blankj.utilcode.util;
-import android.support.v4.util.LongSparseArray;
-import android.support.v4.util.SimpleArrayMap;
import android.util.SparseArray;
import android.util.SparseBooleanArray;
import android.util.SparseIntArray;
@@ -12,6 +10,9 @@
import java.util.HashMap;
import java.util.LinkedList;
+import androidx.collection.LongSparseArray;
+import androidx.collection.SimpleArrayMap;
+
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
diff --git a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/activity/ActivityActivity.kt b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/activity/ActivityActivity.kt
index 5ace21f5b1..f3d3600a27 100644
--- a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/activity/ActivityActivity.kt
+++ b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/activity/ActivityActivity.kt
@@ -6,7 +6,7 @@ import android.graphics.Bitmap
import android.graphics.drawable.BitmapDrawable
import android.os.Build
import android.os.Bundle
-import android.support.v4.app.ActivityOptionsCompat
+import androidx.core.app.ActivityOptionsCompat
import android.view.View
import android.view.Window
import com.blankj.lib.base.BaseTitleBarActivity
diff --git a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/activity/SubActivityActivity.kt b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/activity/SubActivityActivity.kt
index 4815032936..864f1c12b4 100644
--- a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/activity/SubActivityActivity.kt
+++ b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/activity/SubActivityActivity.kt
@@ -2,7 +2,7 @@ package com.blankj.utilcode.pkg.feature.activity
import android.os.Build
import android.os.Bundle
-import android.support.v4.app.ActivityCompat
+import androidx.core.app.ActivityCompat
import android.view.View
import android.view.Window
import com.blankj.lib.base.BaseTitleBarActivity
diff --git a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/bar/BarStatusFragmentActivity.kt b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/bar/BarStatusFragmentActivity.kt
index b2633ddf5c..0dac18c72c 100644
--- a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/bar/BarStatusFragmentActivity.kt
+++ b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/bar/BarStatusFragmentActivity.kt
@@ -3,10 +3,10 @@ package com.blankj.utilcode.pkg.feature.bar
import android.content.Context
import android.content.Intent
import android.os.Bundle
-import android.support.design.widget.BottomNavigationView
-import android.support.v4.app.Fragment
-import android.support.v4.app.FragmentPagerAdapter
-import android.support.v4.view.ViewPager
+import com.google.android.material.bottomnavigation.BottomNavigationView
+import androidx.fragment.app.Fragment
+import androidx.fragment.app.FragmentPagerAdapter
+import androidx.viewpager.widget.ViewPager
import android.view.View
import com.blankj.lib.base.BaseActivity
import com.blankj.utilcode.pkg.R
@@ -37,7 +37,7 @@ class BarStatusFragmentActivity : BaseActivity() {
R.id.barStatusFragmentNavigationCustom
)
- private val mFragmentList = ArrayList()
+ private val mFragmentList = ArrayList()
private val mOnNavigationItemSelectedListener = BottomNavigationView.OnNavigationItemSelectedListener l@{ item ->
when (item.itemId) {
@@ -78,8 +78,8 @@ class BarStatusFragmentActivity : BaseActivity() {
mFragmentList.add(BarStatusCustomFragment.newInstance())
barStatusFragmentVp.offscreenPageLimit = 3
- barStatusFragmentVp.adapter = object : FragmentPagerAdapter(supportFragmentManager) {
- override fun getItem(position: Int): Fragment {
+ barStatusFragmentVp.adapter = object : androidx.fragment.app.FragmentPagerAdapter(supportFragmentManager) {
+ override fun getItem(position: Int): androidx.fragment.app.Fragment {
return mFragmentList[position]
}
@@ -88,7 +88,7 @@ class BarStatusFragmentActivity : BaseActivity() {
}
}
- barStatusFragmentVp.addOnPageChangeListener(object : ViewPager.OnPageChangeListener {
+ barStatusFragmentVp.addOnPageChangeListener(object : androidx.viewpager.widget.ViewPager.OnPageChangeListener {
override fun onPageScrolled(position: Int, positionOffset: Float, positionOffsetPixels: Int) {}
override fun onPageSelected(position: Int) {
diff --git a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/fragment/ContainerFragment.kt b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/fragment/ContainerFragment.kt
index ca0289a158..117c7d121e 100644
--- a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/fragment/ContainerFragment.kt
+++ b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/fragment/ContainerFragment.kt
@@ -2,8 +2,8 @@ package com.blankj.utilcode.pkg.feature.fragment
import android.os.Build
import android.os.Bundle
-import android.support.annotation.RequiresApi
-import android.support.v4.app.Fragment
+import androidx.annotation.RequiresApi
+import androidx.fragment.app.Fragment
import android.transition.*
import android.view.View
import com.blankj.lib.base.BaseLazyFragment
@@ -129,7 +129,7 @@ class ContainerFragment : BaseLazyFragment(), FragmentUtils.OnBackClickListener
}
}
- private fun addSharedElement(fragment: Fragment): Fragment {
+ private fun addSharedElement(fragment: androidx.fragment.app.Fragment): androidx.fragment.app.Fragment {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
fragment.sharedElementEnterTransition = DetailTransition()
fragment.enterTransition = Fade()
diff --git a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/fragment/FragmentActivity.kt b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/fragment/FragmentActivity.kt
index b768f563e5..6e3137b9c6 100644
--- a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/fragment/FragmentActivity.kt
+++ b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/fragment/FragmentActivity.kt
@@ -4,8 +4,8 @@ import android.content.Context
import android.content.Intent
import android.os.Bundle
import android.os.PersistableBundle
-import android.support.design.widget.BottomNavigationView
-import android.support.v4.app.Fragment
+import com.google.android.material.bottomnavigation.BottomNavigationView
+import androidx.fragment.app.Fragment
import android.view.View
import com.blankj.lib.base.BaseActivity
import com.blankj.utilcode.pkg.R
@@ -30,7 +30,7 @@ class FragmentActivity : BaseActivity() {
}
}
- private val mFragments = arrayListOf()
+ private val mFragments = arrayListOf()
private var curIndex: Int = 0
private val mOnNavigationItemSelectedListener = BottomNavigationView.OnNavigationItemSelectedListener { item ->
diff --git a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/image/ImageActivity.kt b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/image/ImageActivity.kt
index 496c5a4032..636d92c030 100644
--- a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/image/ImageActivity.kt
+++ b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/image/ImageActivity.kt
@@ -6,9 +6,9 @@ import android.graphics.Bitmap
import android.graphics.Color
import android.os.Build
import android.os.Bundle
-import android.support.annotation.LayoutRes
-import android.support.annotation.StringRes
-import android.support.v7.widget.LinearLayoutManager
+import androidx.annotation.LayoutRes
+import androidx.annotation.StringRes
+import androidx.recyclerview.widget.LinearLayoutManager
import android.view.View
import android.widget.ImageView
import android.widget.TextView
@@ -92,7 +92,7 @@ class ImageActivity : BaseActivity() {
}
imageRv.adapter = ImageAdapter(mList, R.layout.item_image)
- imageRv.layoutManager = LinearLayoutManager(this)
+ imageRv.layoutManager = androidx.recyclerview.widget.LinearLayoutManager(this)
}
override fun doBusiness() {}
diff --git a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/snackbar/SnackbarActivity.kt b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/snackbar/SnackbarActivity.kt
index 4bd07d274e..34d3914fe1 100644
--- a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/snackbar/SnackbarActivity.kt
+++ b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/snackbar/SnackbarActivity.kt
@@ -4,7 +4,7 @@ import android.content.Context
import android.content.Intent
import android.graphics.Color
import android.os.Bundle
-import android.support.annotation.StringRes
+import androidx.annotation.StringRes
import android.text.SpannableStringBuilder
import android.view.View
import android.view.ViewGroup
diff --git a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/span/SpanActivity.kt b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/span/SpanActivity.kt
index f3a1a3ee02..7c5fd45308 100644
--- a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/span/SpanActivity.kt
+++ b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/span/SpanActivity.kt
@@ -5,7 +5,7 @@ import android.content.Context
import android.content.Intent
import android.graphics.*
import android.os.Bundle
-import android.support.annotation.ColorInt
+import androidx.annotation.ColorInt
import android.text.Layout
import android.text.SpannableStringBuilder
import android.text.TextPaint
diff --git a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/toast/CustomToast.kt b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/toast/CustomToast.kt
index 314ba33d59..458ecbb3fb 100644
--- a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/toast/CustomToast.kt
+++ b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/toast/CustomToast.kt
@@ -2,7 +2,7 @@ package com.blankj.utilcode.pkg.feature.toast
import android.os.Handler
import android.os.Looper
-import android.support.annotation.StringRes
+import androidx.annotation.StringRes
import android.widget.TextView
import android.widget.Toast
diff --git a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/toast/ToastActivity.kt b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/toast/ToastActivity.kt
index ea6c10c24d..40055d14b9 100644
--- a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/toast/ToastActivity.kt
+++ b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/toast/ToastActivity.kt
@@ -4,7 +4,7 @@ import android.content.Context
import android.content.Intent
import android.graphics.Color
import android.os.Bundle
-import android.support.v4.content.ContextCompat
+import androidx.core.content.ContextCompat
import android.view.Gravity
import android.view.View
import com.blankj.lib.base.BaseTitleBarActivity
diff --git a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/helper/DialogHelper.kt b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/helper/DialogHelper.kt
index 7e6094414a..c3247b1312 100644
--- a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/helper/DialogHelper.kt
+++ b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/helper/DialogHelper.kt
@@ -1,6 +1,6 @@
package com.blankj.utilcode.pkg.helper
-import android.support.v7.app.AlertDialog
+import androidx.appcompat.app.AlertDialog
import android.text.method.ScrollingMovementMethod
import android.view.LayoutInflater
import android.view.View
diff --git a/utilcode/pkg/src/main/res/layout/activity_adaptscreen.xml b/utilcode/pkg/src/main/res/layout/activity_adaptscreen.xml
index 003c6f5840..e33848b84d 100644
--- a/utilcode/pkg/src/main/res/layout/activity_adaptscreen.xml
+++ b/utilcode/pkg/src/main/res/layout/activity_adaptscreen.xml
@@ -1,5 +1,5 @@
-
-
+
diff --git a/utilcode/pkg/src/main/res/layout/activity_adaptscreen_close.xml b/utilcode/pkg/src/main/res/layout/activity_adaptscreen_close.xml
index c3f88ecba3..e43cbb2bb5 100644
--- a/utilcode/pkg/src/main/res/layout/activity_adaptscreen_close.xml
+++ b/utilcode/pkg/src/main/res/layout/activity_adaptscreen_close.xml
@@ -8,7 +8,7 @@
android:background="@color/white"
tools:context=".feature.adaptScreen.CloseAdaptActivity">
-
@@ -42,6 +42,6 @@
android:textSize="30pt"
app:layout_constraintTop_toBottomOf="@id/adaptScreenCloseAdaptDpTv" />
-
+
\ No newline at end of file
diff --git a/utilcode/pkg/src/main/res/layout/activity_adaptscreen_height.xml b/utilcode/pkg/src/main/res/layout/activity_adaptscreen_height.xml
index 0b207d97f5..07c76be55b 100644
--- a/utilcode/pkg/src/main/res/layout/activity_adaptscreen_height.xml
+++ b/utilcode/pkg/src/main/res/layout/activity_adaptscreen_height.xml
@@ -8,7 +8,7 @@
android:background="@color/white"
tools:context=".feature.adaptScreen.HeightActivity">
-
@@ -94,6 +94,6 @@
-
+
\ No newline at end of file
diff --git a/utilcode/pkg/src/main/res/layout/activity_adaptscreen_width.xml b/utilcode/pkg/src/main/res/layout/activity_adaptscreen_width.xml
index 46e0f2f1a2..5a791d924f 100644
--- a/utilcode/pkg/src/main/res/layout/activity_adaptscreen_width.xml
+++ b/utilcode/pkg/src/main/res/layout/activity_adaptscreen_width.xml
@@ -8,7 +8,7 @@
android:background="@color/white"
tools:context=".feature.adaptScreen.WidthActivity">
-
@@ -147,6 +147,6 @@
-
+
\ No newline at end of file
diff --git a/utilcode/pkg/src/main/res/layout/activity_bar_status_fragment.xml b/utilcode/pkg/src/main/res/layout/activity_bar_status_fragment.xml
index c5f975b58f..1a36770b58 100644
--- a/utilcode/pkg/src/main/res/layout/activity_bar_status_fragment.xml
+++ b/utilcode/pkg/src/main/res/layout/activity_bar_status_fragment.xml
@@ -7,7 +7,7 @@
android:background="@color/white"
android:orientation="vertical">
-
-
-
-
From 70b6089109b6e58734d0a500820f54cb41858eba Mon Sep 17 00:00:00 2001
From: Blankj <625783482@qq.com>
Date: Fri, 8 Mar 2019 18:07:14 +0800
Subject: [PATCH 002/138] see 03/08 log
---
utilcode/README-CN.md | 3 +++
utilcode/README.md | 3 +++
2 files changed, 6 insertions(+)
diff --git a/utilcode/README-CN.md b/utilcode/README-CN.md
index f3756be966..7fc06ebf99 100644
--- a/utilcode/README-CN.md
+++ b/utilcode/README-CN.md
@@ -3,6 +3,9 @@
Gradle:
```groovy
implementation 'com.blankj:utilcode:1.23.7'
+
+// if u use AndroidX, use the following
+implementation 'com.blankj:utilcodex:1.23.7'
```
diff --git a/utilcode/README.md b/utilcode/README.md
index 75d8757892..094cc44c08 100644
--- a/utilcode/README.md
+++ b/utilcode/README.md
@@ -3,6 +3,9 @@
Gradle:
```groovy
implementation 'com.blankj:utilcode:1.23.7'
+
+// if u use AndroidX, use the following
+implementation 'com.blankj:utilcodex:1.23.7'
```
From 2fa66306221456a5be12d9d201c7495958596fb4 Mon Sep 17 00:00:00 2001
From: Blankj <625783482@qq.com>
Date: Mon, 11 Mar 2019 20:45:31 +0800
Subject: [PATCH 003/138] see 03/11 log
---
utilcode/lib/project.properties | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/utilcode/lib/project.properties b/utilcode/lib/project.properties
index d0f2a3f7e0..d238eda740 100644
--- a/utilcode/lib/project.properties
+++ b/utilcode/lib/project.properties
@@ -1,9 +1,9 @@
#project
-project.name=UtilCode
+project.name=UtilCodeX
project.groupId=com.blankj
project.artifactId=utilcodex
project.packaging=aar
project.siteUrl=https://github.com/Blankj/AndroidUtilCode
project.gitUrl=https://github.com/Blankj/AndroidUtilCode.git
#javadoc
-javadoc.name=UtilCode
\ No newline at end of file
+javadoc.name=UtilCodeX
\ No newline at end of file
From 6b0ff9575675cf0ae15c9c9a85eb249b5591c3a8 Mon Sep 17 00:00:00 2001
From: Blankj <625783482@qq.com>
Date: Mon, 3 Jun 2019 20:49:21 +0800
Subject: [PATCH 004/138] see 06/03 log
---
.gitignore | 2 +-
CHANGELOG.md | 1 +
gradle.properties | 8 +++++-
gradle/config/config.gradle | 10 ++++----
gradle/config/configApp.gradle | 5 +++-
launcher/app/build.gradle | 6 ++---
launcher/pkg/build.gradle | 2 +-
.../com/blankj/launcher/pkg/MainActivity.kt | 2 +-
.../pkg/src/main/res/layout/activity_main.xml | 18 ++++++-------
lib/base/build.gradle | 2 +-
.../com/blankj/lib/base/BaseActivity.java | 5 ++--
.../com/blankj/lib/base/BaseApplication.java | 3 ++-
.../blankj/lib/base/BaseDrawerActivity.java | 11 ++++----
.../com/blankj/lib/base/BaseFragment.java | 13 +++++-----
.../blankj/lib/base/BaseTitleActivity.java | 9 ++++---
.../java/com/blankj/lib/base/IBaseView.java | 5 ++--
.../com/blankj/lib/base/rv/BaseAdapter.java | 5 ++--
.../java/com/blankj/lib/base/rv/BaseCell.java | 3 ++-
.../blankj/lib/base/rv/BaseViewHolder.java | 4 +--
.../lib/base/rv/RecycleViewDivider.java | 10 ++++----
.../main/res/layout/activity_base_title.xml | 11 ++++----
.../activity_base_title_stub_scroll.xml | 4 +--
.../src/main/res/layout/activity_drawer.xml | 6 ++---
subutil/app/build.gradle | 2 +-
subutil/lib/build.gradle | 2 +-
.../blankj/subutil/util/LocationUtils.java | 2 +-
.../com/blankj/subutil/util/PinyinUtils.java | 2 +-
.../java/com/blankj/subutil/util/Utils.java | 4 +--
.../subutil/util/http/ExecutorFactory.java | 3 ++-
.../blankj/subutil/util/http/HttpUtils.java | 3 ++-
.../com/blankj/subutil/util/http/Request.java | 3 ++-
.../blankj/subutil/util/http/SSLConfig.java | 3 ++-
subutil/pkg/build.gradle | 2 +-
.../blankj/subutil/pkg/helper/DialogHelper.kt | 2 +-
utilcode/README-CN.md | 2 +-
utilcode/README.md | 2 +-
utilcode/app/build.gradle | 2 +-
utilcode/lib/build.gradle | 2 +-
utilcode/lib/project.properties | 6 ++---
.../utilcode/constant/MemoryConstants.java | 2 +-
.../constant/PermissionConstants.java | 2 +-
.../utilcode/constant/TimeConstants.java | 2 +-
.../blankj/utilcode/util/ActivityUtils.java | 11 ++++----
.../blankj/utilcode/util/AntiShakeUtils.java | 5 ++--
.../com/blankj/utilcode/util/AppUtils.java | 5 ++--
.../com/blankj/utilcode/util/BarUtils.java | 11 ++++----
.../blankj/utilcode/util/BrightnessUtils.java | 5 ++--
.../com/blankj/utilcode/util/BusUtils.java | 5 ++--
.../utilcode/util/CacheDiskStaticUtils.java | 3 ++-
.../blankj/utilcode/util/CacheDiskUtils.java | 3 ++-
.../utilcode/util/CacheDoubleStaticUtils.java | 3 ++-
.../utilcode/util/CacheDoubleUtils.java | 2 +-
.../utilcode/util/CacheMemoryStaticUtils.java | 2 +-
.../utilcode/util/CacheMemoryUtils.java | 4 +--
.../com/blankj/utilcode/util/ColorUtils.java | 12 ++++-----
.../com/blankj/utilcode/util/CrashUtils.java | 4 +--
.../com/blankj/utilcode/util/DeviceUtils.java | 5 ++--
.../blankj/utilcode/util/FragmentUtils.java | 21 ++++++++--------
.../com/blankj/utilcode/util/ImageUtils.java | 14 +++++------
.../com/blankj/utilcode/util/IntentUtils.java | 4 +--
.../blankj/utilcode/util/KeyboardUtils.java | 3 ++-
.../com/blankj/utilcode/util/LogUtils.java | 8 +++---
.../blankj/utilcode/util/MetaDataUtils.java | 2 +-
.../blankj/utilcode/util/NetworkUtils.java | 5 ++--
.../utilcode/util/NotificationUtils.java | 6 ++---
.../com/blankj/utilcode/util/ObjectUtils.java | 6 ++---
.../blankj/utilcode/util/PermissionUtils.java | 8 +++---
.../com/blankj/utilcode/util/PhoneUtils.java | 2 +-
.../blankj/utilcode/util/ProcessUtils.java | 4 +--
.../com/blankj/utilcode/util/RegexUtils.java | 2 +-
.../blankj/utilcode/util/ResourceUtils.java | 2 +-
.../blankj/utilcode/util/SPStaticUtils.java | 2 +-
.../com/blankj/utilcode/util/SPUtils.java | 2 +-
.../com/blankj/utilcode/util/ScreenUtils.java | 4 +--
.../com/blankj/utilcode/util/ShellUtils.java | 2 +-
.../blankj/utilcode/util/SnackbarUtils.java | 14 +++++------
.../com/blankj/utilcode/util/SpanUtils.java | 16 ++++++------
.../com/blankj/utilcode/util/StringUtils.java | 4 +--
.../com/blankj/utilcode/util/ThreadUtils.java | 5 ++--
.../com/blankj/utilcode/util/TimeUtils.java | 2 +-
.../com/blankj/utilcode/util/ToastUtils.java | 10 ++++----
.../com/blankj/utilcode/util/UriUtils.java | 25 +++++++++++++------
.../java/com/blankj/utilcode/util/Utils.java | 3 ++-
.../blankj/utilcode/util/VibrateUtils.java | 2 +-
.../com/blankj/utilcode/util/BaseTest.java | 11 +++-----
.../blankj/utilcode/util/ObjectUtilsTest.java | 5 ++--
utilcode/pkg/build.gradle | 2 +-
.../pkg/feature/activity/ActivityActivity.kt | 2 +-
.../feature/activity/SubActivityActivity.kt | 2 +-
.../feature/bar/BarStatusFragmentActivity.kt | 16 ++++++------
.../pkg/feature/fragment/ContainerFragment.kt | 6 ++---
.../pkg/feature/fragment/FragmentActivity.kt | 6 ++---
.../pkg/feature/image/ImageActivity.kt | 4 +--
.../pkg/feature/snackbar/SnackbarActivity.kt | 2 +-
.../utilcode/pkg/feature/span/SpanActivity.kt | 2 +-
.../utilcode/pkg/feature/toast/CustomToast.kt | 2 +-
.../pkg/feature/toast/ToastActivity.kt | 2 +-
.../utilcode/pkg/helper/DialogHelper.kt | 5 ++--
.../main/res/layout/activity_adaptscreen.xml | 4 +--
.../res/layout/activity_adaptscreen_close.xml | 4 +--
.../layout/activity_adaptscreen_height.xml | 7 +++---
.../res/layout/activity_adaptscreen_width.xml | 4 +--
.../layout/activity_bar_status_fragment.xml | 4 +--
.../src/main/res/layout/activity_fragment.xml | 2 +-
.../src/main/res/layout/activity_image.xml | 3 +--
105 files changed, 293 insertions(+), 253 deletions(-)
diff --git a/.gitignore b/.gitignore
index 201b88771a..193619553c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -9,4 +9,4 @@
.externalNativeBuild
/apk
*.phrof
-/maven
+/busMaven
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 95dfb60cc3..9c48786e89 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -3,6 +3,7 @@
* `19/04/24` [upd] The swipe panel.
* `19/03/17` [fix] The ugly UI.
* `19/03/14` [fix] AdaptScreenUtils didn't work on some HaWei tablet.
+* `19/03/09` [fix] UriUtils#uri2File.
* `19/03/08` [add] LogUtils support multi process. Publish v1.23.7.
* `19/03/02` [fix] LogUtils#file.
* `19/02/28` [fix] ImageUtils#calculateInSampleSize. Publish v1.23.6.
diff --git a/gradle.properties b/gradle.properties
index 110f0cb7ef..c209c08b84 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -19,4 +19,10 @@
#org.gradle.jvmargs=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005
-org.gradle.jvmargs=-XX:MaxHeapSize=1024m -Xmx1024m
\ No newline at end of file
+org.gradle.jvmargs=-Xmx8192m -XX:MaxPermSize=2048m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
+org.gradle.daemon=true
+org.gradle.configureondemand=true
+org.gradle.parallel=true
+
+android.enableJetifier=true
+android.useAndroidX=true
\ No newline at end of file
diff --git a/gradle/config/config.gradle b/gradle/config/config.gradle
index e455c4dba6..e8c793b6b3 100644
--- a/gradle/config/config.gradle
+++ b/gradle/config/config.gradle
@@ -5,7 +5,7 @@ gradle.ext {
applicationId = 'com.blankj.androidutilcode'
appName = 'Util'
- compileSdkVersion = 27
+ compileSdkVersion = 28
minSdkVersion = 14
targetSdkVersion = 27
versionCode = 1_024_000
@@ -13,8 +13,8 @@ gradle.ext {
// lib version
kotlin_version = '1.3.10'
- support_version = '27.1.1'
leakcanary_version = '1.6.3'
+ androidx_version = '1.0.0'
dep = [:]
@@ -36,11 +36,11 @@ gradle.ext {
subutil_lib : new DepConfig(":subutil:lib"),
subutil_pkg : new DepConfig(":subutil:pkg"),
utilcode_app : new DepConfig(":utilcode:app"),
- utilcode_lib : new DepConfig(false, ":utilcode:lib", "com.blankj:utilcode:$versionName"),
+ utilcode_lib : new DepConfig(true, ":utilcode:lib", "com.blankj:utilcode:$versionName"),
utilcode_pkg : new DepConfig(":utilcode:pkg"),
- support_appcompat_v7 : new DepConfig("com.android.support:appcompat-v7:$support_version"),
- support_design : new DepConfig("com.android.support:design:$support_version"),
+ support_appcompat_v7 : new DepConfig("androidx.appcompat:appcompat:$androidx_version"),
+ support_material : new DepConfig("com.google.android.material:material:$androidx_version"),
support_multidex : new DepConfig("com.android.support:multidex:1.0.2"),
constraint : new DepConfig("com.android.support.constraint:constraint-layout:1.1.3"),
diff --git a/gradle/config/configApp.gradle b/gradle/config/configApp.gradle
index cb8d5a290a..809cb07cd4 100644
--- a/gradle/config/configApp.gradle
+++ b/gradle/config/configApp.gradle
@@ -42,8 +42,11 @@ android {
}
dexOptions {
+ preDexLibraries true
javaMaxHeapSize "8g"
maxProcessCount 8
+ incremental true
+ dexInProcess = true
}
}
@@ -57,7 +60,7 @@ dependencies {
private String getSuffix() {
if (project.path == ":launcher:app") return ""
- return project.path.replace(":" , "_").substring(0, project.path.length() - 4)
+ return project.path.replace(":", "_").substring(0, project.path.length() - 4)
}
def configSigning(Project pro) {
diff --git a/launcher/app/build.gradle b/launcher/app/build.gradle
index eb9f8d906f..bf68fb45ff 100644
--- a/launcher/app/build.gradle
+++ b/launcher/app/build.gradle
@@ -4,7 +4,7 @@ apply {
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
- implementation project(':launcher:pkg')
- implementation project(':subutil:pkg')
- implementation project(':utilcode:pkg')
+ implementation gradle.ext.dep.launcher_pkg
+ implementation gradle.ext.dep.subutil_pkg
+ implementation gradle.ext.dep.utilcode_pkg
}
\ No newline at end of file
diff --git a/launcher/pkg/build.gradle b/launcher/pkg/build.gradle
index 9fe360a5dd..881637b34a 100644
--- a/launcher/pkg/build.gradle
+++ b/launcher/pkg/build.gradle
@@ -4,5 +4,5 @@ apply {
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
- api project(':lib:base')
+ api gradle.ext.dep.lib_base
}
\ No newline at end of file
diff --git a/launcher/pkg/src/main/java/com/blankj/launcher/pkg/MainActivity.kt b/launcher/pkg/src/main/java/com/blankj/launcher/pkg/MainActivity.kt
index 02491cd88d..0e9f0a8477 100644
--- a/launcher/pkg/src/main/java/com/blankj/launcher/pkg/MainActivity.kt
+++ b/launcher/pkg/src/main/java/com/blankj/launcher/pkg/MainActivity.kt
@@ -2,7 +2,7 @@ package com.blankj.launcher.pkg
import android.graphics.Color
import android.os.Bundle
-import android.support.v7.app.ActionBarDrawerToggle
+import androidx.appcompat.app.ActionBarDrawerToggle
import android.view.View
import android.widget.ImageView
import com.blankj.lib.base.BaseDrawerActivity
diff --git a/launcher/pkg/src/main/res/layout/activity_main.xml b/launcher/pkg/src/main/res/layout/activity_main.xml
index 3b31dafe32..ee8b62a6fa 100644
--- a/launcher/pkg/src/main/res/layout/activity_main.xml
+++ b/launcher/pkg/src/main/res/layout/activity_main.xml
@@ -1,17 +1,17 @@
-
-
-
-
-
-
+
+
-
@@ -69,5 +69,5 @@
android:text="@string/sub_util" />
-
-
+
+
diff --git a/lib/base/build.gradle b/lib/base/build.gradle
index 370036c062..67f9762d82 100644
--- a/lib/base/build.gradle
+++ b/lib/base/build.gradle
@@ -8,7 +8,7 @@ dependencies {
api gradle.ext.dep.subutil_lib
api gradle.ext.dep.support_appcompat_v7
- api gradle.ext.dep.support_design
+ api gradle.ext.dep.support_material
api gradle.ext.dep.support_multidex
api gradle.ext.dep.constraint
api gradle.ext.dep.kotlin
diff --git a/lib/base/src/main/java/com/blankj/lib/base/BaseActivity.java b/lib/base/src/main/java/com/blankj/lib/base/BaseActivity.java
index caae1d45cf..0c9d8fa419 100644
--- a/lib/base/src/main/java/com/blankj/lib/base/BaseActivity.java
+++ b/lib/base/src/main/java/com/blankj/lib/base/BaseActivity.java
@@ -3,11 +3,12 @@
import android.annotation.SuppressLint;
import android.app.Activity;
import android.os.Bundle;
-import android.support.annotation.LayoutRes;
-import android.support.v7.app.AppCompatActivity;
import android.view.LayoutInflater;
import android.view.View;
+import androidx.annotation.LayoutRes;
+import androidx.appcompat.app.AppCompatActivity;
+
import com.blankj.swipepanel.SwipePanel;
import com.blankj.utilcode.util.AntiShakeUtils;
import com.blankj.utilcode.util.AppUtils;
diff --git a/lib/base/src/main/java/com/blankj/lib/base/BaseApplication.java b/lib/base/src/main/java/com/blankj/lib/base/BaseApplication.java
index 1e0ddc0b27..5d2eba8260 100644
--- a/lib/base/src/main/java/com/blankj/lib/base/BaseApplication.java
+++ b/lib/base/src/main/java/com/blankj/lib/base/BaseApplication.java
@@ -2,7 +2,8 @@
import android.app.Application;
import android.content.Context;
-import android.support.multidex.MultiDex;
+
+import androidx.multidex.MultiDex;
import com.blankj.utilcode.util.AppUtils;
import com.blankj.utilcode.util.CrashUtils;
diff --git a/lib/base/src/main/java/com/blankj/lib/base/BaseDrawerActivity.java b/lib/base/src/main/java/com/blankj/lib/base/BaseDrawerActivity.java
index c7f7f1daea..ec3c895f6e 100755
--- a/lib/base/src/main/java/com/blankj/lib/base/BaseDrawerActivity.java
+++ b/lib/base/src/main/java/com/blankj/lib/base/BaseDrawerActivity.java
@@ -3,17 +3,18 @@
import android.annotation.SuppressLint;
import android.content.Intent;
import android.net.Uri;
-import android.support.annotation.LayoutRes;
-import android.support.annotation.NonNull;
-import android.support.annotation.StringRes;
-import android.support.design.widget.NavigationView;
-import android.support.v4.widget.DrawerLayout;
import android.view.LayoutInflater;
import android.view.MenuItem;
import android.widget.FrameLayout;
+import androidx.annotation.LayoutRes;
+import androidx.annotation.NonNull;
+import androidx.annotation.StringRes;
+import androidx.drawerlayout.widget.DrawerLayout;
+
import com.blankj.utilcode.util.ActivityUtils;
import com.blankj.utilcode.util.StringUtils;
+import com.google.android.material.navigation.NavigationView;
/**
diff --git a/lib/base/src/main/java/com/blankj/lib/base/BaseFragment.java b/lib/base/src/main/java/com/blankj/lib/base/BaseFragment.java
index 5667f3f02c..0e4e7ba5cc 100755
--- a/lib/base/src/main/java/com/blankj/lib/base/BaseFragment.java
+++ b/lib/base/src/main/java/com/blankj/lib/base/BaseFragment.java
@@ -4,17 +4,18 @@
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
-import android.support.annotation.IdRes;
-import android.support.annotation.LayoutRes;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.v4.app.Fragment;
-import android.support.v4.app.FragmentTransaction;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
+import androidx.annotation.IdRes;
+import androidx.annotation.LayoutRes;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentTransaction;
+
import com.blankj.utilcode.util.AntiShakeUtils;
/**
diff --git a/lib/base/src/main/java/com/blankj/lib/base/BaseTitleActivity.java b/lib/base/src/main/java/com/blankj/lib/base/BaseTitleActivity.java
index a40230420d..e0ed3ed10a 100644
--- a/lib/base/src/main/java/com/blankj/lib/base/BaseTitleActivity.java
+++ b/lib/base/src/main/java/com/blankj/lib/base/BaseTitleActivity.java
@@ -1,16 +1,17 @@
package com.blankj.lib.base;
import android.annotation.SuppressLint;
-import android.support.annotation.LayoutRes;
-import android.support.design.widget.CoordinatorLayout;
-import android.support.v7.app.ActionBar;
-import android.support.v7.widget.Toolbar;
import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewStub;
import android.widget.FrameLayout;
+import androidx.annotation.LayoutRes;
+import androidx.appcompat.app.ActionBar;
+import androidx.appcompat.widget.Toolbar;
+import androidx.coordinatorlayout.widget.CoordinatorLayout;
+
import com.blankj.utilcode.util.BarUtils;
import com.blankj.utilcode.util.ColorUtils;
diff --git a/lib/base/src/main/java/com/blankj/lib/base/IBaseView.java b/lib/base/src/main/java/com/blankj/lib/base/IBaseView.java
index 29e8553899..b0550f126c 100644
--- a/lib/base/src/main/java/com/blankj/lib/base/IBaseView.java
+++ b/lib/base/src/main/java/com/blankj/lib/base/IBaseView.java
@@ -1,10 +1,11 @@
package com.blankj.lib.base;
import android.os.Bundle;
-import android.support.annotation.LayoutRes;
-import android.support.annotation.Nullable;
import android.view.View;
+import androidx.annotation.LayoutRes;
+import androidx.annotation.Nullable;
+
/**
*
diff --git a/lib/base/src/main/java/com/blankj/lib/base/rv/BaseAdapter.java b/lib/base/src/main/java/com/blankj/lib/base/rv/BaseAdapter.java
index 11aa94e015..e69be6c6df 100644
--- a/lib/base/src/main/java/com/blankj/lib/base/rv/BaseAdapter.java
+++ b/lib/base/src/main/java/com/blankj/lib/base/rv/BaseAdapter.java
@@ -1,12 +1,13 @@
package com.blankj.lib.base.rv;
import android.content.Context;
-import android.support.annotation.NonNull;
-import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
+import androidx.annotation.NonNull;
+import androidx.recyclerview.widget.RecyclerView;
+
import java.util.List;
/**
diff --git a/lib/base/src/main/java/com/blankj/lib/base/rv/BaseCell.java b/lib/base/src/main/java/com/blankj/lib/base/rv/BaseCell.java
index cdf42c7882..332c4caee0 100644
--- a/lib/base/src/main/java/com/blankj/lib/base/rv/BaseCell.java
+++ b/lib/base/src/main/java/com/blankj/lib/base/rv/BaseCell.java
@@ -1,10 +1,11 @@
package com.blankj.lib.base.rv;
-import android.support.annotation.NonNull;
import android.util.SparseArray;
import android.util.SparseIntArray;
import android.view.View;
+import androidx.annotation.NonNull;
+
/**
*
* author: blankj
diff --git a/lib/base/src/main/java/com/blankj/lib/base/rv/BaseViewHolder.java b/lib/base/src/main/java/com/blankj/lib/base/rv/BaseViewHolder.java
index ceb1c46eac..0bd892f317 100644
--- a/lib/base/src/main/java/com/blankj/lib/base/rv/BaseViewHolder.java
+++ b/lib/base/src/main/java/com/blankj/lib/base/rv/BaseViewHolder.java
@@ -1,7 +1,7 @@
package com.blankj.lib.base.rv;
-import android.support.annotation.IdRes;
-import android.support.v7.widget.RecyclerView;
+import androidx.annotation.IdRes;
+import androidx.recyclerview.widget.RecyclerView;
import android.util.SparseArray;
import android.view.View;
diff --git a/lib/base/src/main/java/com/blankj/lib/base/rv/RecycleViewDivider.java b/lib/base/src/main/java/com/blankj/lib/base/rv/RecycleViewDivider.java
index 3d2b90f302..dd20894e10 100644
--- a/lib/base/src/main/java/com/blankj/lib/base/rv/RecycleViewDivider.java
+++ b/lib/base/src/main/java/com/blankj/lib/base/rv/RecycleViewDivider.java
@@ -5,11 +5,11 @@
import android.graphics.Canvas;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
-import android.support.annotation.DrawableRes;
-import android.support.annotation.NonNull;
-import android.support.v4.content.ContextCompat;
-import android.support.v4.view.ViewCompat;
-import android.support.v7.widget.RecyclerView;
+import androidx.annotation.DrawableRes;
+import androidx.annotation.NonNull;
+import androidx.core.content.ContextCompat;
+import androidx.core.view.ViewCompat;
+import androidx.recyclerview.widget.RecyclerView;
import android.view.View;
import android.widget.LinearLayout;
diff --git a/lib/base/src/main/res/layout/activity_base_title.xml b/lib/base/src/main/res/layout/activity_base_title.xml
index b11ecf7341..986d3669b6 100644
--- a/lib/base/src/main/res/layout/activity_base_title.xml
+++ b/lib/base/src/main/res/layout/activity_base_title.xml
@@ -1,24 +1,23 @@
-
-
-
-
+
-
+
diff --git a/lib/base/src/main/res/layout/activity_base_title_stub_scroll.xml b/lib/base/src/main/res/layout/activity_base_title_stub_scroll.xml
index 96f5e09d49..bd031cfb67 100644
--- a/lib/base/src/main/res/layout/activity_base_title_stub_scroll.xml
+++ b/lib/base/src/main/res/layout/activity_base_title_stub_scroll.xml
@@ -1,5 +1,5 @@
-
-
+
diff --git a/lib/base/src/main/res/layout/activity_drawer.xml b/lib/base/src/main/res/layout/activity_drawer.xml
index 72f70ed969..be44cd718c 100644
--- a/lib/base/src/main/res/layout/activity_drawer.xml
+++ b/lib/base/src/main/res/layout/activity_drawer.xml
@@ -1,5 +1,5 @@
-
-
-
+
diff --git a/subutil/app/build.gradle b/subutil/app/build.gradle
index a2e0172413..a7027c15ef 100644
--- a/subutil/app/build.gradle
+++ b/subutil/app/build.gradle
@@ -4,5 +4,5 @@ apply {
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
- implementation project(':subutil:pkg')
+ implementation gradle.ext.dep.subutil_pkg
}
\ No newline at end of file
diff --git a/subutil/lib/build.gradle b/subutil/lib/build.gradle
index 9dcbe0b542..f3140b4f0b 100644
--- a/subutil/lib/build.gradle
+++ b/subutil/lib/build.gradle
@@ -14,7 +14,7 @@ readme {
dependencies {
compileOnly gradle.ext.dep.support_appcompat_v7
- compileOnly gradle.ext.dep.support_design
+ compileOnly gradle.ext.dep.support_material
api(gradle.ext.dep.glide) {
exclude group: "com.android.support"
}
diff --git a/subutil/lib/src/main/java/com/blankj/subutil/util/LocationUtils.java b/subutil/lib/src/main/java/com/blankj/subutil/util/LocationUtils.java
index 7ee8747902..0c177b534c 100755
--- a/subutil/lib/src/main/java/com/blankj/subutil/util/LocationUtils.java
+++ b/subutil/lib/src/main/java/com/blankj/subutil/util/LocationUtils.java
@@ -11,7 +11,7 @@
import android.location.LocationProvider;
import android.os.Bundle;
import android.provider.Settings;
-import android.support.annotation.RequiresPermission;
+import androidx.annotation.RequiresPermission;
import android.util.Log;
import java.io.IOException;
diff --git a/subutil/lib/src/main/java/com/blankj/subutil/util/PinyinUtils.java b/subutil/lib/src/main/java/com/blankj/subutil/util/PinyinUtils.java
index 22486b3a91..934408c65e 100644
--- a/subutil/lib/src/main/java/com/blankj/subutil/util/PinyinUtils.java
+++ b/subutil/lib/src/main/java/com/blankj/subutil/util/PinyinUtils.java
@@ -1,6 +1,6 @@
package com.blankj.subutil.util;
-import android.support.v4.util.SimpleArrayMap;
+import androidx.collection.SimpleArrayMap;
/**
*
diff --git a/subutil/lib/src/main/java/com/blankj/subutil/util/Utils.java b/subutil/lib/src/main/java/com/blankj/subutil/util/Utils.java
index 9cbf4e06fd..91b336abcf 100644
--- a/subutil/lib/src/main/java/com/blankj/subutil/util/Utils.java
+++ b/subutil/lib/src/main/java/com/blankj/subutil/util/Utils.java
@@ -7,8 +7,8 @@
import android.content.Context;
import android.database.Cursor;
import android.net.Uri;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
import java.lang.reflect.InvocationTargetException;
diff --git a/subutil/lib/src/main/java/com/blankj/subutil/util/http/ExecutorFactory.java b/subutil/lib/src/main/java/com/blankj/subutil/util/http/ExecutorFactory.java
index f5583397d9..2f26fb9c24 100644
--- a/subutil/lib/src/main/java/com/blankj/subutil/util/http/ExecutorFactory.java
+++ b/subutil/lib/src/main/java/com/blankj/subutil/util/http/ExecutorFactory.java
@@ -2,7 +2,8 @@
import android.os.Handler;
import android.os.Looper;
-import android.support.annotation.NonNull;
+
+import androidx.annotation.NonNull;
import java.util.concurrent.Executor;
import java.util.concurrent.LinkedBlockingQueue;
diff --git a/subutil/lib/src/main/java/com/blankj/subutil/util/http/HttpUtils.java b/subutil/lib/src/main/java/com/blankj/subutil/util/http/HttpUtils.java
index b952f318cb..bdd4174486 100644
--- a/subutil/lib/src/main/java/com/blankj/subutil/util/http/HttpUtils.java
+++ b/subutil/lib/src/main/java/com/blankj/subutil/util/http/HttpUtils.java
@@ -1,7 +1,8 @@
package com.blankj.subutil.util.http;
import android.accounts.NetworkErrorException;
-import android.support.annotation.NonNull;
+
+import androidx.annotation.NonNull;
import java.io.BufferedOutputStream;
import java.io.ByteArrayOutputStream;
diff --git a/subutil/lib/src/main/java/com/blankj/subutil/util/http/Request.java b/subutil/lib/src/main/java/com/blankj/subutil/util/http/Request.java
index fe39b1299c..c6eddf9b96 100644
--- a/subutil/lib/src/main/java/com/blankj/subutil/util/http/Request.java
+++ b/subutil/lib/src/main/java/com/blankj/subutil/util/http/Request.java
@@ -1,6 +1,7 @@
package com.blankj.subutil.util.http;
-import android.support.annotation.NonNull;
+
+import androidx.annotation.NonNull;
import java.io.BufferedInputStream;
import java.io.ByteArrayInputStream;
diff --git a/subutil/lib/src/main/java/com/blankj/subutil/util/http/SSLConfig.java b/subutil/lib/src/main/java/com/blankj/subutil/util/http/SSLConfig.java
index b8624af490..0cf43662f2 100644
--- a/subutil/lib/src/main/java/com/blankj/subutil/util/http/SSLConfig.java
+++ b/subutil/lib/src/main/java/com/blankj/subutil/util/http/SSLConfig.java
@@ -2,7 +2,8 @@
import android.annotation.SuppressLint;
import android.os.Build;
-import android.support.annotation.NonNull;
+
+import androidx.annotation.NonNull;
import java.io.IOException;
import java.net.InetAddress;
diff --git a/subutil/pkg/build.gradle b/subutil/pkg/build.gradle
index 9fe360a5dd..881637b34a 100644
--- a/subutil/pkg/build.gradle
+++ b/subutil/pkg/build.gradle
@@ -4,5 +4,5 @@ apply {
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
- api project(':lib:base')
+ api gradle.ext.dep.lib_base
}
\ No newline at end of file
diff --git a/subutil/pkg/src/main/java/com/blankj/subutil/pkg/helper/DialogHelper.kt b/subutil/pkg/src/main/java/com/blankj/subutil/pkg/helper/DialogHelper.kt
index 45e67a4a0d..9eba25c622 100644
--- a/subutil/pkg/src/main/java/com/blankj/subutil/pkg/helper/DialogHelper.kt
+++ b/subutil/pkg/src/main/java/com/blankj/subutil/pkg/helper/DialogHelper.kt
@@ -1,6 +1,6 @@
package com.blankj.subutil.pkg.helper
-import android.support.v7.app.AlertDialog
+import androidx.appcompat.app.AlertDialog
import com.blankj.subutil.pkg.R
import com.blankj.utilcode.util.ActivityUtils
import com.blankj.utilcode.util.PermissionUtils
diff --git a/utilcode/README-CN.md b/utilcode/README-CN.md
index 445f206121..0bdb622940 100644
--- a/utilcode/README-CN.md
+++ b/utilcode/README-CN.md
@@ -5,7 +5,7 @@ Gradle:
implementation 'com.blankj:utilcode:1.24.0'
// if u use AndroidX, use the following
-implementation 'com.blankj:utilcodex:1.23.7'
+implementation 'com.blankj:utilcodex:1.24.0'
```
diff --git a/utilcode/README.md b/utilcode/README.md
index f449736061..5a6a295b4c 100644
--- a/utilcode/README.md
+++ b/utilcode/README.md
@@ -5,7 +5,7 @@ Gradle:
implementation 'com.blankj:utilcode:1.24.0'
// if u use AndroidX, use the following
-implementation 'com.blankj:utilcodex:1.23.7'
+implementation 'com.blankj:utilcodex:1.24.0'
```
diff --git a/utilcode/app/build.gradle b/utilcode/app/build.gradle
index 5616386892..ea5c172cd7 100644
--- a/utilcode/app/build.gradle
+++ b/utilcode/app/build.gradle
@@ -4,5 +4,5 @@ apply {
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
- implementation project(':utilcode:pkg')
+ implementation gradle.ext.dep.utilcode_pkg
}
\ No newline at end of file
diff --git a/utilcode/lib/build.gradle b/utilcode/lib/build.gradle
index e4dd3a6716..6d6c599298 100644
--- a/utilcode/lib/build.gradle
+++ b/utilcode/lib/build.gradle
@@ -18,7 +18,7 @@ dependencies {
compile gradle.ext.dep.gson
compileOnly gradle.ext.dep.support_appcompat_v7
- compileOnly gradle.ext.dep.support_design
+ compileOnly gradle.ext.dep.support_material
testImplementation gradle.ext.dep.junit
testImplementation gradle.ext.dep.robolectric
diff --git a/utilcode/lib/project.properties b/utilcode/lib/project.properties
index 22ae3b8603..d238eda740 100644
--- a/utilcode/lib/project.properties
+++ b/utilcode/lib/project.properties
@@ -1,9 +1,9 @@
#project
-project.name=UtilCode
+project.name=UtilCodeX
project.groupId=com.blankj
-project.artifactId=utilcode
+project.artifactId=utilcodex
project.packaging=aar
project.siteUrl=https://github.com/Blankj/AndroidUtilCode
project.gitUrl=https://github.com/Blankj/AndroidUtilCode.git
#javadoc
-javadoc.name=UtilCode
\ No newline at end of file
+javadoc.name=UtilCodeX
\ No newline at end of file
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/constant/MemoryConstants.java b/utilcode/lib/src/main/java/com/blankj/utilcode/constant/MemoryConstants.java
index b68bfcb113..5c05c0163e 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/constant/MemoryConstants.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/constant/MemoryConstants.java
@@ -1,6 +1,6 @@
package com.blankj.utilcode.constant;
-import android.support.annotation.IntDef;
+import androidx.annotation.IntDef;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/constant/PermissionConstants.java b/utilcode/lib/src/main/java/com/blankj/utilcode/constant/PermissionConstants.java
index 76f7e9a217..6db826e4ab 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/constant/PermissionConstants.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/constant/PermissionConstants.java
@@ -4,7 +4,7 @@
import android.Manifest.permission;
import android.annotation.SuppressLint;
import android.os.Build;
-import android.support.annotation.StringDef;
+import androidx.annotation.StringDef;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/constant/TimeConstants.java b/utilcode/lib/src/main/java/com/blankj/utilcode/constant/TimeConstants.java
index 9932037bf8..45090576e3 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/constant/TimeConstants.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/constant/TimeConstants.java
@@ -1,6 +1,6 @@
package com.blankj.utilcode.constant;
-import android.support.annotation.IntDef;
+import androidx.annotation.IntDef;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/ActivityUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/ActivityUtils.java
index d6a671e4fe..de1bfeb005 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/ActivityUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/ActivityUtils.java
@@ -10,14 +10,15 @@
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.os.Bundle;
-import android.support.annotation.AnimRes;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.v4.app.ActivityOptionsCompat;
-import android.support.v4.util.Pair;
import android.util.Log;
import android.view.View;
+import androidx.annotation.AnimRes;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.core.app.ActivityOptionsCompat;
+import androidx.core.util.Pair;
+
import java.util.List;
/**
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/AntiShakeUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/AntiShakeUtils.java
index 7e87e73474..ca9036225e 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/AntiShakeUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/AntiShakeUtils.java
@@ -1,9 +1,10 @@
package com.blankj.utilcode.util;
-import android.support.annotation.IntRange;
-import android.support.annotation.NonNull;
import android.view.View;
+import androidx.annotation.IntRange;
+import androidx.annotation.NonNull;
+
/**
*
* author: blankj
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/AppUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/AppUtils.java
index a9368be59f..5a9194ce66 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/AppUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/AppUtils.java
@@ -17,8 +17,6 @@
import android.net.Uri;
import android.os.Build;
import android.provider.Settings;
-import android.support.annotation.NonNull;
-import android.support.v4.content.FileProvider;
import android.util.Log;
import java.io.File;
@@ -27,6 +25,9 @@
import java.util.ArrayList;
import java.util.List;
+import androidx.annotation.NonNull;
+import androidx.core.content.FileProvider;
+
/**
*
* author: Blankj
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/BarUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/BarUtils.java
index 7b5509b2b5..22178a5c20 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/BarUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/BarUtils.java
@@ -8,11 +8,6 @@
import android.graphics.Color;
import android.graphics.Point;
import android.os.Build;
-import android.support.annotation.ColorInt;
-import android.support.annotation.NonNull;
-import android.support.annotation.RequiresApi;
-import android.support.annotation.RequiresPermission;
-import android.support.v4.widget.DrawerLayout;
import android.util.Log;
import android.util.TypedValue;
import android.view.Display;
@@ -27,6 +22,12 @@
import java.lang.reflect.Method;
+import androidx.annotation.ColorInt;
+import androidx.annotation.NonNull;
+import androidx.annotation.RequiresApi;
+import androidx.annotation.RequiresPermission;
+import androidx.drawerlayout.widget.DrawerLayout;
+
import static android.Manifest.permission.EXPAND_STATUS_BAR;
/**
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/BrightnessUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/BrightnessUtils.java
index f9344b0a59..bacc519540 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/BrightnessUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/BrightnessUtils.java
@@ -2,11 +2,12 @@
import android.content.ContentResolver;
import android.provider.Settings;
-import android.support.annotation.IntRange;
-import android.support.annotation.NonNull;
import android.view.Window;
import android.view.WindowManager;
+import androidx.annotation.IntRange;
+import androidx.annotation.NonNull;
+
/**
*
* author: Blankj
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/BusUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/BusUtils.java
index f04202043e..d272c99b98 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/BusUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/BusUtils.java
@@ -16,11 +16,12 @@
import android.os.Message;
import android.os.Messenger;
import android.os.RemoteException;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
import android.text.TextUtils;
import android.util.Log;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/CacheDiskStaticUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/CacheDiskStaticUtils.java
index bb48a4b5cf..c5a9a17a6d 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/CacheDiskStaticUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/CacheDiskStaticUtils.java
@@ -3,13 +3,14 @@
import android.graphics.Bitmap;
import android.graphics.drawable.Drawable;
import android.os.Parcelable;
-import android.support.annotation.NonNull;
import org.json.JSONArray;
import org.json.JSONObject;
import java.io.Serializable;
+import androidx.annotation.NonNull;
+
/**
*
* author: Blankj
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/CacheDiskUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/CacheDiskUtils.java
index 67e6b3fb0e..a8ae8afa5b 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/CacheDiskUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/CacheDiskUtils.java
@@ -8,9 +8,10 @@
import android.graphics.drawable.Drawable;
import android.os.Parcel;
import android.os.Parcelable;
-import android.support.annotation.NonNull;
import android.util.Log;
+import androidx.annotation.NonNull;
+
import com.blankj.utilcode.constant.CacheConstants;
import org.json.JSONArray;
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/CacheDoubleStaticUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/CacheDoubleStaticUtils.java
index 2ef267bd01..6dbb9f7475 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/CacheDoubleStaticUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/CacheDoubleStaticUtils.java
@@ -3,13 +3,14 @@
import android.graphics.Bitmap;
import android.graphics.drawable.Drawable;
import android.os.Parcelable;
-import android.support.annotation.NonNull;
import org.json.JSONArray;
import org.json.JSONObject;
import java.io.Serializable;
+import androidx.annotation.NonNull;
+
/**
*
* author: Blankj
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/CacheDoubleUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/CacheDoubleUtils.java
index c800423c78..aca1c25837 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/CacheDoubleUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/CacheDoubleUtils.java
@@ -3,7 +3,7 @@
import android.graphics.Bitmap;
import android.graphics.drawable.Drawable;
import android.os.Parcelable;
-import android.support.annotation.NonNull;
+import androidx.annotation.NonNull;
import com.blankj.utilcode.constant.CacheConstants;
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/CacheMemoryStaticUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/CacheMemoryStaticUtils.java
index 56abfba117..aedcfa7fc4 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/CacheMemoryStaticUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/CacheMemoryStaticUtils.java
@@ -1,6 +1,6 @@
package com.blankj.utilcode.util;
-import android.support.annotation.NonNull;
+import androidx.annotation.NonNull;
/**
*
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/CacheMemoryUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/CacheMemoryUtils.java
index d0e06e394d..ddaa2baed9 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/CacheMemoryUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/CacheMemoryUtils.java
@@ -1,7 +1,7 @@
package com.blankj.utilcode.util;
-import android.support.annotation.NonNull;
-import android.support.v4.util.LruCache;
+import androidx.annotation.NonNull;
+import androidx.collection.LruCache;
import com.blankj.utilcode.constant.CacheConstants;
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/ColorUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/ColorUtils.java
index 4c0c22232b..a6603cfc44 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/ColorUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/ColorUtils.java
@@ -1,12 +1,12 @@
package com.blankj.utilcode.util;
import android.graphics.Color;
-import android.support.annotation.ColorInt;
-import android.support.annotation.ColorRes;
-import android.support.annotation.FloatRange;
-import android.support.annotation.IntRange;
-import android.support.annotation.NonNull;
-import android.support.v4.content.ContextCompat;
+import androidx.annotation.ColorInt;
+import androidx.annotation.ColorRes;
+import androidx.annotation.FloatRange;
+import androidx.annotation.IntRange;
+import androidx.annotation.NonNull;
+import androidx.core.content.ContextCompat;
/**
*
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/CrashUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/CrashUtils.java
index 18b5f814a3..081dd09761 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/CrashUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/CrashUtils.java
@@ -5,8 +5,8 @@
import android.content.pm.PackageManager;
import android.os.Build;
import android.os.Environment;
-import android.support.annotation.NonNull;
-import android.support.annotation.RequiresPermission;
+import androidx.annotation.NonNull;
+import androidx.annotation.RequiresPermission;
import android.util.Log;
import java.io.BufferedWriter;
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/DeviceUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/DeviceUtils.java
index e6b1910cfc..c641c9bdae 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/DeviceUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/DeviceUtils.java
@@ -11,11 +11,12 @@
import android.os.Debug;
import android.os.PowerManager;
import android.provider.Settings;
-import android.support.annotation.RequiresApi;
-import android.support.annotation.RequiresPermission;
import android.telephony.TelephonyManager;
import android.text.TextUtils;
+import androidx.annotation.RequiresApi;
+import androidx.annotation.RequiresPermission;
+
import java.io.File;
import java.net.InetAddress;
import java.net.NetworkInterface;
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/FragmentUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/FragmentUtils.java
index 43b8537e75..9e8ae14ef1 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/FragmentUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/FragmentUtils.java
@@ -3,16 +3,6 @@
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.os.Bundle;
-import android.support.annotation.AnimRes;
-import android.support.annotation.AnimatorRes;
-import android.support.annotation.ColorInt;
-import android.support.annotation.DrawableRes;
-import android.support.annotation.IdRes;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.v4.app.Fragment;
-import android.support.v4.app.FragmentManager;
-import android.support.v4.app.FragmentTransaction;
import android.util.Log;
import android.view.View;
@@ -20,6 +10,17 @@
import java.util.Collections;
import java.util.List;
+import androidx.annotation.AnimRes;
+import androidx.annotation.AnimatorRes;
+import androidx.annotation.ColorInt;
+import androidx.annotation.DrawableRes;
+import androidx.annotation.IdRes;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentManager;
+import androidx.fragment.app.FragmentTransaction;
+
/**
*
* author: Blankj
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/ImageUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/ImageUtils.java
index 83e01eb1ad..cbee7dd4bd 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/ImageUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/ImageUtils.java
@@ -27,13 +27,13 @@
import android.renderscript.Element;
import android.renderscript.RenderScript;
import android.renderscript.ScriptIntrinsicBlur;
-import android.support.annotation.ColorInt;
-import android.support.annotation.DrawableRes;
-import android.support.annotation.FloatRange;
-import android.support.annotation.IntRange;
-import android.support.annotation.NonNull;
-import android.support.annotation.RequiresApi;
-import android.support.v4.content.ContextCompat;
+import androidx.annotation.ColorInt;
+import androidx.annotation.DrawableRes;
+import androidx.annotation.FloatRange;
+import androidx.annotation.IntRange;
+import androidx.annotation.NonNull;
+import androidx.annotation.RequiresApi;
+import androidx.core.content.ContextCompat;
import android.view.View;
import java.io.BufferedOutputStream;
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/IntentUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/IntentUtils.java
index 6faa37d043..1e26dc8a9a 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/IntentUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/IntentUtils.java
@@ -8,8 +8,8 @@
import android.os.Bundle;
import android.provider.MediaStore;
import android.provider.Settings;
-import android.support.annotation.RequiresPermission;
-import android.support.v4.content.FileProvider;
+import androidx.annotation.RequiresPermission;
+import androidx.core.content.FileProvider;
import java.io.File;
import java.util.ArrayList;
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/KeyboardUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/KeyboardUtils.java
index cfa568fa7c..de3eb285cc 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/KeyboardUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/KeyboardUtils.java
@@ -7,7 +7,6 @@
import android.os.Bundle;
import android.os.Handler;
import android.os.ResultReceiver;
-import android.support.annotation.NonNull;
import android.util.Log;
import android.view.View;
import android.view.ViewTreeObserver.OnGlobalLayoutListener;
@@ -16,6 +15,8 @@
import android.view.inputmethod.InputMethodManager;
import android.widget.FrameLayout;
+import androidx.annotation.NonNull;
+
import java.lang.reflect.Field;
/**
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/LogUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/LogUtils.java
index 1372ecd40b..9a7e11cbf5 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/LogUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/LogUtils.java
@@ -10,10 +10,10 @@
import android.os.Build;
import android.os.Bundle;
import android.os.Environment;
-import android.support.annotation.IntDef;
-import android.support.annotation.IntRange;
-import android.support.annotation.RequiresApi;
-import android.support.v4.util.SimpleArrayMap;
+import androidx.annotation.IntDef;
+import androidx.annotation.IntRange;
+import androidx.annotation.RequiresApi;
+import androidx.collection.SimpleArrayMap;
import android.util.Log;
import com.google.gson.Gson;
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/MetaDataUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/MetaDataUtils.java
index 6f6cf85b80..bd4b8da935 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/MetaDataUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/MetaDataUtils.java
@@ -8,7 +8,7 @@
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.content.pm.ServiceInfo;
-import android.support.annotation.NonNull;
+import androidx.annotation.NonNull;
/**
*
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/NetworkUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/NetworkUtils.java
index d59eb28240..24a05a26b7 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/NetworkUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/NetworkUtils.java
@@ -7,13 +7,14 @@
import android.net.NetworkInfo;
import android.net.wifi.WifiManager;
import android.os.Build;
-import android.support.annotation.NonNull;
-import android.support.annotation.RequiresPermission;
import android.telephony.TelephonyManager;
import android.text.TextUtils;
import android.text.format.Formatter;
import android.util.Log;
+import androidx.annotation.NonNull;
+import androidx.annotation.RequiresPermission;
+
import java.lang.reflect.Method;
import java.net.InetAddress;
import java.net.InterfaceAddress;
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/NotificationUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/NotificationUtils.java
index b8163d2e66..73a900b465 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/NotificationUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/NotificationUtils.java
@@ -5,9 +5,9 @@
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
-import android.support.annotation.Nullable;
-import android.support.v4.app.NotificationCompat;
-import android.support.v4.app.NotificationManagerCompat;
+import androidx.annotation.Nullable;
+import androidx.core.app.NotificationCompat;
+import androidx.core.app.NotificationManagerCompat;
/**
*
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/ObjectUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/ObjectUtils.java
index be5491ece0..3c0c087a39 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/ObjectUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/ObjectUtils.java
@@ -1,9 +1,9 @@
package com.blankj.utilcode.util;
import android.os.Build;
-import android.support.annotation.RequiresApi;
-import android.support.v4.util.LongSparseArray;
-import android.support.v4.util.SimpleArrayMap;
+import androidx.annotation.RequiresApi;
+import androidx.collection.LongSparseArray;
+import androidx.collection.SimpleArrayMap;
import android.util.SparseArray;
import android.util.SparseBooleanArray;
import android.util.SparseIntArray;
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/PermissionUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/PermissionUtils.java
index d35cbcc620..602efcb5db 100755
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/PermissionUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/PermissionUtils.java
@@ -9,10 +9,10 @@
import android.os.Build;
import android.os.Bundle;
import android.provider.Settings;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.annotation.RequiresApi;
-import android.support.v4.content.ContextCompat;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.RequiresApi;
+import androidx.core.content.ContextCompat;
import android.util.Log;
import android.view.MotionEvent;
import android.view.WindowManager;
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/PhoneUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/PhoneUtils.java
index 99068781a4..f407f81b5f 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/PhoneUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/PhoneUtils.java
@@ -7,7 +7,7 @@
import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.Build;
-import android.support.annotation.RequiresPermission;
+import androidx.annotation.RequiresPermission;
import android.telephony.SmsManager;
import android.telephony.TelephonyManager;
import android.text.TextUtils;
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/ProcessUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/ProcessUtils.java
index adcd265f72..619b175549 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/ProcessUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/ProcessUtils.java
@@ -10,8 +10,8 @@
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.provider.Settings;
-import android.support.annotation.NonNull;
-import android.support.annotation.RequiresPermission;
+import androidx.annotation.NonNull;
+import androidx.annotation.RequiresPermission;
import android.util.Log;
import java.util.Arrays;
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/RegexUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/RegexUtils.java
index ba57fab956..817a94149f 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/RegexUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/RegexUtils.java
@@ -1,6 +1,6 @@
package com.blankj.utilcode.util;
-import android.support.v4.util.SimpleArrayMap;
+import androidx.collection.SimpleArrayMap;
import com.blankj.utilcode.constant.RegexConstants;
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/ResourceUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/ResourceUtils.java
index 81d10f08cf..3fb515c06b 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/ResourceUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/ResourceUtils.java
@@ -1,6 +1,6 @@
package com.blankj.utilcode.util;
-import android.support.annotation.RawRes;
+import androidx.annotation.RawRes;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/SPStaticUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/SPStaticUtils.java
index d3e21fb873..21274c3023 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/SPStaticUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/SPStaticUtils.java
@@ -1,7 +1,7 @@
package com.blankj.utilcode.util;
import android.content.SharedPreferences;
-import android.support.annotation.NonNull;
+import androidx.annotation.NonNull;
import java.util.Map;
import java.util.Set;
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/SPUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/SPUtils.java
index 554a2ed586..a9d18a1a55 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/SPUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/SPUtils.java
@@ -3,7 +3,7 @@
import android.annotation.SuppressLint;
import android.content.Context;
import android.content.SharedPreferences;
-import android.support.annotation.NonNull;
+import androidx.annotation.NonNull;
import java.util.Collections;
import java.util.HashMap;
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/ScreenUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/ScreenUtils.java
index 7390fceed0..3245eb115c 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/ScreenUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/ScreenUtils.java
@@ -10,8 +10,8 @@
import android.graphics.Point;
import android.os.Build;
import android.provider.Settings;
-import android.support.annotation.NonNull;
-import android.support.annotation.RequiresPermission;
+import androidx.annotation.NonNull;
+import androidx.annotation.RequiresPermission;
import android.util.DisplayMetrics;
import android.view.Surface;
import android.view.View;
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/ShellUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/ShellUtils.java
index b7ad2fa9d2..fc10a601ae 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/ShellUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/ShellUtils.java
@@ -1,6 +1,6 @@
package com.blankj.utilcode.util;
-import android.support.annotation.NonNull;
+import androidx.annotation.NonNull;
import java.io.BufferedReader;
import java.io.DataOutputStream;
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/SnackbarUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/SnackbarUtils.java
index b164e6154e..eab1990d29 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/SnackbarUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/SnackbarUtils.java
@@ -1,12 +1,12 @@
package com.blankj.utilcode.util;
-import android.support.annotation.ColorInt;
-import android.support.annotation.DrawableRes;
-import android.support.annotation.IntDef;
-import android.support.annotation.IntRange;
-import android.support.annotation.LayoutRes;
-import android.support.annotation.NonNull;
-import android.support.design.widget.Snackbar;
+import androidx.annotation.ColorInt;
+import androidx.annotation.DrawableRes;
+import androidx.annotation.IntDef;
+import androidx.annotation.IntRange;
+import androidx.annotation.LayoutRes;
+import androidx.annotation.NonNull;
+import com.google.android.material.snackbar.Snackbar;
import android.text.SpannableString;
import android.text.Spanned;
import android.text.style.ForegroundColorSpan;
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/SpanUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/SpanUtils.java
index b8d9d53aed..4d49451ec0 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/SpanUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/SpanUtils.java
@@ -14,14 +14,14 @@
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.net.Uri;
-import android.support.annotation.ColorInt;
-import android.support.annotation.DrawableRes;
-import android.support.annotation.FloatRange;
-import android.support.annotation.IntDef;
-import android.support.annotation.IntRange;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.v4.content.ContextCompat;
+import androidx.annotation.ColorInt;
+import androidx.annotation.DrawableRes;
+import androidx.annotation.FloatRange;
+import androidx.annotation.IntDef;
+import androidx.annotation.IntRange;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.core.content.ContextCompat;
import android.text.Layout;
import android.text.Layout.Alignment;
import android.text.SpannableStringBuilder;
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/StringUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/StringUtils.java
index c3254e3d32..70f0defe50 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/StringUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/StringUtils.java
@@ -1,8 +1,8 @@
package com.blankj.utilcode.util;
import android.content.res.Resources;
-import android.support.annotation.ArrayRes;
-import android.support.annotation.StringRes;
+import androidx.annotation.ArrayRes;
+import androidx.annotation.StringRes;
/**
*
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/ThreadUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/ThreadUtils.java
index 0545a27fa0..19de94ca33 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/ThreadUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/ThreadUtils.java
@@ -2,10 +2,11 @@
import android.os.Handler;
import android.os.Looper;
-import android.support.annotation.IntRange;
-import android.support.annotation.NonNull;
import android.util.Log;
+import androidx.annotation.IntRange;
+import androidx.annotation.NonNull;
+
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.Executor;
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/TimeUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/TimeUtils.java
index adaa920474..a5286b0fbe 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/TimeUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/TimeUtils.java
@@ -1,6 +1,6 @@
package com.blankj.utilcode.util;
-import android.support.annotation.NonNull;
+import androidx.annotation.NonNull;
import com.blankj.utilcode.constant.TimeConstants;
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/ToastUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/ToastUtils.java
index 150425cdba..0dd47cfa3e 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/ToastUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/ToastUtils.java
@@ -12,11 +12,11 @@
import android.os.Build;
import android.os.Handler;
import android.os.Message;
-import android.support.annotation.ColorInt;
-import android.support.annotation.DrawableRes;
-import android.support.annotation.LayoutRes;
-import android.support.annotation.StringRes;
-import android.support.v4.app.NotificationManagerCompat;
+import androidx.annotation.ColorInt;
+import androidx.annotation.DrawableRes;
+import androidx.annotation.LayoutRes;
+import androidx.annotation.StringRes;
+import androidx.core.app.NotificationManagerCompat;
import android.util.Log;
import android.view.Gravity;
import android.view.LayoutInflater;
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/UriUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/UriUtils.java
index 9ad408912a..20fdc39b81 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/UriUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/UriUtils.java
@@ -8,12 +8,14 @@
import android.os.Environment;
import android.provider.DocumentsContract;
import android.provider.MediaStore;
-import android.support.annotation.NonNull;
-import android.support.v4.content.FileProvider;
+import android.text.TextUtils;
import android.util.Log;
import java.io.File;
+import androidx.annotation.NonNull;
+import androidx.core.content.FileProvider;
+
/**
*
* author: Blankj
@@ -75,12 +77,19 @@ public static File uri2File(@NonNull final Uri uri) {
Log.d("UriUtils", uri.toString() + " parse failed. -> 1");
return null;
} else if ("com.android.providers.downloads.documents".equals(authority)) {
- final String id = DocumentsContract.getDocumentId(uri);
- final Uri contentUri = ContentUris.withAppendedId(
- Uri.parse("content://downloads/public_downloads"),
- Long.valueOf(id)
- );
- return getFileFromUri(contentUri, 2);
+ String id = DocumentsContract.getDocumentId(uri);
+ if (!TextUtils.isEmpty(id)) {
+ if (id.startsWith("raw:")) {
+ return new File(id.substring(4));
+ }
+ final Uri contentUri = ContentUris.withAppendedId(
+ Uri.parse(Environment.DIRECTORY_DOWNLOADS),
+ Long.valueOf(id)
+ );
+ return getFileFromUri(contentUri, 2);
+ }
+ Log.d("UriUtils", uri.toString() + " parse failed. -> 3");
+ return null;
} else if ("com.android.providers.media.documents".equals(authority)) {
final String docId = DocumentsContract.getDocumentId(uri);
final String[] split = docId.split(":");
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/Utils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/Utils.java
index d0c98afc96..1992a2c902 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/Utils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/Utils.java
@@ -13,13 +13,14 @@
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
-import android.support.v4.content.FileProvider;
import android.text.TextUtils;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.View;
import android.view.inputmethod.InputMethodManager;
+import androidx.core.content.FileProvider;
+
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/VibrateUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/VibrateUtils.java
index a57bbb8241..622d657817 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/VibrateUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/VibrateUtils.java
@@ -2,7 +2,7 @@
import android.content.Context;
import android.os.Vibrator;
-import android.support.annotation.RequiresPermission;
+import androidx.annotation.RequiresPermission;
import static android.Manifest.permission.VIBRATE;
diff --git a/utilcode/lib/src/test/java/com/blankj/utilcode/util/BaseTest.java b/utilcode/lib/src/test/java/com/blankj/utilcode/util/BaseTest.java
index 85bc9d8ac2..2dadedff8c 100644
--- a/utilcode/lib/src/test/java/com/blankj/utilcode/util/BaseTest.java
+++ b/utilcode/lib/src/test/java/com/blankj/utilcode/util/BaseTest.java
@@ -1,8 +1,5 @@
package com.blankj.utilcode.util;
-
-import android.support.annotation.NonNull;
-
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.RobolectricTestRunner;
@@ -29,7 +26,7 @@ public BaseTest() {
ShadowLog.stream = System.out;
ThreadUtils.setDeliver(new Executor() {
@Override
- public void execute(@NonNull Runnable command) {
+ public void execute(Runnable command) {
command.run();
}
});
@@ -201,8 +198,8 @@ public void onFail(Throwable t) {
static class Person implements Comparable {
String name;
- int age;
- int time;
+ int age;
+ int time;
public Person(String name) {
this.name = name;
@@ -220,7 +217,7 @@ public String toString() {
}
@Override
- public int compareTo(@NonNull Person o) {
+ public int compareTo(Person o) {
int res = o.age - age;
if (res != 0) {
return res;
diff --git a/utilcode/lib/src/test/java/com/blankj/utilcode/util/ObjectUtilsTest.java b/utilcode/lib/src/test/java/com/blankj/utilcode/util/ObjectUtilsTest.java
index a0203f78fc..ed12c24d8d 100644
--- a/utilcode/lib/src/test/java/com/blankj/utilcode/util/ObjectUtilsTest.java
+++ b/utilcode/lib/src/test/java/com/blankj/utilcode/util/ObjectUtilsTest.java
@@ -1,7 +1,5 @@
package com.blankj.utilcode.util;
-import android.support.v4.util.LongSparseArray;
-import android.support.v4.util.SimpleArrayMap;
import android.util.SparseArray;
import android.util.SparseBooleanArray;
import android.util.SparseIntArray;
@@ -12,6 +10,9 @@
import java.util.HashMap;
import java.util.LinkedList;
+import androidx.collection.LongSparseArray;
+import androidx.collection.SimpleArrayMap;
+
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
diff --git a/utilcode/pkg/build.gradle b/utilcode/pkg/build.gradle
index 9fe360a5dd..881637b34a 100644
--- a/utilcode/pkg/build.gradle
+++ b/utilcode/pkg/build.gradle
@@ -4,5 +4,5 @@ apply {
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
- api project(':lib:base')
+ api gradle.ext.dep.lib_base
}
\ No newline at end of file
diff --git a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/activity/ActivityActivity.kt b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/activity/ActivityActivity.kt
index e784f98401..9982c948b7 100644
--- a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/activity/ActivityActivity.kt
+++ b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/activity/ActivityActivity.kt
@@ -6,7 +6,7 @@ import android.graphics.Bitmap
import android.graphics.drawable.BitmapDrawable
import android.os.Build
import android.os.Bundle
-import android.support.v4.app.ActivityOptionsCompat
+import androidx.core.app.ActivityOptionsCompat
import android.view.View
import android.view.Window
import com.blankj.lib.base.BaseTitleActivity
diff --git a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/activity/SubActivityActivity.kt b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/activity/SubActivityActivity.kt
index 0c63773639..abf0151bbc 100644
--- a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/activity/SubActivityActivity.kt
+++ b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/activity/SubActivityActivity.kt
@@ -2,7 +2,7 @@ package com.blankj.utilcode.pkg.feature.activity
import android.os.Build
import android.os.Bundle
-import android.support.v4.app.ActivityCompat
+import androidx.core.app.ActivityCompat
import android.view.View
import android.view.Window
import com.blankj.lib.base.BaseTitleActivity
diff --git a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/bar/BarStatusFragmentActivity.kt b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/bar/BarStatusFragmentActivity.kt
index d4f0d60530..fc8020b3e5 100644
--- a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/bar/BarStatusFragmentActivity.kt
+++ b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/bar/BarStatusFragmentActivity.kt
@@ -3,10 +3,10 @@ package com.blankj.utilcode.pkg.feature.bar
import android.content.Context
import android.content.Intent
import android.os.Bundle
-import android.support.design.widget.BottomNavigationView
-import android.support.v4.app.Fragment
-import android.support.v4.app.FragmentPagerAdapter
-import android.support.v4.view.ViewPager
+import com.google.android.material.bottomnavigation.BottomNavigationView
+import androidx.fragment.app.Fragment
+import androidx.fragment.app.FragmentPagerAdapter
+import androidx.viewpager.widget.ViewPager
import android.view.View
import com.blankj.lib.base.BaseActivity
import com.blankj.utilcode.pkg.R
@@ -37,7 +37,7 @@ class BarStatusFragmentActivity : BaseActivity() {
R.id.barStatusFragmentNavigationCustom
)
- private val mFragmentList = ArrayList()
+ private val mFragmentList = ArrayList()
private val mOnNavigationItemSelectedListener = BottomNavigationView.OnNavigationItemSelectedListener l@{ item ->
when (item.itemId) {
@@ -78,8 +78,8 @@ class BarStatusFragmentActivity : BaseActivity() {
mFragmentList.add(BarStatusCustomFragment.newInstance())
barStatusFragmentVp.offscreenPageLimit = 3
- barStatusFragmentVp.adapter = object : FragmentPagerAdapter(supportFragmentManager) {
- override fun getItem(position: Int): Fragment {
+ barStatusFragmentVp.adapter = object : androidx.fragment.app.FragmentPagerAdapter(supportFragmentManager) {
+ override fun getItem(position: Int): androidx.fragment.app.Fragment {
return mFragmentList[position]
}
@@ -88,7 +88,7 @@ class BarStatusFragmentActivity : BaseActivity() {
}
}
- barStatusFragmentVp.addOnPageChangeListener(object : ViewPager.OnPageChangeListener {
+ barStatusFragmentVp.addOnPageChangeListener(object : androidx.viewpager.widget.ViewPager.OnPageChangeListener {
override fun onPageScrolled(position: Int, positionOffset: Float, positionOffsetPixels: Int) {}
override fun onPageSelected(position: Int) {
diff --git a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/fragment/ContainerFragment.kt b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/fragment/ContainerFragment.kt
index ada9dd0d10..86972c449d 100644
--- a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/fragment/ContainerFragment.kt
+++ b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/fragment/ContainerFragment.kt
@@ -2,8 +2,8 @@ package com.blankj.utilcode.pkg.feature.fragment
import android.os.Build
import android.os.Bundle
-import android.support.annotation.RequiresApi
-import android.support.v4.app.Fragment
+import androidx.annotation.RequiresApi
+import androidx.fragment.app.Fragment
import android.transition.*
import android.view.View
import com.blankj.lib.base.BaseLazyFragment
@@ -128,7 +128,7 @@ class ContainerFragment : BaseLazyFragment(), FragmentUtils.OnBackClickListener
}
}
- private fun addSharedElement(fragment: Fragment): Fragment {
+ private fun addSharedElement(fragment: androidx.fragment.app.Fragment): androidx.fragment.app.Fragment {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
fragment.sharedElementEnterTransition = DetailTransition()
fragment.enterTransition = Fade()
diff --git a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/fragment/FragmentActivity.kt b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/fragment/FragmentActivity.kt
index 446271b366..b18a2e236b 100644
--- a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/fragment/FragmentActivity.kt
+++ b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/fragment/FragmentActivity.kt
@@ -4,8 +4,8 @@ import android.content.Context
import android.content.Intent
import android.os.Bundle
import android.os.PersistableBundle
-import android.support.design.widget.BottomNavigationView
-import android.support.v4.app.Fragment
+import com.google.android.material.bottomnavigation.BottomNavigationView
+import androidx.fragment.app.Fragment
import android.view.View
import com.blankj.lib.base.BaseActivity
import com.blankj.utilcode.pkg.R
@@ -29,7 +29,7 @@ class FragmentActivity : BaseActivity() {
}
}
- private val mFragments = arrayListOf()
+ private val mFragments = arrayListOf()
private var curIndex: Int = 0
private val mOnNavigationItemSelectedListener = BottomNavigationView.OnNavigationItemSelectedListener { item ->
diff --git a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/image/ImageActivity.kt b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/image/ImageActivity.kt
index 0e092e0062..2c6656f220 100644
--- a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/image/ImageActivity.kt
+++ b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/image/ImageActivity.kt
@@ -6,12 +6,12 @@ import android.graphics.Bitmap
import android.graphics.Color
import android.os.Build
import android.os.Bundle
-import android.support.annotation.StringRes
-import android.support.v7.widget.LinearLayoutManager
import android.view.View
import android.widget.Button
import android.widget.ImageView
import android.widget.TextView
+import androidx.annotation.StringRes
+import androidx.recyclerview.widget.LinearLayoutManager
import com.blankj.lib.base.BaseTaskActivity
import com.blankj.lib.base.rv.BaseAdapter
import com.blankj.lib.base.rv.BaseCell
diff --git a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/snackbar/SnackbarActivity.kt b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/snackbar/SnackbarActivity.kt
index a0ea36d528..cd1c1b0d99 100644
--- a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/snackbar/SnackbarActivity.kt
+++ b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/snackbar/SnackbarActivity.kt
@@ -4,7 +4,7 @@ import android.content.Context
import android.content.Intent
import android.graphics.Color
import android.os.Bundle
-import android.support.annotation.StringRes
+import androidx.annotation.StringRes
import android.text.SpannableStringBuilder
import android.view.View
import android.view.ViewGroup
diff --git a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/span/SpanActivity.kt b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/span/SpanActivity.kt
index d84ced168c..202069ed61 100644
--- a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/span/SpanActivity.kt
+++ b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/span/SpanActivity.kt
@@ -5,7 +5,7 @@ import android.content.Context
import android.content.Intent
import android.graphics.*
import android.os.Bundle
-import android.support.annotation.ColorInt
+import androidx.annotation.ColorInt
import android.text.Layout
import android.text.SpannableStringBuilder
import android.text.TextPaint
diff --git a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/toast/CustomToast.kt b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/toast/CustomToast.kt
index 314ba33d59..458ecbb3fb 100644
--- a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/toast/CustomToast.kt
+++ b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/toast/CustomToast.kt
@@ -2,7 +2,7 @@ package com.blankj.utilcode.pkg.feature.toast
import android.os.Handler
import android.os.Looper
-import android.support.annotation.StringRes
+import androidx.annotation.StringRes
import android.widget.TextView
import android.widget.Toast
diff --git a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/toast/ToastActivity.kt b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/toast/ToastActivity.kt
index 51c9e53774..47f91e826e 100644
--- a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/toast/ToastActivity.kt
+++ b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/toast/ToastActivity.kt
@@ -4,7 +4,7 @@ import android.content.Context
import android.content.Intent
import android.graphics.Color
import android.os.Bundle
-import android.support.v4.content.ContextCompat
+import androidx.core.content.ContextCompat
import android.view.Gravity
import android.view.View
import com.blankj.lib.base.BaseTitleActivity
diff --git a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/helper/DialogHelper.kt b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/helper/DialogHelper.kt
index 344a69e448..a495a13013 100644
--- a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/helper/DialogHelper.kt
+++ b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/helper/DialogHelper.kt
@@ -3,7 +3,6 @@ package com.blankj.utilcode.pkg.helper
import android.app.Dialog
import android.graphics.Bitmap
import android.graphics.drawable.ColorDrawable
-import android.support.v7.app.AlertDialog
import android.text.method.ScrollingMovementMethod
import android.view.Gravity
import android.view.LayoutInflater
@@ -12,9 +11,9 @@ import android.widget.Button
import android.widget.EditText
import android.widget.ImageView
import android.widget.TextView
+import androidx.appcompat.app.AlertDialog
import com.blankj.utilcode.pkg.R
import com.blankj.utilcode.util.*
-import com.blankj.utilcode.util.PermissionUtils.OnRationaleListener.ShouldRequest
/**
* ```
@@ -26,7 +25,7 @@ import com.blankj.utilcode.util.PermissionUtils.OnRationaleListener.ShouldReques
*/
object DialogHelper {
- fun showRationaleDialog(shouldRequest: ShouldRequest) {
+ fun showRationaleDialog(shouldRequest: PermissionUtils.OnRationaleListener.ShouldRequest) {
val topActivity = ActivityUtils.getTopActivity()
AlertDialog.Builder(topActivity)
.setTitle(android.R.string.dialog_alert_title)
diff --git a/utilcode/pkg/src/main/res/layout/activity_adaptscreen.xml b/utilcode/pkg/src/main/res/layout/activity_adaptscreen.xml
index 792ae5672e..9be8749952 100644
--- a/utilcode/pkg/src/main/res/layout/activity_adaptscreen.xml
+++ b/utilcode/pkg/src/main/res/layout/activity_adaptscreen.xml
@@ -1,5 +1,5 @@
-
-
+
diff --git a/utilcode/pkg/src/main/res/layout/activity_adaptscreen_close.xml b/utilcode/pkg/src/main/res/layout/activity_adaptscreen_close.xml
index ccc88dddb6..1522b0741b 100644
--- a/utilcode/pkg/src/main/res/layout/activity_adaptscreen_close.xml
+++ b/utilcode/pkg/src/main/res/layout/activity_adaptscreen_close.xml
@@ -8,7 +8,7 @@
android:fillViewport="true"
tools:context=".feature.adaptScreen.AdaptCloseActivity">
-
@@ -43,6 +43,6 @@
android:textSize="30pt"
app:layout_constraintTop_toBottomOf="@id/adaptScreenCloseAdaptDpTv" />
-
+
\ No newline at end of file
diff --git a/utilcode/pkg/src/main/res/layout/activity_adaptscreen_height.xml b/utilcode/pkg/src/main/res/layout/activity_adaptscreen_height.xml
index 350921b04d..75fa87e8e5 100644
--- a/utilcode/pkg/src/main/res/layout/activity_adaptscreen_height.xml
+++ b/utilcode/pkg/src/main/res/layout/activity_adaptscreen_height.xml
@@ -1,13 +1,12 @@
-
-
@@ -94,6 +93,6 @@
android:textSize="30pt" />
-
+
\ No newline at end of file
diff --git a/utilcode/pkg/src/main/res/layout/activity_adaptscreen_width.xml b/utilcode/pkg/src/main/res/layout/activity_adaptscreen_width.xml
index 121415e1b6..dd9f9f40c7 100644
--- a/utilcode/pkg/src/main/res/layout/activity_adaptscreen_width.xml
+++ b/utilcode/pkg/src/main/res/layout/activity_adaptscreen_width.xml
@@ -8,7 +8,7 @@
android:fillViewport="true"
tools:context=".feature.adaptScreen.AdaptWidthActivity">
-
@@ -149,6 +149,6 @@
-
+
\ No newline at end of file
diff --git a/utilcode/pkg/src/main/res/layout/activity_bar_status_fragment.xml b/utilcode/pkg/src/main/res/layout/activity_bar_status_fragment.xml
index 3ce196004b..bd6e43e7a7 100644
--- a/utilcode/pkg/src/main/res/layout/activity_bar_status_fragment.xml
+++ b/utilcode/pkg/src/main/res/layout/activity_bar_status_fragment.xml
@@ -6,7 +6,7 @@
android:layout_height="match_parent"
android:orientation="vertical">
-
-
-
-
Date: Sat, 29 Jun 2019 19:59:42 +0800
Subject: [PATCH 005/138] see 06/29 log
---
.../test/java/com/blankj/utilcode/util/TimeUtilsTest.java | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/utilcode/lib/src/test/java/com/blankj/utilcode/util/TimeUtilsTest.java b/utilcode/lib/src/test/java/com/blankj/utilcode/util/TimeUtilsTest.java
index 2ba0a41586..5ab8ee17eb 100644
--- a/utilcode/lib/src/test/java/com/blankj/utilcode/util/TimeUtilsTest.java
+++ b/utilcode/lib/src/test/java/com/blankj/utilcode/util/TimeUtilsTest.java
@@ -42,15 +42,14 @@ public class TimeUtilsTest {
public void millis2String() {
assertEquals(timeString, TimeUtils.millis2String(timeMillis));
assertEquals(timeStringFormat, TimeUtils.millis2String(timeMillis, mFormat));
- assertEquals("2017年05月04日", TimeUtils.millis2String(timeMillis, "yyyy年MM月dd日"));
- assertEquals("16时37分", TimeUtils.millis2String(timeMillis, "HH时mm分"));
+ assertEquals(timeStringFormat, TimeUtils.millis2String(timeMillis, "yyyy MM dd HH:mm:ss"));
}
@Test
public void string2Millis() {
assertEquals(timeMillis, TimeUtils.string2Millis(timeString));
assertEquals(timeMillis, TimeUtils.string2Millis(timeStringFormat, mFormat));
- assertEquals(timeMillis, TimeUtils.string2Millis(timeStringFormat, "yyyy年MM月dd日HH时mm分"));
+ assertEquals(timeMillis, TimeUtils.string2Millis(timeStringFormat, "yyyy MM dd HH:mm:ss"));
}
@Test
From 40c0e36fbb1dc33ebce09a6fa162e07380271cf9 Mon Sep 17 00:00:00 2001
From: Blankj <625783482@qq.com>
Date: Thu, 15 Aug 2019 01:36:03 +0800
Subject: [PATCH 006/138] see 08/15 log
---
lib/utilcode/README-CN.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/utilcode/README-CN.md b/lib/utilcode/README-CN.md
index d610595e3c..cce78181fc 100644
--- a/lib/utilcode/README-CN.md
+++ b/lib/utilcode/README-CN.md
@@ -1185,7 +1185,7 @@ getComments : 获取压缩文件中的注释链表
[log.demo]: https://github.com/Blankj/AndroidUtilCode/blob/master/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/log/LogActivity.kt
[map.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/lib/utilcode/src/main/java/com/blankj/utilcode/util/MapUtils.java
-[map.demo]: https://github.com/Blankj/AndroidUtilCode/blob/master/lib/utilcode/src/test/java/com/blankj/utilcode/util/MapUtilsTest.java
+[map.test]: https://github.com/Blankj/AndroidUtilCode/blob/master/lib/utilcode/src/test/java/com/blankj/utilcode/util/MapUtilsTest.java
[metaData.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/lib/utilcode/src/main/java/com/blankj/utilcode/util/MetaDataUtils.java
[metaData.demo]: https://github.com/Blankj/AndroidUtilCode/blob/master/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/metaData/MetaDataActivity.kt
From c80cdc9c05529da6a6e5701b160817301dbb6528 Mon Sep 17 00:00:00 2001
From: Blankj <625783482@qq.com>
Date: Fri, 16 Aug 2019 17:39:00 +0800
Subject: [PATCH 007/138] see 08/16 log
---
buildSrc/src/main/groovy/GitUtils.groovy | 77 ++++++++++--------------
1 file changed, 32 insertions(+), 45 deletions(-)
diff --git a/buildSrc/src/main/groovy/GitUtils.groovy b/buildSrc/src/main/groovy/GitUtils.groovy
index 929f750f4f..a78cb982d5 100644
--- a/buildSrc/src/main/groovy/GitUtils.groovy
+++ b/buildSrc/src/main/groovy/GitUtils.groovy
@@ -1,6 +1,5 @@
import org.gradle.api.Action
import org.gradle.api.Project
-import org.gradle.api.Task
import org.gradle.api.invocation.Gradle
import java.text.SimpleDateFormat
@@ -34,55 +33,43 @@ class GitUtils {
}
static void addGitPushTask(Project project) {
- project.task("gitPush", new Action() {
- @Override
- void execute(Task task) {
- task.doLast {
- SimpleDateFormat simpleDateFormat = new SimpleDateFormat("MM/dd")
- String date = simpleDateFormat.format(new Date())
- GLog.d(ShellUtils.execCmd([
- "git add -A",
- "git commit -m \"see $date log\"",
- "git push origin $sCurBranchName"
- ] as String[]))
- }
- }
- })
+ project.task("gitPush").doLast {
+ SimpleDateFormat simpleDateFormat = new SimpleDateFormat("MM/dd")
+ String date = simpleDateFormat.format(new Date())
+ GLog.d(ShellUtils.execCmd([
+ "git add -A",
+ "git commit -m \"see $date log\"",
+ "git push origin $sCurBranchName"
+ ] as String[]))
+ }
}
static void addGitPushAndMerge2MasterTask(Project project) {
- project.task("gitPushAndMerge2Master", new Action() {
- @Override
- void execute(Task task) {
- task.doLast {
- SimpleDateFormat simpleDateFormat = new SimpleDateFormat("MM/dd")
- String date = simpleDateFormat.format(new Date())
- GLog.d(ShellUtils.execCmd([
- "git add -A",
- "git commit -m \"see $date log\"",
- "git push origin $sCurBranchName",
- "git checkout master",
- "git merge $sCurBranchName",
- "git push origin master",
- "git checkout $sCurBranchName",
- ] as String[]))
- }
- }
- })
+ project.task("gitPushAndMerge2Master").doLast {
+ SimpleDateFormat simpleDateFormat = new SimpleDateFormat("MM/dd")
+ String date = simpleDateFormat.format(new Date())
+ GLog.d(ShellUtils.execCmd([
+ "git add -A",
+ "git commit -m \"see $date log\"",
+ "git push origin $sCurBranchName",
+ "git checkout master",
+ "git merge $sCurBranchName",
+ "git push origin master",
+ "git checkout $sCurBranchName",
+ ] as String[]))
+ }
}
static void addGitNewBranchTask(Project project) {
- project.task("gitNewBranch", new Action() {
- @Override
- void execute(Task task) {
- task.doLast {
- GLog.d(ShellUtils.execCmd([
- "git checkout master",
- "git checkout -b ${Config.versionName}",
- "git push origin ${Config.versionName}:${Config.versionName}",
- ] as String[]))
- }
- }
- })
+ project.task("gitNewBranch").doLast {
+ GLog.d(ShellUtils.execCmd([
+ "git checkout master",
+ "git checkout -b ${Config.versionName}",
+ "git push origin ${Config.versionName}:${Config.versionName}",
+ ] as String[]))
+ }
}
}
+// ./gradlew gitPush
+// ./gradlew gitPushAndMerge2Master
+// ./gradlew gitNewBranch
From bfc0a678c16485ea35105ec941fdc00fe3ff413a Mon Sep 17 00:00:00 2001
From: Blankj <625783482@qq.com>
Date: Sun, 25 Aug 2019 17:52:45 +0800
Subject: [PATCH 008/138] see 08/25 log
---
CHANGELOG.md | 4 +
README-CN.md | 2 +-
README.md | 2 +-
buildSrc/src/main/groovy/Config.groovy | 4 +-
buildSrc/src/main/groovy/GitUtils.java | 12 ---
gradle.properties | 3 +-
gradle/wrapper/gradle-wrapper.properties | 2 +-
lib/utilcode/README-CN.md | 15 ++-
lib/utilcode/README.md | 17 +++-
.../constant/PermissionConstants.java | 2 +-
.../com/blankj/utilcode/util/AppUtils.java | 2 +-
.../blankj/utilcode/util/ConvertUtils.java | 10 +-
.../com/blankj/utilcode/util/CrashUtils.java | 2 +-
.../com/blankj/utilcode/util/DeviceUtils.java | 37 ++++---
.../blankj/utilcode/util/EncryptUtils.java | 2 +-
.../com/blankj/utilcode/util/FileUtils.java | 2 +-
.../com/blankj/utilcode/util/ImageUtils.java | 93 +++++++++++++-----
.../blankj/utilcode/util/KeyboardUtils.java | 10 +-
.../com/blankj/utilcode/util/LogUtils.java | 24 ++++-
.../com/blankj/utilcode/util/PhoneUtils.java | 13 ++-
.../com/blankj/utilcode/util/ScreenUtils.java | 4 +-
.../com/blankj/utilcode/util/SizeUtils.java | 10 +-
.../com/blankj/utilcode/util/ViewUtils.java | 27 ++++-
.../blankj/utilcode/util/ImageUtilsTest.java | 26 +++++
.../com/blankj/utilcode/util/TestConfig.java | 2 +
.../src/test/res/image/ic_launcher.bmp | Bin 0 -> 49208 bytes
.../src/test/res/image/ic_launcher.gif | Bin 0 -> 2195 bytes
.../src/test/res/image/ic_launcher.ico | Bin 0 -> 1150 bytes
.../src/test/res/image/ic_launcher.jpg | Bin 0 -> 14725 bytes
.../src/test/res/image/ic_launcher.png | Bin 0 -> 2793 bytes
.../src/test/res/image/ic_launcher.tif | Bin 0 -> 80948 bytes
.../src/test/res/image/ic_launcher.webp | Bin 0 -> 1484 bytes
32 files changed, 228 insertions(+), 99 deletions(-)
delete mode 100644 buildSrc/src/main/groovy/GitUtils.java
create mode 100644 lib/utilcode/src/test/java/com/blankj/utilcode/util/ImageUtilsTest.java
create mode 100644 lib/utilcode/src/test/res/image/ic_launcher.bmp
create mode 100644 lib/utilcode/src/test/res/image/ic_launcher.gif
create mode 100644 lib/utilcode/src/test/res/image/ic_launcher.ico
create mode 100644 lib/utilcode/src/test/res/image/ic_launcher.jpg
create mode 100644 lib/utilcode/src/test/res/image/ic_launcher.png
create mode 100644 lib/utilcode/src/test/res/image/ic_launcher.tif
create mode 100644 lib/utilcode/src/test/res/image/ic_launcher.webp
diff --git a/CHANGELOG.md b/CHANGELOG.md
index f48fe84146..99103073e6 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+* `19/08/25` [upd] ImageUtils#getImageType. [add] LogUtils# Publish v1.25.9.
+* `19/08/24` [fix] PhoneUtils#getIMEI crash on SDK 29.
+* `19/08/23` [add] ViewUtils#isLayoutRtl.
+* `19/08/22` [add] LogUtils#getLogFiles.
* `19/08/13` [add] MapUtils and MapUtilsTest. Publish v1.25.8.
* `19/08/12` [add] CollectionUtils and CollectionUtilsTest.
* `19/08/11` [add] ArrayUtils and ArrayUtilsTest.
diff --git a/README-CN.md b/README-CN.md
index 82d01dc0df..ed00c0f6df 100644
--- a/README-CN.md
+++ b/README-CN.md
@@ -51,7 +51,7 @@
[frame]: https://raw.githubusercontent.com/Blankj/AndroidUtilCode/master/art/auc_frame_cn.png
-[aucSvg]: https://img.shields.io/badge/AndroidUtilCode-v1.25.8-brightgreen.svg
+[aucSvg]: https://img.shields.io/badge/AndroidUtilCode-v1.25.9-brightgreen.svg
[auc]: https://github.com/Blankj/AndroidUtilCode
[apiSvg]: https://img.shields.io/badge/API-14+-brightgreen.svg
diff --git a/README.md b/README.md
index 103970b8f1..9015f9679f 100644
--- a/README.md
+++ b/README.md
@@ -51,7 +51,7 @@ If this project helps you a lot and you want to support the project's developmen
[frame]: https://raw.githubusercontent.com/Blankj/AndroidUtilCode/master/art/auc_frame.png
-[aucSvg]: https://img.shields.io/badge/AndroidUtilCode-v1.25.8-brightgreen.svg
+[aucSvg]: https://img.shields.io/badge/AndroidUtilCode-v1.25.9-brightgreen.svg
[auc]: https://github.com/Blankj/AndroidUtilCode
[apiSvg]: https://img.shields.io/badge/API-14+-brightgreen.svg
diff --git a/buildSrc/src/main/groovy/Config.groovy b/buildSrc/src/main/groovy/Config.groovy
index 692066d5a5..4335dca9b0 100644
--- a/buildSrc/src/main/groovy/Config.groovy
+++ b/buildSrc/src/main/groovy/Config.groovy
@@ -14,8 +14,8 @@ class Config {
static compileSdkVersion = 28
static minSdkVersion = 14
static targetSdkVersion = 28
- static versionCode = 1_025_008
- static versionName = '1.25.8-alpha1'// E.g. 1.9.72 => 1,009,072
+ static versionCode = 1_025_009
+ static versionName = '1.25.9'// E.g. 1.9.72 => 1,009,072
// lib version
static kotlin_version = '1.3.10'
diff --git a/buildSrc/src/main/groovy/GitUtils.java b/buildSrc/src/main/groovy/GitUtils.java
deleted file mode 100644
index d36a3c7b71..0000000000
--- a/buildSrc/src/main/groovy/GitUtils.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package PACKAGE_NAME;
-
-/**
- *
- * author: blankj
- * blog : http://blankj.com
- * time : 2019/08/16
- * desc :
- *
- */
-public class GitUtils {
-}
diff --git a/gradle.properties b/gradle.properties
index 932a98194f..63f495a02a 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -16,6 +16,7 @@
org.gradle.jvmargs=-Xmx8192m -XX:MaxPermSize=2048m -XX:+HeapDumpOnOutOfMemoryError -XX:-UseGCOverheadLimit -Dfile.encoding=UTF-8
org.gradle.daemon=true
#org.gradle.configureondemand=true
-#org.gradle.parallel=true
+org.gradle.parallel=true
+org.gradle.caching=true
#-Dorg.gradle.debug=true --no-daemon
\ No newline at end of file
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index 1129dccfd3..e4718dff4d 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-5.1.1-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip
diff --git a/lib/utilcode/README-CN.md b/lib/utilcode/README-CN.md
index 66b6541990..d638ebbd10 100644
--- a/lib/utilcode/README-CN.md
+++ b/lib/utilcode/README-CN.md
@@ -2,10 +2,10 @@
Gradle:
```groovy
-implementation 'com.blankj:utilcode:1.25.8'
+implementation 'com.blankj:utilcode:1.25.9'
// if u use AndroidX, use the following
-implementation 'com.blankj:utilcodex:1.25.8'
+implementation 'com.blankj:utilcodex:1.25.9'
```
@@ -1069,6 +1069,15 @@ vibrate: 震动
cancel : 取消
```
+* ### 视图相关 -> [ViewUtils.java][view.java]
+```
+setViewEnabled : 设置视图是否可用
+runOnUiThread : 在 UI 线程运行
+runOnUiThreadDelayed: 在 UI 线程延迟运行
+isLayoutRtl : 布局是否从右到左
+fixScrollViewTopping: 修复 ScrollView 置顶问题
+```
+
* ### 压缩相关 -> [ZipUtils.java][zip.java] -> [Test][zip.test]
```
zipFiles : 批量压缩文件
@@ -1262,5 +1271,7 @@ getComments : 获取压缩文件中的注释链表
[vibrate.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/lib/utilcode/src/main/java/com/blankj/utilcode/util/VibrateUtils.java
[vibrate.demo]: https://github.com/Blankj/AndroidUtilCode/blob/master/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/vibrate/VibrateActivity.kt
+[view.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/lib/utilcode/src/main/java/com/blankj/utilcode/util/ViewUtils.java
+
[zip.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/lib/utilcode/src/main/java/com/blankj/utilcode/util/ZipUtils.java
[zip.test]: https://github.com/Blankj/AndroidUtilCode/blob/master/lib/utilcode/src/test/java/com/blankj/utilcode/util/ZipUtilsTest.java
diff --git a/lib/utilcode/README.md b/lib/utilcode/README.md
index 230bd18b3c..c735e79090 100644
--- a/lib/utilcode/README.md
+++ b/lib/utilcode/README.md
@@ -2,10 +2,10 @@
Gradle:
```groovy
-implementation 'com.blankj:utilcode:1.25.8'
+implementation 'com.blankj:utilcode:1.25.9'
// if u use AndroidX, use the following
-implementation 'com.blankj:utilcodex:1.25.8'
+implementation 'com.blankj:utilcodex:1.25.9'
```
@@ -1069,6 +1069,15 @@ vibrate
cancel
```
+* ### About View -> [ViewUtils.java][view.java]
+```
+setViewEnabled
+runOnUiThread
+runOnUiThreadDelayed
+isLayoutRtl
+fixScrollViewTopping
+```
+
* ### About Zip -> [ZipUtils.java][zip.java] -> [Test][zip.test]
```
zipFiles
@@ -1187,7 +1196,7 @@ getComments
[log.demo]: https://github.com/Blankj/AndroidUtilCode/blob/master/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/log/LogActivity.kt
[map.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/lib/utilcode/src/main/java/com/blankj/utilcode/util/MapUtils.java
-[map.demo]: https://github.com/Blankj/AndroidUtilCode/blob/master/lib/utilcode/src/test/java/com/blankj/utilcode/util/MapUtilsTest.java
+[map.test]: https://github.com/Blankj/AndroidUtilCode/blob/master/lib/utilcode/src/test/java/com/blankj/utilcode/util/MapUtilsTest.java
[metaData.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/lib/utilcode/src/main/java/com/blankj/utilcode/util/MetaDataUtils.java
[metaData.demo]: https://github.com/Blankj/AndroidUtilCode/blob/master/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/metaData/MetaDataActivity.kt
@@ -1262,5 +1271,7 @@ getComments
[vibrate.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/lib/utilcode/src/main/java/com/blankj/utilcode/util/VibrateUtils.java
[vibrate.demo]: https://github.com/Blankj/AndroidUtilCode/blob/master/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/vibrate/VibrateActivity.kt
+[view.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/lib/utilcode/src/main/java/com/blankj/utilcode/util/ViewUtils.java
+
[zip.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/lib/utilcode/src/main/java/com/blankj/utilcode/util/ZipUtils.java
[zip.test]: https://github.com/Blankj/AndroidUtilCode/blob/master/lib/utilcode/src/test/java/com/blankj/utilcode/util/ZipUtilsTest.java
diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/constant/PermissionConstants.java b/lib/utilcode/src/main/java/com/blankj/utilcode/constant/PermissionConstants.java
index 76f7e9a217..489de57a8d 100644
--- a/lib/utilcode/src/main/java/com/blankj/utilcode/constant/PermissionConstants.java
+++ b/lib/utilcode/src/main/java/com/blankj/utilcode/constant/PermissionConstants.java
@@ -64,7 +64,7 @@ public final class PermissionConstants {
permission.RECEIVE_WAP_PUSH, permission.RECEIVE_MMS,
};
private static final String[] GROUP_STORAGE = {
- permission.READ_EXTERNAL_STORAGE, permission.WRITE_EXTERNAL_STORAGE
+ permission.READ_EXTERNAL_STORAGE, permission.WRITE_EXTERNAL_STORAGE,
};
@StringDef({CALENDAR, CAMERA, CONTACTS, LOCATION, MICROPHONE, PHONE, SENSORS, SMS, STORAGE,})
diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/AppUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/AppUtils.java
index 67c3c62834..cf6efd6bc6 100644
--- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/AppUtils.java
+++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/AppUtils.java
@@ -865,7 +865,7 @@ private static boolean isSpace(final String s) {
return true;
}
- private static final char HEX_DIGITS[] =
+ private static final char[] HEX_DIGITS =
{'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
private static byte[] hashTemplate(final byte[] data, final String algorithm) {
diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ConvertUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ConvertUtils.java
index 4abbfb56d3..0c36f1b4c6 100644
--- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ConvertUtils.java
+++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ConvertUtils.java
@@ -35,7 +35,7 @@ private ConvertUtils() {
throw new UnsupportedOperationException("u can't instantiate me...");
}
- private static final char hexDigits[] =
+ private static final char[] hexDigits =
{'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
/**
@@ -581,7 +581,7 @@ public static Bitmap view2Bitmap(final View view) {
* @return value of px
*/
public static int dp2px(final float dpValue) {
- final float scale = Resources.getSystem().getDisplayMetrics().density;
+ final float scale = Utils.getApp().getResources().getDisplayMetrics().density;
return (int) (dpValue * scale + 0.5f);
}
@@ -592,7 +592,7 @@ public static int dp2px(final float dpValue) {
* @return value of dp
*/
public static int px2dp(final float pxValue) {
- final float scale = Resources.getSystem().getDisplayMetrics().density;
+ final float scale = Utils.getApp().getResources().getDisplayMetrics().density;
return (int) (pxValue / scale + 0.5f);
}
@@ -603,7 +603,7 @@ public static int px2dp(final float pxValue) {
* @return value of px
*/
public static int sp2px(final float spValue) {
- final float fontScale = Resources.getSystem().getDisplayMetrics().scaledDensity;
+ final float fontScale = Utils.getApp().getResources().getDisplayMetrics().scaledDensity;
return (int) (spValue * fontScale + 0.5f);
}
@@ -614,7 +614,7 @@ public static int sp2px(final float spValue) {
* @return value of sp
*/
public static int px2sp(final float pxValue) {
- final float fontScale = Resources.getSystem().getDisplayMetrics().scaledDensity;
+ final float fontScale = Utils.getApp().getResources().getDisplayMetrics().scaledDensity;
return (int) (pxValue / fontScale + 0.5f);
}
diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/CrashUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/CrashUtils.java
index 18b5f814a3..8f9e2e2bdc 100644
--- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/CrashUtils.java
+++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/CrashUtils.java
@@ -41,7 +41,7 @@ public final class CrashUtils {
private static final String FILE_SEP = System.getProperty("file.separator");
@SuppressLint("SimpleDateFormat")
- private static final Format FORMAT = new SimpleDateFormat("MM-dd HH-mm-ss");
+ private static final Format FORMAT = new SimpleDateFormat("MM-dd_HH-mm-ss");
private static final UncaughtExceptionHandler DEFAULT_UNCAUGHT_EXCEPTION_HANDLER;
private static final UncaughtExceptionHandler UNCAUGHT_EXCEPTION_HANDLER;
diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/DeviceUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/DeviceUtils.java
index fdfc398dda..0741d4f3c6 100644
--- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/DeviceUtils.java
+++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/DeviceUtils.java
@@ -22,6 +22,7 @@
import java.util.UUID;
import static android.Manifest.permission.ACCESS_WIFI_STATE;
+import static android.Manifest.permission.CHANGE_WIFI_STATE;
import static android.Manifest.permission.INTERNET;
import static android.content.Context.WIFI_SERVICE;
@@ -106,11 +107,12 @@ public static String getAndroidID() {
/**
* Return the MAC address.
* Must hold {@code },
- * {@code }
+ * {@code },
+ * {@code }
*
* @return the MAC address
*/
- @RequiresPermission(allOf = {ACCESS_WIFI_STATE, INTERNET})
+ @RequiresPermission(allOf = {ACCESS_WIFI_STATE, INTERNET, CHANGE_WIFI_STATE})
public static String getMacAddress() {
String macAddress = getMacAddress((String[]) null);
if (!macAddress.equals("") || getWifiEnabled()) return macAddress;
@@ -126,10 +128,18 @@ private static boolean getWifiEnabled() {
return manager.isWifiEnabled();
}
+ /**
+ * Enable or disable wifi.
+ * Must hold {@code }
+ *
+ * @param enabled True to enabled, false otherwise.
+ */
+ @RequiresPermission(CHANGE_WIFI_STATE)
private static void setWifiEnabled(final boolean enabled) {
@SuppressLint("WifiManagerLeak")
WifiManager manager = (WifiManager) Utils.getApp().getSystemService(WIFI_SERVICE);
if (manager == null) return;
+ if (enabled == manager.isWifiEnabled()) return;
manager.setWifiEnabled(enabled);
}
@@ -372,9 +382,8 @@ public static boolean isEmulator() {
/**
* Return the unique device id.
* {1}{UUID(macAddress)}
- * {2}{UUID(deviceId )}
- * {3}{UUID(androidId )}
- * {4}{UUID(random )}
+ * {2}{UUID(androidId )}
+ * {9}{UUID(random )}
*
* @return the unique device id
*/
@@ -386,9 +395,8 @@ public static String getUniqueDeviceId() {
/**
* Return the unique device id.
* {prefix}{1}{UUID(macAddress)}
- * {prefix}{2}{UUID(deviceId )}
- * {prefix}{3}{UUID(androidId )}
- * {prefix}{4}{UUID(random )}
+ * {prefix}{2}{UUID(androidId )}
+ * {prefix}{9}{UUID(random )}
*
* @param prefix The prefix of the unique device id.
* @return the unique device id
@@ -414,13 +422,8 @@ public static String getUniqueDeviceId(String prefix) {
return saveUdid(prefix + 2, androidId);
}
- final String deviceId = ((TelephonyManager) Utils.getApp().getSystemService(Context.TELEPHONY_SERVICE)).getDeviceId();
- if (!TextUtils.isEmpty(deviceId)) {
- return saveUdid(prefix + 3, deviceId);
- }
-
} catch (Exception ignore) {/**/}
- return saveUdid(prefix + 4, "");
+ return saveUdid(prefix + 9, "");
}
}
}
@@ -448,12 +451,6 @@ public static boolean isSameDevice(final String uniqueDeviceId) {
return false;
}
return uniqueDeviceId.substring(st + 1).equals(getUdid("", androidId));
- } else if (type.startsWith("3")) {
- final String deviceId = ((TelephonyManager) Utils.getApp().getSystemService(Context.TELEPHONY_SERVICE)).getDeviceId();
- if (TextUtils.isEmpty(deviceId)) {
- return false;
- }
- return uniqueDeviceId.substring(st + 1).equals(getUdid("", deviceId));
}
return false;
}
diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/EncryptUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/EncryptUtils.java
index d20ee711ad..d5edd2b2d2 100644
--- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/EncryptUtils.java
+++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/EncryptUtils.java
@@ -1152,7 +1152,7 @@ private static byte[] joins(final byte[] prefix, final byte[] suffix) {
return ret;
}
- private static final char HEX_DIGITS[] =
+ private static final char[] HEX_DIGITS =
{'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
private static String bytes2HexString(final byte[] bytes) {
diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/FileUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/FileUtils.java
index 2610a3a390..44f8987f93 100644
--- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/FileUtils.java
+++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/FileUtils.java
@@ -1221,7 +1221,7 @@ public interface OnReplaceListener {
// other utils methods
///////////////////////////////////////////////////////////////////////////
- private static final char HEX_DIGITS[] =
+ private static final char[] HEX_DIGITS =
{'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
private static String bytes2HexString(final byte[] bytes) {
diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ImageUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ImageUtils.java
index 83e01eb1ad..ed79e362b7 100644
--- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ImageUtils.java
+++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ImageUtils.java
@@ -1562,7 +1562,7 @@ public static boolean isImage(final String filePath) {
* @param filePath The path of file.
* @return the type of image
*/
- public static String getImageType(final String filePath) {
+ public static ImageType getImageType(final String filePath) {
return getImageType(getFileByPath(filePath));
}
@@ -1572,12 +1572,12 @@ public static String getImageType(final String filePath) {
* @param file The file.
* @return the type of image
*/
- public static String getImageType(final File file) {
- if (file == null) return "";
+ public static ImageType getImageType(final File file) {
+ if (file == null) return null;
InputStream is = null;
try {
is = new FileInputStream(file);
- String type = getImageType(is);
+ ImageType type = getImageType(is);
if (type != null) {
return type;
}
@@ -1592,36 +1592,57 @@ public static String getImageType(final File file) {
e.printStackTrace();
}
}
- return getFileExtension(file.getAbsolutePath()).toUpperCase();
- }
-
- private static String getFileExtension(final String filePath) {
- if (isSpace(filePath)) return filePath;
- int lastPoi = filePath.lastIndexOf('.');
- int lastSep = filePath.lastIndexOf(File.separator);
- if (lastPoi == -1 || lastSep >= lastPoi) return "";
- return filePath.substring(lastPoi + 1);
+ return null;
}
- private static String getImageType(final InputStream is) {
+ private static ImageType getImageType(final InputStream is) {
if (is == null) return null;
try {
- byte[] bytes = new byte[8];
- return is.read(bytes, 0, 8) != -1 ? getImageType(bytes) : null;
+ byte[] bytes = new byte[12];
+ return is.read(bytes) != -1 ? getImageType(bytes) : null;
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
- private static String getImageType(final byte[] bytes) {
- if (isJPEG(bytes)) return "JPEG";
- if (isGIF(bytes)) return "GIF";
- if (isPNG(bytes)) return "PNG";
- if (isBMP(bytes)) return "BMP";
- return null;
+ private static ImageType getImageType(final byte[] bytes) {
+ String type = bytes2HexString(bytes).toUpperCase();
+ if (type.contains("FFD8FF")) {
+ return ImageType.TYPE_JPG;
+ } else if (type.contains("89504E47")) {
+ return ImageType.TYPE_PNG;
+ } else if (type.contains("47494638")) {
+ return ImageType.TYPE_GIF;
+ } else if (type.contains("49492A00") || type.contains("4D4D002A")) {
+ return ImageType.TYPE_TIFF;
+ } else if (type.contains("424D")) {
+ return ImageType.TYPE_BMP;
+ } else if (type.startsWith("52494646") && type.endsWith("57454250")) {//524946461c57000057454250-12个字节
+ return ImageType.TYPE_WEBP;
+ } else if (type.contains("00000100") || type.contains("00000200")) {
+ return ImageType.TYPE_ICO;
+ } else {
+ return ImageType.TYPE_UNKNOWN;
+ }
}
+ private static final char[] hexDigits =
+ {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
+
+ private static String bytes2HexString(final byte[] bytes) {
+ if (bytes == null) return "";
+ int len = bytes.length;
+ if (len <= 0) return "";
+ char[] ret = new char[len << 1];
+ for (int i = 0, j = 0; i < len; i++) {
+ ret[j++] = hexDigits[bytes[i] >> 4 & 0x0f];
+ ret[j++] = hexDigits[bytes[i] & 0x0f];
+ }
+ return new String(ret);
+ }
+
+
private static boolean isJPEG(final byte[] b) {
return b.length >= 2
&& (b[0] == (byte) 0xFF) && (b[1] == (byte) 0xD8);
@@ -1982,4 +2003,32 @@ private static byte[] input2Byte(final InputStream is) {
}
}
}
+
+ public enum ImageType {
+ TYPE_JPG("jpg"),
+
+ TYPE_PNG("png"),
+
+ TYPE_GIF("gif"),
+
+ TYPE_TIFF("tiff"),
+
+ TYPE_BMP("bmp"),
+
+ TYPE_WEBP("webp"),
+
+ TYPE_ICO("ico"),
+
+ TYPE_UNKNOWN("unknown");
+
+ String value;
+
+ ImageType(String value) {
+ this.value = value;
+ }
+
+ public String getValue() {
+ return value;
+ }
+ }
}
diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/KeyboardUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/KeyboardUtils.java
index 28d79d41f8..a0f5c5a809 100644
--- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/KeyboardUtils.java
+++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/KeyboardUtils.java
@@ -108,15 +108,7 @@ public static void hideSoftInput(@NonNull final View view) {
InputMethodManager imm =
(InputMethodManager) Utils.getApp().getSystemService(Context.INPUT_METHOD_SERVICE);
if (imm == null) return;
- imm.hideSoftInputFromWindow(view.getWindowToken(), 0, new ResultReceiver(new Handler()) {
- @Override
- protected void onReceiveResult(int resultCode, Bundle resultData) {
- if (resultCode == InputMethodManager.RESULT_UNCHANGED_SHOWN
- || resultCode == InputMethodManager.RESULT_SHOWN) {
- toggleSoftInput();
- }
- }
- });
+ imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
}
/**
diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/LogUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/LogUtils.java
index dfbf997cb5..e7f15a2a70 100644
--- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/LogUtils.java
+++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/LogUtils.java
@@ -36,10 +36,13 @@
import java.lang.reflect.Type;
import java.text.ParseException;
import java.text.SimpleDateFormat;
+import java.util.ArrayList;
import java.util.Arrays;
+import java.util.Collections;
import java.util.Date;
import java.util.Formatter;
import java.util.Iterator;
+import java.util.List;
import java.util.Locale;
import java.util.Set;
import java.util.concurrent.ExecutorService;
@@ -233,6 +236,21 @@ public void run() {
}
}
+ public static List getLogFiles() {
+ String dir = CONFIG.getDir();
+ File logDir = new File(dir);
+ if (!logDir.exists()) return new ArrayList<>();
+ File[] files = logDir.listFiles(new FilenameFilter() {
+ @Override
+ public boolean accept(File dir, String name) {
+ return isMatchLogFileName(name);
+ }
+ });
+ List list = new ArrayList<>();
+ Collections.addAll(list, files);
+ return list;
+ }
+
private static TagHead processTagAndHead(String tag) {
if (!CONFIG.mTagIsSpace && !CONFIG.isLogHeadSwitch()) {
tag = CONFIG.getGlobalTag();
@@ -527,7 +545,7 @@ private static void deleteDueLogs(final String filePath, final String date) {
File[] files = parentFile.listFiles(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
- return name.matches("^" + CONFIG.getFilePrefix() + "_[0-9]{4}_[0-9]{2}_[0-9]{2}_.*$");
+ return isMatchLogFileName(name);
}
});
if (files == null || files.length <= 0) return;
@@ -555,6 +573,10 @@ public void run() {
}
}
+ private static boolean isMatchLogFileName(String name) {
+ return name.matches("^" + CONFIG.getFilePrefix() + "_[0-9]{4}_[0-9]{2}_[0-9]{2}_.*$");
+ }
+
private static String findDate(String str) {
Pattern pattern = Pattern.compile("[0-9]{4}_[0-9]{2}_[0-9]{2}");
Matcher matcher = pattern.matcher(str);
diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/PhoneUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/PhoneUtils.java
index c71cb07460..42cab85931 100644
--- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/PhoneUtils.java
+++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/PhoneUtils.java
@@ -1,24 +1,20 @@
package com.blankj.utilcode.util;
import android.annotation.SuppressLint;
-import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.Build;
import android.support.annotation.RequiresPermission;
-import android.telephony.SmsManager;
import android.telephony.TelephonyManager;
import android.text.TextUtils;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
-import java.util.List;
import static android.Manifest.permission.CALL_PHONE;
import static android.Manifest.permission.READ_PHONE_STATE;
-import static android.Manifest.permission.SEND_SMS;
/**
*
@@ -46,6 +42,7 @@ public static boolean isPhone() {
/**
* Return the unique device id.
+ * If the version of SDK is greater than 28, it will return an empty string.
* Must hold {@code }
*
* @return the unique device id
@@ -53,6 +50,9 @@ public static boolean isPhone() {
@SuppressLint("HardwareIds")
@RequiresPermission(READ_PHONE_STATE)
public static String getDeviceId() {
+ if (Build.VERSION.SDK_INT >= 29) {
+ return "";
+ }
TelephonyManager tm = getTelephonyManager();
String deviceId = tm.getDeviceId();
if (!TextUtils.isEmpty(deviceId)) return deviceId;
@@ -78,6 +78,7 @@ public static String getSerial() {
/**
* Return the IMEI.
+ * If the version of SDK is greater than 28, it will return an empty string.
* Must hold {@code }
*
* @return the IMEI
@@ -89,6 +90,7 @@ public static String getIMEI() {
/**
* Return the MEID.
+ * If the version of SDK is greater than 28, it will return an empty string.
* Must hold {@code }
*
* @return the MEID
@@ -101,6 +103,9 @@ public static String getMEID() {
@SuppressLint("HardwareIds")
@RequiresPermission(READ_PHONE_STATE)
public static String getImeiOrMeid(boolean isImei) {
+ if (Build.VERSION.SDK_INT >= 29) {
+ return "";
+ }
TelephonyManager tm = getTelephonyManager();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
if (isImei) {
diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ScreenUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ScreenUtils.java
index 7390fceed0..a41a6f2b00 100644
--- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ScreenUtils.java
+++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ScreenUtils.java
@@ -100,7 +100,7 @@ public static int getAppScreenHeight() {
* @return the density of screen
*/
public static float getScreenDensity() {
- return Resources.getSystem().getDisplayMetrics().density;
+ return Utils.getApp().getResources().getDisplayMetrics().density;
}
/**
@@ -109,7 +109,7 @@ public static float getScreenDensity() {
* @return the screen density expressed as dots-per-inch
*/
public static int getScreenDensityDpi() {
- return Resources.getSystem().getDisplayMetrics().densityDpi;
+ return Utils.getApp().getResources().getDisplayMetrics().densityDpi;
}
/**
diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/SizeUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/SizeUtils.java
index 5ef9047e4d..f5e0acf853 100644
--- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/SizeUtils.java
+++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/SizeUtils.java
@@ -27,7 +27,7 @@ private SizeUtils() {
* @return value of px
*/
public static int dp2px(final float dpValue) {
- final float scale = Resources.getSystem().getDisplayMetrics().density;
+ final float scale = Utils.getApp().getResources().getDisplayMetrics().density;
return (int) (dpValue * scale + 0.5f);
}
@@ -38,7 +38,7 @@ public static int dp2px(final float dpValue) {
* @return value of dp
*/
public static int px2dp(final float pxValue) {
- final float scale = Resources.getSystem().getDisplayMetrics().density;
+ final float scale = Utils.getApp().getResources().getDisplayMetrics().density;
return (int) (pxValue / scale + 0.5f);
}
@@ -49,7 +49,7 @@ public static int px2dp(final float pxValue) {
* @return value of px
*/
public static int sp2px(final float spValue) {
- final float fontScale = Resources.getSystem().getDisplayMetrics().scaledDensity;
+ final float fontScale = Utils.getApp().getResources().getDisplayMetrics().scaledDensity;
return (int) (spValue * fontScale + 0.5f);
}
@@ -60,7 +60,7 @@ public static int sp2px(final float spValue) {
* @return value of sp
*/
public static int px2sp(final float pxValue) {
- final float fontScale = Resources.getSystem().getDisplayMetrics().scaledDensity;
+ final float fontScale = Utils.getApp().getResources().getDisplayMetrics().scaledDensity;
return (int) (pxValue / fontScale + 0.5f);
}
@@ -75,7 +75,7 @@ public static int px2sp(final float pxValue) {
* metrics depending on its unit.
*/
public static float applyDimension(final float value, final int unit) {
- DisplayMetrics metrics = Resources.getSystem().getDisplayMetrics();
+ DisplayMetrics metrics = Utils.getApp().getResources().getDisplayMetrics();
switch (unit) {
case TypedValue.COMPLEX_UNIT_PX:
return value;
diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ViewUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ViewUtils.java
index 77f9421d3a..fa651b4a49 100644
--- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ViewUtils.java
+++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ViewUtils.java
@@ -1,8 +1,12 @@
package com.blankj.utilcode.util;
+import android.os.Build;
+import android.text.TextUtils;
import android.view.View;
import android.view.ViewGroup;
+import java.util.Locale;
+
/**
*
* author: Blankj
@@ -63,9 +67,27 @@ public static void runOnUiThreadDelayed(final Runnable runnable, long delayMilli
}
/**
- * 用于解决ScrollView嵌套ListView/GridView/WebView/RecyclerView等无法置顶问题
+ * Return whether horizontal layout direction of views are from Right to Left.
*
- * @param view ScrollView嵌套的跟视图
+ * @return {@code true}: yes
{@code false}: no
+ */
+ public static boolean isLayoutRtl() {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
+ Locale primaryLocale;
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
+ primaryLocale = Utils.getApp().getResources().getConfiguration().getLocales().get(0);
+ } else {
+ primaryLocale = Utils.getApp().getResources().getConfiguration().locale;
+ }
+ return TextUtils.getLayoutDirectionFromLocale(primaryLocale) == View.LAYOUT_DIRECTION_RTL;
+ }
+ return false;
+ }
+
+ /**
+ * Fix the problem of topping the ScrollView nested ListView/GridView/WebView/RecyclerView.
+ *
+ * @param view The root view inner of ScrollView.
*/
public static void fixScrollViewTopping(View view) {
view.setFocusable(false);
@@ -84,5 +106,4 @@ public static void fixScrollViewTopping(View view) {
}
}
}
-
}
\ No newline at end of file
diff --git a/lib/utilcode/src/test/java/com/blankj/utilcode/util/ImageUtilsTest.java b/lib/utilcode/src/test/java/com/blankj/utilcode/util/ImageUtilsTest.java
new file mode 100644
index 0000000000..486df32d78
--- /dev/null
+++ b/lib/utilcode/src/test/java/com/blankj/utilcode/util/ImageUtilsTest.java
@@ -0,0 +1,26 @@
+package com.blankj.utilcode.util;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+/**
+ *
+ * author: blankj
+ * blog : http://blankj.com
+ * time : 2019/08/25
+ * desc : test ImageUtils
+ *
+ */
+public class ImageUtilsTest extends BaseTest {
+
+ @Test
+ public void getImageType() {
+ Assert.assertEquals(ImageUtils.ImageType.TYPE_JPG, ImageUtils.getImageType(TestConfig.PATH_IMAGE + "ic_launcher.jpg"));
+ Assert.assertEquals(ImageUtils.ImageType.TYPE_PNG, ImageUtils.getImageType(TestConfig.PATH_IMAGE + "ic_launcher.png"));
+ Assert.assertEquals(ImageUtils.ImageType.TYPE_GIF, ImageUtils.getImageType(TestConfig.PATH_IMAGE + "ic_launcher.gif"));
+ Assert.assertEquals(ImageUtils.ImageType.TYPE_TIFF, ImageUtils.getImageType(TestConfig.PATH_IMAGE + "ic_launcher.tif"));
+ Assert.assertEquals(ImageUtils.ImageType.TYPE_BMP, ImageUtils.getImageType(TestConfig.PATH_IMAGE + "ic_launcher.bmp"));
+ Assert.assertEquals(ImageUtils.ImageType.TYPE_WEBP, ImageUtils.getImageType(TestConfig.PATH_IMAGE + "ic_launcher.webp"));
+ Assert.assertEquals(ImageUtils.ImageType.TYPE_ICO, ImageUtils.getImageType(TestConfig.PATH_IMAGE + "ic_launcher.ico"));
+ }
+}
diff --git a/lib/utilcode/src/test/java/com/blankj/utilcode/util/TestConfig.java b/lib/utilcode/src/test/java/com/blankj/utilcode/util/TestConfig.java
index 6ea0c4b48c..4075a1473e 100644
--- a/lib/utilcode/src/test/java/com/blankj/utilcode/util/TestConfig.java
+++ b/lib/utilcode/src/test/java/com/blankj/utilcode/util/TestConfig.java
@@ -32,5 +32,7 @@ public class TestConfig {
static final String PATH_FILE = TEST_PATH + "file" + FILE_SEP;
+ static final String PATH_IMAGE = TEST_PATH + "image" + FILE_SEP;
+
static final String PATH_ZIP = TEST_PATH + "zip" + FILE_SEP;
}
diff --git a/lib/utilcode/src/test/res/image/ic_launcher.bmp b/lib/utilcode/src/test/res/image/ic_launcher.bmp
new file mode 100644
index 0000000000000000000000000000000000000000..2880951dd963b2c42fd932b1f25b3cbcff942c39
GIT binary patch
literal 49208
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
SrO?mQLhfDq*lSic^A)z>R>_DIp
z31SFv0gdUdpt&?$pS$A+*2~vI)i=>EOC*CY#Ir%H#scfDRXR6m&9|bHwac&n$lOeB
zRVzXve6pXRgJ%NI#vWy+|4?=|!F(r5a@w$HRCh24Ot8wM5fR{66tiv-fuSy`wl`Hl
zM2%?m!owuT;EIic1R|9A_4x?|6H`jCkpYy3hI&!wuqq1eC}RQQI1A)FwJ<^BQE&?L
z)V6^~TTVY;y@f5RFek0Ug5$
z(QPSHmLGE36E%!?lDar%7UM`I)!RhEViSh2_y7R@)sVY2nrp2?CVo^2f$yMQ;5mr*42ltNG(-{l&PoJgkHK6*-eKZ^f2pbPi
z;SHC43nhKPj7`oAe1RXTdqg;+YRB1?Ds?GpcpX({g=U}J2Kf851i&}`s;;Qw#d*dG
zlEFT4fmD_iV>rQ4-Y(l|m(4Py=Nj}r(SRZM;x`5VAmCF{G6Nyzdq+lJteGY@84#PH
zcfQ)>#+y~?T9*>}1?V+?R~skFcZf@fpO
z6CL-~;}BU+lpGBQo{`wnIzZKF0+(w6hT0pN+C?vavdS@g4%bB3u=IsVt@&RlC?_H$
z{0^b0^$Zzb2oc&Rs8T@3zgu#WjLD!tBXox|!{l+O)ym@>-9>Jcpp<;jAs^8DF=|9)_b0r_a
z7_y*l`w0FQ2>>G4H!Uy5MP=!Bgp>OAEM5*8&_=SUfpos~*{q6a*=CsmcfYB+CPP@zCG>8gbH4o+dz;#iOFF63f9{5bklXsj1$?N3Q2;FWG&o&Fy|!|3>Rc)z
zA%SWi25X|p6z^|lnF;!^IB)#&*@M#QtJ4}^$^OM5zFLh3uEHrbVH<2l|I4xLy8SIG0$tYoN--O~YoPaAhTe!+V1xvsXbDwJZaRM?g=M^%Z8`-(}usL9faRVlv
zIBgmjRIQPv$^}WrAURn$uKQS`^b*afxMCrat5U9F%CtTar(x1-URehZDxN$e<@IY0
zg9$f4@LLB>(qhezg#kF{g#Zvyd*zpCg~qX@^T&W};8O5l0L?1&Edwn)e_gpqUg#Qk
zv#D`IFY3WKkhe&^*-~o)@x?nGO?N;TF&CBeuROomJEO$-QK2l63!C}3U4h<2RNb5F
zO2Q62aA?{$BtN1W^yM
mgN~z(mGV&4s294L0=6Fa7cCGFRO~Bb^UsYvbt0e+&OiWL)WoI$
literal 0
HcmV?d00001
From 71f7ca0f44ae13c42d6bbaacc1b22d47f77be8ed Mon Sep 17 00:00:00 2001
From: Blankj <625783482@qq.com>
Date: Sun, 25 Aug 2019 18:03:59 +0800
Subject: [PATCH 009/138] see 08/25 log
---
.../main/java/com/blankj/utilcode/util/ActivityUtils.java | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ActivityUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ActivityUtils.java
index c2cbf103f0..e0f82eac09 100644
--- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ActivityUtils.java
+++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ActivityUtils.java
@@ -15,7 +15,6 @@
import android.support.annotation.Nullable;
import android.support.v4.app.ActivityOptionsCompat;
import android.support.v4.app.Fragment;
-import android.support.v4.app.FragmentActivity;
import android.support.v4.util.Pair;
import android.text.TextUtils;
import android.util.Log;
@@ -2026,7 +2025,7 @@ private static boolean startActivityForResult(final Intent intent,
private static Bundle getOptionsBundle(final Fragment fragment,
final int enterAnim,
final int exitAnim) {
- FragmentActivity activity = fragment.getActivity();
+ Activity activity = fragment.getActivity();
if (activity == null) return null;
return ActivityOptionsCompat.makeCustomAnimation(activity, enterAnim, exitAnim).toBundle();
}
@@ -2039,7 +2038,7 @@ private static Bundle getOptionsBundle(final Context context,
private static Bundle getOptionsBundle(final Fragment fragment,
final View[] sharedElements) {
- FragmentActivity activity = fragment.getActivity();
+ Activity activity = fragment.getActivity();
if (activity == null) return null;
return getOptionsBundle(activity, sharedElements);
}
From 29d14c8815fc76de38bb223dda201abd0462f751 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=B8=83=E5=85=B0=E6=9F=AF=E5=9F=BA?= <625783482@qq.com>
Date: Thu, 29 Aug 2019 15:04:06 +0800
Subject: [PATCH 010/138] Update android.yml
---
.github/workflows/android.yml | 17 +++++++++++++++++
1 file changed, 17 insertions(+)
create mode 100644 .github/workflows/android.yml
diff --git a/.github/workflows/android.yml b/.github/workflows/android.yml
new file mode 100644
index 0000000000..3071e5de4e
--- /dev/null
+++ b/.github/workflows/android.yml
@@ -0,0 +1,17 @@
+name: Android CI
+
+on: [push]
+
+jobs:
+ build:
+
+ runs-on: ubuntu-latest
+
+ steps:
+ - uses: actions/checkout@v1
+ - name: set up JDK 1.8
+ uses: actions/setup-java@v1
+ with:
+ java-version: 1.8
+ - name: Build with Gradle
+ run: ./gradlew build
From 2ca2c828317dfadc6aea8ff03fc05bc8453194bb Mon Sep 17 00:00:00 2001
From: Blankj <625783482@qq.com>
Date: Fri, 27 Sep 2019 11:36:27 +0800
Subject: [PATCH 011/138] see 09/27 log
---
CHANGELOG.md | 4 +-
build.gradle | 3 +
buildApp.gradle | 2 +-
buildSrc/src/main/groovy/Config.groovy | 9 +-
.../launcher/app/src/main/AndroidManifest.xml | 1 -
feature/main/pkg/src/main/AndroidManifest.xml | 1 -
.../utilcode/pkg/src/main/AndroidManifest.xml | 76 +--
.../pkg/feature/activity/ActivityActivity.kt | 11 +-
.../feature/activity/SubActivityActivity.kt | 15 +-
.../utilcode/pkg/feature/bus/BusActivity.kt | 5 -
.../pkg/feature/bus/PusNotifyData.java | 34 -
.../pkg/feature/click/ClickActivity.kt | 4 +-
.../pkg/feature/image/ImageActivity.kt | 3 -
.../feature/permission/PermissionActivity.kt | 4 +
.../pkg/feature/reflect/ReflectActivity.kt | 13 +-
.../reflect/TestPrivateStaticFinal.java | 13 +
.../pkg/feature/spStatic/SPStaticActivity.kt | 2 +
.../src/main/res/layout/activity_spstatic.xml | 7 +
.../pkg/src/main/res/values/strings.xml | 1 +
lib/base/build.gradle | 1 +
.../java/com/blankj/base/BaseActivity.java | 2 +-
.../java/com/blankj/base/BaseApplication.java | 3 +
.../main/res/drawable/base_sel_button_bg.xml | 4 +-
.../blankj/subutil/util/ClipboardUtils.java | 6 -
.../blankj/subutil/util/DangerousUtils.java | 1 -
.../blankj/subutil/util/LocationUtils.java | 3 -
.../blankj/subutil/util/http/HttpUtils.java | 2 +-
lib/utilcode/README-CN.md | 39 +-
lib/utilcode/README.md | 25 +-
lib/utilcode/src/main/AndroidManifest.xml | 2 +-
.../com/blankj/utilcode/util/AppUtils.java | 29 +-
.../com/blankj/utilcode/util/ClickUtils.java | 284 +++++++-
.../blankj/utilcode/util/ConvertUtils.java | 34 +-
.../com/blankj/utilcode/util/DialogUtils.java | 130 ++++
.../com/blankj/utilcode/util/FileUtils.java | 303 ++++-----
.../com/blankj/utilcode/util/ImageUtils.java | 59 +-
.../blankj/utilcode/util/MessengerUtils.java | 1 -
.../blankj/utilcode/util/PermissionUtils.java | 91 +--
.../blankj/utilcode/util/ProcessUtils.java | 5 -
.../blankj/utilcode/util/ReflectUtils.java | 1 +
.../blankj/utilcode/util/ResourceUtils.java | 17 +-
.../com/blankj/utilcode/util/ScreenUtils.java | 11 +
.../blankj/utilcode/util/ServiceUtils.java | 8 +-
.../com/blankj/utilcode/util/ShadowUtils.java | 224 +++++++
.../com/blankj/utilcode/util/SizeUtils.java | 16 +-
.../com/blankj/utilcode/util/ToastUtils.java | 1 -
.../com/blankj/utilcode/util/UriUtils.java | 17 +-
.../java/com/blankj/utilcode/util/Utils.java | 206 +++++-
.../com/blankj/utilcode/util/BaseTest.java | 5 +-
.../util/CacheDiskStaticUtilsTest.java | 4 +-
.../utilcode/util/CacheDiskUtilsTest.java | 8 +-
.../util/CacheDoubleStaticUtilsTest.java | 2 +-
.../utilcode/util/CacheDoubleUtilsTest.java | 2 +-
.../blankj/utilcode/util/FileUtilsTest.java | 46 +-
lib/utildebug/build.gradle | 2 +
lib/utildebug/src/main/AndroidManifest.xml | 6 +-
.../java/com/blankj/utildebug/DebugUtils.java | 116 ++++
.../base/drawable/PolygonDrawable.java | 68 ++
.../utildebug/base/drawable/ShadowUtils.java | 614 ++++++++++++++++++
.../blankj/utildebug/base/rv/BaseItem.java | 91 +++
.../utildebug/base/rv/BaseItemAdapter.java | 260 ++++++++
.../utildebug/base/rv/ItemViewHolder.java | 41 ++
.../utildebug/base/rv/RecycleViewDivider.java | 138 ++++
.../base/view/BaseContentFloatView.java | 321 +++++++++
.../utildebug/base/view/BaseContentView.java | 85 +++
.../utildebug/base/view/BaseFloatView.java | 114 ++++
.../base/view/EmptyGoneTextView.java | 40 ++
.../utildebug/base/view/FloatEditText.java | 72 ++
.../utildebug/base/view/FloatToast.java | 134 ++++
.../utildebug/base/view/FloatViewManager.java | 46 ++
.../utildebug/base/view/SearchEditText.java | 75 +++
.../utildebug/base/view/SwipeRightMenu.java | 346 ++++++++++
.../base/view/listener/OnBackListener.java | 13 +
.../base/view/listener/OnRefreshListener.java | 15 +
.../blankj/utildebug/config/DebugConfig.java | 74 +++
.../com/blankj/utildebug/debug/IDebug.java | 44 ++
.../utildebug/debug/tool/AbsToolDebug.java | 38 ++
.../debug/tool/appInfo/AppInfoDebug.java | 43 ++
.../debug/tool/appInfo/AppInfoFloatView.java | 42 ++
.../debug/tool/appInfo/AppInfoItem.java | 84 +++
.../tool/clearCache/ClearCacheDebug.java | 97 +++
.../tool/clearStorage/ClearStorageDebug.java | 40 ++
.../tool/deviceInfo/DeviceInfoDebug.java | 40 ++
.../tool/deviceInfo/DeviceInfoFloatView.java | 52 ++
.../debug/tool/deviceInfo/DeviceInfoItem.java | 94 +++
.../tool/fileExplorer/FileContentView.java | 90 +++
.../tool/fileExplorer/FileExplorerDebug.java | 40 ++
.../fileExplorer/FileExplorerFloatView.java | 30 +
.../debug/tool/fileExplorer/FileItem.java | 191 ++++++
.../tool/fileExplorer/image/ImageViewer.java | 43 ++
.../debug/tool/fileExplorer/sp/SpItem.java | 141 ++++
.../fileExplorer/sp/SpModifyContentView.java | 88 +++
.../fileExplorer/sp/SpViewerContentView.java | 90 +++
.../tool/fileExplorer/text/TextViewer.java | 14 +
.../debug/tool/logcat/LogcatDebug.java | 38 ++
.../tool/restartApp/RestartAppDebug.java | 39 ++
.../blankj/utildebug/helper/FileHelper.java | 57 ++
.../blankj/utildebug/helper/ImageLoader.java | 45 ++
.../blankj/utildebug/helper/ShadowHelper.java | 42 ++
.../com/blankj/utildebug/helper/SpHelper.java | 75 +++
.../blankj/utildebug/helper/TouchHelper.java | 220 +++++++
.../blankj/utildebug/helper/WindowHelper.java | 48 ++
.../com/blankj/utildebug/icon/DebugIcon.java | 115 ++++
.../com/blankj/utildebug/menu/DebugItem.java | 77 +++
.../com/blankj/utildebug/menu/DebugMenu.java | 74 +++
.../blankj/utildebug/menu/DebugMenuItem.java | 87 +++
.../blankj/utildebug/menu/ReminderView.java | 43 ++
lib/utildebug/src/main/res/anim/float_in.xml | 18 +
lib/utildebug/src/main/res/anim/float_out.xml | 18 +
.../du_ic_debug_app_info_default.png | Bin 0 -> 1149 bytes
.../du_ic_debug_clear_cache.png | Bin 0 -> 1417 bytes
.../du_ic_debug_clear_storage.png | Bin 0 -> 777 bytes
.../du_ic_debug_device_info.png | Bin 0 -> 565 bytes
.../du_ic_debug_file_explorer.png | Bin 0 -> 649 bytes
.../drawable-xxhdpi/du_ic_debug_logcat.png | Bin 0 -> 15726 bytes
.../du_ic_debug_restart_app.png | Bin 0 -> 1691 bytes
.../drawable-xxhdpi/du_ic_icon_default.png | Bin 0 -> 2793 bytes
.../du_ic_item_file_default.png | Bin 0 -> 16747 bytes
.../drawable-xxhdpi/du_ic_item_file_sp.png | Bin 0 -> 17026 bytes
.../drawable-xxhdpi/du_ic_item_file_utf8.png | Bin 0 -> 16997 bytes
.../res/drawable-xxhdpi/du_ic_item_go.png | Bin 0 -> 706 bytes
.../res/drawable-xxhdpi/du_ic_reminder.png | Bin 0 -> 3216 bytes
.../res/drawable-xxhdpi/du_ic_swipe_back.png | Bin 0 -> 745 bytes
.../drawable-xxhdpi/du_ic_swipe_refresh.png | Bin 0 -> 1284 bytes
.../du_ic_title_bar_adjustable.png | Bin 0 -> 15258 bytes
.../drawable-xxhdpi/du_ic_title_bar_close.png | Bin 0 -> 278 bytes
.../res/drawable-xxhdpi/du_ic_toast_error.png | Bin 0 -> 1630 bytes
.../drawable-xxhdpi/du_ic_toast_success.png | Bin 0 -> 1362 bytes
.../res/drawable-xxhdpi/du_ic_toast_warn.png | Bin 0 -> 1376 bytes
.../main/res/drawable/du_rotate_refresh.xml | 8 +
.../src/main/res/drawable/du_sel_et_bg.xml | 16 +
.../res/drawable/du_shape_base_float_bg.xml | 5 +
.../du_shape_base_float_title_adjust_bg.xml | 6 +
.../drawable/du_shape_base_float_title_bg.xml | 7 +
.../du_shape_base_float_title_close_bg.xml | 6 +
.../src/main/res/drawable/du_shape_btn.xml | 6 +
.../main/res/drawable/du_shape_divider.xml | 6 +
.../res/drawable/du_shape_file_divider.xml | 9 +
.../main/res/drawable/du_shape_input_bg.xml | 6 +
.../res/drawable/du_shape_item_menu_bg.xml | 5 +
.../res/drawable/du_shape_positive_btn.xml | 6 +
.../src/main/res/drawable/du_shape_shadow.xml | 7 +
.../src/main/res/drawable/du_shape_toast.xml | 6 +
.../src/main/res/drawable/du_switch_thumb.xml | 11 +
.../src/main/res/drawable/du_switch_track.xml | 17 +
.../main/res/layout/du_base_content_float.xml | 80 +++
.../src/main/res/layout/du_debug_app_info.xml | 6 +
.../main/res/layout/du_debug_device_info.xml | 6 +
.../res/layout/du_debug_file_explorer.xml | 26 +
.../layout/du_debug_file_explorer_image.xml | 12 +
.../res/layout/du_debug_file_explorer_sp.xml | 39 ++
.../du_debug_file_explorer_sp_modify.xml | 66 ++
.../src/main/res/layout/du_debug_icon.xml | 10 +
.../src/main/res/layout/du_debug_menu.xml | 6 +
.../src/main/res/layout/du_float_toast.xml | 29 +
.../src/main/res/layout/du_item_base_info.xml | 54 ++
.../src/main/res/layout/du_item_empty.xml | 14 +
.../src/main/res/layout/du_item_file.xml | 66 ++
.../src/main/res/layout/du_item_menu.xml | 33 +
.../src/main/res/layout/du_item_menu_item.xml | 28 +
.../src/main/res/layout/du_item_sp.xml | 69 ++
.../src/main/res/layout/du_reminder_view.xml | 34 +
.../src/main/res/values-zh-rCN/strings.xml | 57 ++
lib/utildebug/src/main/res/values/colors.xml | 62 ++
lib/utildebug/src/main/res/values/dimens.xml | 9 +
lib/utildebug/src/main/res/values/ids.xml | 5 +
lib/utildebug/src/main/res/values/strings.xml | 54 ++
lib/utildebug/src/main/res/values/styles.xml | 38 ++
.../src/main/res/values/values-cardview.xml | 54 ++
169 files changed, 7226 insertions(+), 526 deletions(-)
delete mode 100644 feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/bus/PusNotifyData.java
create mode 100644 feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/reflect/TestPrivateStaticFinal.java
create mode 100644 lib/utilcode/src/main/java/com/blankj/utilcode/util/DialogUtils.java
create mode 100644 lib/utilcode/src/main/java/com/blankj/utilcode/util/ShadowUtils.java
create mode 100644 lib/utildebug/src/main/java/com/blankj/utildebug/DebugUtils.java
create mode 100644 lib/utildebug/src/main/java/com/blankj/utildebug/base/drawable/PolygonDrawable.java
create mode 100644 lib/utildebug/src/main/java/com/blankj/utildebug/base/drawable/ShadowUtils.java
create mode 100644 lib/utildebug/src/main/java/com/blankj/utildebug/base/rv/BaseItem.java
create mode 100644 lib/utildebug/src/main/java/com/blankj/utildebug/base/rv/BaseItemAdapter.java
create mode 100644 lib/utildebug/src/main/java/com/blankj/utildebug/base/rv/ItemViewHolder.java
create mode 100644 lib/utildebug/src/main/java/com/blankj/utildebug/base/rv/RecycleViewDivider.java
create mode 100644 lib/utildebug/src/main/java/com/blankj/utildebug/base/view/BaseContentFloatView.java
create mode 100644 lib/utildebug/src/main/java/com/blankj/utildebug/base/view/BaseContentView.java
create mode 100644 lib/utildebug/src/main/java/com/blankj/utildebug/base/view/BaseFloatView.java
create mode 100644 lib/utildebug/src/main/java/com/blankj/utildebug/base/view/EmptyGoneTextView.java
create mode 100644 lib/utildebug/src/main/java/com/blankj/utildebug/base/view/FloatEditText.java
create mode 100644 lib/utildebug/src/main/java/com/blankj/utildebug/base/view/FloatToast.java
create mode 100644 lib/utildebug/src/main/java/com/blankj/utildebug/base/view/FloatViewManager.java
create mode 100644 lib/utildebug/src/main/java/com/blankj/utildebug/base/view/SearchEditText.java
create mode 100644 lib/utildebug/src/main/java/com/blankj/utildebug/base/view/SwipeRightMenu.java
create mode 100644 lib/utildebug/src/main/java/com/blankj/utildebug/base/view/listener/OnBackListener.java
create mode 100644 lib/utildebug/src/main/java/com/blankj/utildebug/base/view/listener/OnRefreshListener.java
create mode 100644 lib/utildebug/src/main/java/com/blankj/utildebug/config/DebugConfig.java
create mode 100644 lib/utildebug/src/main/java/com/blankj/utildebug/debug/IDebug.java
create mode 100644 lib/utildebug/src/main/java/com/blankj/utildebug/debug/tool/AbsToolDebug.java
create mode 100644 lib/utildebug/src/main/java/com/blankj/utildebug/debug/tool/appInfo/AppInfoDebug.java
create mode 100644 lib/utildebug/src/main/java/com/blankj/utildebug/debug/tool/appInfo/AppInfoFloatView.java
create mode 100644 lib/utildebug/src/main/java/com/blankj/utildebug/debug/tool/appInfo/AppInfoItem.java
create mode 100644 lib/utildebug/src/main/java/com/blankj/utildebug/debug/tool/clearCache/ClearCacheDebug.java
create mode 100644 lib/utildebug/src/main/java/com/blankj/utildebug/debug/tool/clearStorage/ClearStorageDebug.java
create mode 100644 lib/utildebug/src/main/java/com/blankj/utildebug/debug/tool/deviceInfo/DeviceInfoDebug.java
create mode 100644 lib/utildebug/src/main/java/com/blankj/utildebug/debug/tool/deviceInfo/DeviceInfoFloatView.java
create mode 100644 lib/utildebug/src/main/java/com/blankj/utildebug/debug/tool/deviceInfo/DeviceInfoItem.java
create mode 100644 lib/utildebug/src/main/java/com/blankj/utildebug/debug/tool/fileExplorer/FileContentView.java
create mode 100644 lib/utildebug/src/main/java/com/blankj/utildebug/debug/tool/fileExplorer/FileExplorerDebug.java
create mode 100644 lib/utildebug/src/main/java/com/blankj/utildebug/debug/tool/fileExplorer/FileExplorerFloatView.java
create mode 100644 lib/utildebug/src/main/java/com/blankj/utildebug/debug/tool/fileExplorer/FileItem.java
create mode 100644 lib/utildebug/src/main/java/com/blankj/utildebug/debug/tool/fileExplorer/image/ImageViewer.java
create mode 100644 lib/utildebug/src/main/java/com/blankj/utildebug/debug/tool/fileExplorer/sp/SpItem.java
create mode 100644 lib/utildebug/src/main/java/com/blankj/utildebug/debug/tool/fileExplorer/sp/SpModifyContentView.java
create mode 100644 lib/utildebug/src/main/java/com/blankj/utildebug/debug/tool/fileExplorer/sp/SpViewerContentView.java
create mode 100644 lib/utildebug/src/main/java/com/blankj/utildebug/debug/tool/fileExplorer/text/TextViewer.java
create mode 100644 lib/utildebug/src/main/java/com/blankj/utildebug/debug/tool/logcat/LogcatDebug.java
create mode 100644 lib/utildebug/src/main/java/com/blankj/utildebug/debug/tool/restartApp/RestartAppDebug.java
create mode 100644 lib/utildebug/src/main/java/com/blankj/utildebug/helper/FileHelper.java
create mode 100644 lib/utildebug/src/main/java/com/blankj/utildebug/helper/ImageLoader.java
create mode 100644 lib/utildebug/src/main/java/com/blankj/utildebug/helper/ShadowHelper.java
create mode 100644 lib/utildebug/src/main/java/com/blankj/utildebug/helper/SpHelper.java
create mode 100755 lib/utildebug/src/main/java/com/blankj/utildebug/helper/TouchHelper.java
create mode 100644 lib/utildebug/src/main/java/com/blankj/utildebug/helper/WindowHelper.java
create mode 100644 lib/utildebug/src/main/java/com/blankj/utildebug/icon/DebugIcon.java
create mode 100644 lib/utildebug/src/main/java/com/blankj/utildebug/menu/DebugItem.java
create mode 100644 lib/utildebug/src/main/java/com/blankj/utildebug/menu/DebugMenu.java
create mode 100644 lib/utildebug/src/main/java/com/blankj/utildebug/menu/DebugMenuItem.java
create mode 100644 lib/utildebug/src/main/java/com/blankj/utildebug/menu/ReminderView.java
create mode 100755 lib/utildebug/src/main/res/anim/float_in.xml
create mode 100755 lib/utildebug/src/main/res/anim/float_out.xml
create mode 100644 lib/utildebug/src/main/res/drawable-xxhdpi/du_ic_debug_app_info_default.png
create mode 100644 lib/utildebug/src/main/res/drawable-xxhdpi/du_ic_debug_clear_cache.png
create mode 100644 lib/utildebug/src/main/res/drawable-xxhdpi/du_ic_debug_clear_storage.png
create mode 100644 lib/utildebug/src/main/res/drawable-xxhdpi/du_ic_debug_device_info.png
create mode 100644 lib/utildebug/src/main/res/drawable-xxhdpi/du_ic_debug_file_explorer.png
create mode 100644 lib/utildebug/src/main/res/drawable-xxhdpi/du_ic_debug_logcat.png
create mode 100644 lib/utildebug/src/main/res/drawable-xxhdpi/du_ic_debug_restart_app.png
create mode 100644 lib/utildebug/src/main/res/drawable-xxhdpi/du_ic_icon_default.png
create mode 100644 lib/utildebug/src/main/res/drawable-xxhdpi/du_ic_item_file_default.png
create mode 100644 lib/utildebug/src/main/res/drawable-xxhdpi/du_ic_item_file_sp.png
create mode 100644 lib/utildebug/src/main/res/drawable-xxhdpi/du_ic_item_file_utf8.png
create mode 100644 lib/utildebug/src/main/res/drawable-xxhdpi/du_ic_item_go.png
create mode 100644 lib/utildebug/src/main/res/drawable-xxhdpi/du_ic_reminder.png
create mode 100644 lib/utildebug/src/main/res/drawable-xxhdpi/du_ic_swipe_back.png
create mode 100644 lib/utildebug/src/main/res/drawable-xxhdpi/du_ic_swipe_refresh.png
create mode 100644 lib/utildebug/src/main/res/drawable-xxhdpi/du_ic_title_bar_adjustable.png
create mode 100644 lib/utildebug/src/main/res/drawable-xxhdpi/du_ic_title_bar_close.png
create mode 100644 lib/utildebug/src/main/res/drawable-xxhdpi/du_ic_toast_error.png
create mode 100644 lib/utildebug/src/main/res/drawable-xxhdpi/du_ic_toast_success.png
create mode 100644 lib/utildebug/src/main/res/drawable-xxhdpi/du_ic_toast_warn.png
create mode 100644 lib/utildebug/src/main/res/drawable/du_rotate_refresh.xml
create mode 100644 lib/utildebug/src/main/res/drawable/du_sel_et_bg.xml
create mode 100644 lib/utildebug/src/main/res/drawable/du_shape_base_float_bg.xml
create mode 100644 lib/utildebug/src/main/res/drawable/du_shape_base_float_title_adjust_bg.xml
create mode 100644 lib/utildebug/src/main/res/drawable/du_shape_base_float_title_bg.xml
create mode 100644 lib/utildebug/src/main/res/drawable/du_shape_base_float_title_close_bg.xml
create mode 100644 lib/utildebug/src/main/res/drawable/du_shape_btn.xml
create mode 100755 lib/utildebug/src/main/res/drawable/du_shape_divider.xml
create mode 100755 lib/utildebug/src/main/res/drawable/du_shape_file_divider.xml
create mode 100644 lib/utildebug/src/main/res/drawable/du_shape_input_bg.xml
create mode 100644 lib/utildebug/src/main/res/drawable/du_shape_item_menu_bg.xml
create mode 100644 lib/utildebug/src/main/res/drawable/du_shape_positive_btn.xml
create mode 100644 lib/utildebug/src/main/res/drawable/du_shape_shadow.xml
create mode 100644 lib/utildebug/src/main/res/drawable/du_shape_toast.xml
create mode 100644 lib/utildebug/src/main/res/drawable/du_switch_thumb.xml
create mode 100644 lib/utildebug/src/main/res/drawable/du_switch_track.xml
create mode 100644 lib/utildebug/src/main/res/layout/du_base_content_float.xml
create mode 100644 lib/utildebug/src/main/res/layout/du_debug_app_info.xml
create mode 100644 lib/utildebug/src/main/res/layout/du_debug_device_info.xml
create mode 100644 lib/utildebug/src/main/res/layout/du_debug_file_explorer.xml
create mode 100644 lib/utildebug/src/main/res/layout/du_debug_file_explorer_image.xml
create mode 100644 lib/utildebug/src/main/res/layout/du_debug_file_explorer_sp.xml
create mode 100644 lib/utildebug/src/main/res/layout/du_debug_file_explorer_sp_modify.xml
create mode 100644 lib/utildebug/src/main/res/layout/du_debug_icon.xml
create mode 100644 lib/utildebug/src/main/res/layout/du_debug_menu.xml
create mode 100644 lib/utildebug/src/main/res/layout/du_float_toast.xml
create mode 100644 lib/utildebug/src/main/res/layout/du_item_base_info.xml
create mode 100644 lib/utildebug/src/main/res/layout/du_item_empty.xml
create mode 100644 lib/utildebug/src/main/res/layout/du_item_file.xml
create mode 100644 lib/utildebug/src/main/res/layout/du_item_menu.xml
create mode 100644 lib/utildebug/src/main/res/layout/du_item_menu_item.xml
create mode 100644 lib/utildebug/src/main/res/layout/du_item_sp.xml
create mode 100644 lib/utildebug/src/main/res/layout/du_reminder_view.xml
create mode 100644 lib/utildebug/src/main/res/values-zh-rCN/strings.xml
create mode 100644 lib/utildebug/src/main/res/values/colors.xml
create mode 100644 lib/utildebug/src/main/res/values/dimens.xml
create mode 100644 lib/utildebug/src/main/res/values/ids.xml
create mode 100644 lib/utildebug/src/main/res/values/styles.xml
create mode 100644 lib/utildebug/src/main/res/values/values-cardview.xml
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 99103073e6..fde5dc6305 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,4 +1,6 @@
-* `19/08/25` [upd] ImageUtils#getImageType. [add] LogUtils# Publish v1.25.9.
+* `19/08/27` [add] DebugUtils.
+* `19/08/26` [fix] PermissionUtils NPE.
+* `19/08/25` [upd] ImageUtils#getImageType. [add] LogUtils#getLogFiles. Publish v1.25.9.
* `19/08/24` [fix] PhoneUtils#getIMEI crash on SDK 29.
* `19/08/23` [add] ViewUtils#isLayoutRtl.
* `19/08/22` [add] LogUtils#getLogFiles.
diff --git a/build.gradle b/build.gradle
index f03d8e43b9..1a9f672d5a 100644
--- a/build.gradle
+++ b/build.gradle
@@ -44,6 +44,9 @@ allprojects {
url 'https://maven.aliyun.com/repository/google'
name 'replace google()'
}
+ maven {
+ url "https://jitpack.io"
+ }
google()
jcenter()
}
diff --git a/buildApp.gradle b/buildApp.gradle
index 9a24f2e23c..beb59b4a42 100644
--- a/buildApp.gradle
+++ b/buildApp.gradle
@@ -16,7 +16,7 @@ configApkName()
android {
compileSdkVersion Config.compileSdkVersion
defaultConfig {
- minSdkVersion 16
+ minSdkVersion Config.minSdkVersion
versionCode Config.versionCode
versionName Config.versionName
applicationId Config.applicationId + suffix
diff --git a/buildSrc/src/main/groovy/Config.groovy b/buildSrc/src/main/groovy/Config.groovy
index 4335dca9b0..a190b4f409 100644
--- a/buildSrc/src/main/groovy/Config.groovy
+++ b/buildSrc/src/main/groovy/Config.groovy
@@ -12,10 +12,10 @@ class Config {
static appName = 'Util'
static compileSdkVersion = 28
- static minSdkVersion = 14
+ static minSdkVersion = 16
static targetSdkVersion = 28
- static versionCode = 1_025_009
- static versionName = '1.25.9'// E.g. 1.9.72 => 1,009,072
+ static versionCode = 1_025_010
+ static versionName = '1.25.10-alpha3'// E.g. 1.9.72 => 1,009,072
// lib version
static kotlin_version = '1.3.10'
@@ -94,7 +94,7 @@ class Config {
],
free_proguard : new DepConfig("com.blankj:free-proguard:1.0.1"),
- swipe_panel : new DepConfig("com.blankj:swipe-panel:1.1"),
+ swipe_panel : new DepConfig("com.blankj:swipe-panel:1.2"),
gson : new DepConfig("com.google.code.gson:gson:2.8.2"),
glide : new DepConfig("com.github.bumptech.glide:glide:4.7.1"),
@@ -104,6 +104,7 @@ class Config {
lib : new DepConfig("org.greenrobot:eventbus:3.1.1"),
processor: new DepConfig("org.greenrobot:eventbus-annotation-processor:3.0.1")
],
+ photo_view : new DepConfig("com.github.chrisbanes:PhotoView:2.0.0"),
test : [
junit : new DepConfig("junit:junit:4.12"),
diff --git a/feature/launcher/app/src/main/AndroidManifest.xml b/feature/launcher/app/src/main/AndroidManifest.xml
index 6dcd3ec787..b683051e68 100644
--- a/feature/launcher/app/src/main/AndroidManifest.xml
+++ b/feature/launcher/app/src/main/AndroidManifest.xml
@@ -12,7 +12,6 @@
diff --git a/feature/main/pkg/src/main/AndroidManifest.xml b/feature/main/pkg/src/main/AndroidManifest.xml
index ef0cc7c15a..5edb00cecb 100644
--- a/feature/main/pkg/src/main/AndroidManifest.xml
+++ b/feature/main/pkg/src/main/AndroidManifest.xml
@@ -5,7 +5,6 @@
diff --git a/feature/utilcode/pkg/src/main/AndroidManifest.xml b/feature/utilcode/pkg/src/main/AndroidManifest.xml
index 26f28c9a8f..23a299de22 100644
--- a/feature/utilcode/pkg/src/main/AndroidManifest.xml
+++ b/feature/utilcode/pkg/src/main/AndroidManifest.xml
@@ -1,6 +1,44 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/activity/ActivityActivity.kt b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/activity/ActivityActivity.kt
index efec7a0abc..bd7e544ad3 100644
--- a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/activity/ActivityActivity.kt
+++ b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/activity/ActivityActivity.kt
@@ -14,6 +14,7 @@ import com.blankj.utilcode.pkg.R
import com.blankj.utilcode.pkg.feature.CoreUtilActivity
import com.blankj.utilcode.util.ActivityUtils
import com.blankj.utilcode.util.AppUtils
+import com.blankj.utilcode.util.LogUtils
import com.blankj.utilcode.util.SpanUtils
import kotlinx.android.synthetic.main.activity_activity.*
import java.util.*
@@ -166,7 +167,10 @@ class ActivityActivity : CommonTitleActivity() {
R.id.activityStartLauncherActivityBtn -> ActivityUtils.startLauncherActivity()
R.id.activityFinishActivityBtn -> ActivityUtils.finishActivity(CoreUtilActivity::class.java)
R.id.activityFinishToActivityBtn -> ActivityUtils.finishToActivity(CoreUtilActivity::class.java, false, true)
- R.id.activityFinishAllActivitiesBtn -> ActivityUtils.finishAllActivities()
+ R.id.activityFinishAllActivitiesBtn -> {
+// ActivityUtils.finishAllActivities()
+ ActivityUtils.startActivityForResult(Bundle(), this, SubActivityActivity::class.java, 10)
+ }
}
}
@@ -197,4 +201,9 @@ class ActivityActivity : CommonTitleActivity() {
else -> return null
}
}
+
+ override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
+ super.onActivityResult(requestCode, resultCode, data)
+ LogUtils.e(requestCode, resultCode, data)
+ }
}
diff --git a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/activity/SubActivityActivity.kt b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/activity/SubActivityActivity.kt
index 0d2bc4bf45..b20ed2e2ac 100644
--- a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/activity/SubActivityActivity.kt
+++ b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/activity/SubActivityActivity.kt
@@ -1,13 +1,16 @@
package com.blankj.utilcode.pkg.feature.activity
+import android.app.Activity
+import android.content.Intent
import android.os.Build
import android.os.Bundle
import android.support.v4.app.ActivityCompat
import android.view.View
import android.view.Window
import com.blankj.common.CommonTitleActivity
-import com.blankj.utilcode.pkg.R
import com.blankj.utilcode.util.ColorUtils
+import kotlinx.android.synthetic.main.activity_activity_sub.*
+
/**
* ```
@@ -25,15 +28,21 @@ class SubActivityActivity : CommonTitleActivity() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
window.requestFeature(Window.FEATURE_CONTENT_TRANSITIONS)
}
- return R.layout.activity_activity_sub
+ return com.blankj.utilcode.pkg.R.layout.activity_activity_sub
}
override fun bindTitle(): String {
- return getString(R.string.demo_activity)
+ return getString(com.blankj.utilcode.pkg.R.string.demo_activity)
}
override fun initView(savedInstanceState: Bundle?, contentView: View?) {
contentView?.setBackgroundColor(ColorUtils.getRandomColor(false))
+ activityViewSharedElement.setOnClickListener(View.OnClickListener {
+ val result = Intent()
+ result.putExtra("data", "data")
+ this@SubActivityActivity.setResult(Activity.RESULT_OK, result)
+ this@SubActivityActivity.finish()
+ })
}
override fun doBusiness() {}
diff --git a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/bus/BusActivity.kt b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/bus/BusActivity.kt
index 06623c179d..0c968277db 100644
--- a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/bus/BusActivity.kt
+++ b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/bus/BusActivity.kt
@@ -55,11 +55,6 @@ class BusActivity : CommonTitleActivity() {
})
}
- @BusUtils.Bus(tag = "_PusNotifyData", sticky = true, threadMode = BusUtils.ThreadMode.MAIN)
- fun onPusNotifyData(pusNotifyData: PusNotifyData) {
- LogUtils.e("haha")
- }
-
companion object {
const val TAG_BASIC_TYPE = "tag_basic_type"
const val TAG_BUS = "tag_bus"
diff --git a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/bus/PusNotifyData.java b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/bus/PusNotifyData.java
deleted file mode 100644
index 5a8fa1692a..0000000000
--- a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/bus/PusNotifyData.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package com.blankj.utilcode.pkg.feature.bus;
-
-import java.io.Serializable;
-
-/**
- *
- * author: blankj
- * blog : http://blankj.com
- * time : 2019/08/08
- * desc :
- *
- */
-public class PusNotifyData implements Serializable {
-
- private String pushType;
- private String pushID;
-
- public String getPushType() {
- return pushType;
- }
-
- public void setPushType(String pushType) {
- this.pushType = pushType;
- }
-
- public String getPushID() {
- return pushID;
- }
-
- public void setPushID(String pushID) {
- this.pushID = pushID;
- }
-
-}
diff --git a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/click/ClickActivity.kt b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/click/ClickActivity.kt
index fa9e372df2..ea23ca3758 100644
--- a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/click/ClickActivity.kt
+++ b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/click/ClickActivity.kt
@@ -45,8 +45,8 @@ class ClickActivity : CommonTitleActivity() {
clickMultiBtn
)
- ClickUtils.applyScale(clickScaleDefaultBtn)
- ClickUtils.applyScale(arrayOf(clickScaleCustomBtn), floatArrayOf(-0.5f))
+ ClickUtils.applyPressedViewScale(clickScaleDefaultBtn)
+ ClickUtils.applyPressedViewScale(arrayOf(clickScaleCustomBtn), floatArrayOf(-0.5f))
ClickUtils.applySingleDebouncing(clickSingleDebouncingBtn, 5000) {
SnackbarUtils.with(mContentView)
.setMessage(StringUtils.getString(R.string.click_single_tip))
diff --git a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/image/ImageActivity.kt b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/image/ImageActivity.kt
index 2f2abef58e..9e6995fe48 100644
--- a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/image/ImageActivity.kt
+++ b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/image/ImageActivity.kt
@@ -73,15 +73,12 @@ class ImageActivity : CommonTaskActivity>() {
}
add(ImageCell(R.string.image_stack_blur, ImageUtils.stackBlur(src, 10)))
add(ImageCell(R.string.image_compress_by_scale, ImageUtils.compressByScale(src, 0.5f, 0.5f)))
- add(ImageCell(R.string.image_compress_by_quality_half, ImageUtils.compressByQuality(src, 50)))
- add(ImageCell(R.string.image_compress_by_quality_max_size, ImageUtils.compressByQuality(src, 10L * 1024)))// 10Kb
add(ImageCell(R.string.image_compress_by_sample_size, ImageUtils.compressBySampleSize(src, 2)))
}
}
override fun runOnUiThread(data: List) {
val imageAdapter = BaseItemAdapter()
- imageAdapter.setHasStableIds(true)
imageAdapter.items = data
imageRv.adapter = imageAdapter
imageRv.layoutManager = LinearLayoutManager(this@ImageActivity)
diff --git a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/permission/PermissionActivity.kt b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/permission/PermissionActivity.kt
index 4c18223701..ff6a42939f 100644
--- a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/permission/PermissionActivity.kt
+++ b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/permission/PermissionActivity.kt
@@ -94,6 +94,7 @@ class PermissionActivity : CommonTitleActivity() {
return
}
requestCalendar()
+ ToastUtils.showLong("Calendar Denied")
}
})
.theme { activity -> ScreenUtils.setFullScreen(activity) }
@@ -117,6 +118,7 @@ class PermissionActivity : CommonTitleActivity() {
return
}
requestRecordAudio()
+ ToastUtils.showLong("RecordAudio Denied")
}
})
.request()
@@ -139,6 +141,7 @@ class PermissionActivity : CommonTitleActivity() {
return
}
requestCalendarAndRecordAudio()
+ ToastUtils.showLong("Calendar or RecordAudio Denied")
}
})
.request()
@@ -184,5 +187,6 @@ class PermissionActivity : CommonTitleActivity() {
appendLine("DRAW_OVERLAYS: " + PermissionUtils.isGrantedDrawOverlays())
}
}
+ .create()
}
}
diff --git a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/reflect/ReflectActivity.kt b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/reflect/ReflectActivity.kt
index 72a5cc3ee0..654d6df729 100644
--- a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/reflect/ReflectActivity.kt
+++ b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/reflect/ReflectActivity.kt
@@ -6,6 +6,7 @@ import android.os.Bundle
import android.view.View
import com.blankj.common.CommonTitleActivity
import com.blankj.utilcode.pkg.R
+import com.blankj.utilcode.util.LogUtils
import com.blankj.utilcode.util.ReflectUtils
import com.blankj.utilcode.util.SpanUtils
import kotlinx.android.synthetic.main.activity_reflect.*
@@ -38,10 +39,12 @@ class ReflectActivity : CommonTitleActivity() {
}
override fun initView(savedInstanceState: Bundle?, contentView: View?) {
+ LogUtils.e(TestPrivateStaticFinal.STR)
SpanUtils.with(reflectAboutTv)
- .appendLine("before reflect: " + ReflectUtils.reflect(TestPrivateStaticFinal::class.java).field("I1").get())
- .append("after reflect: " + ReflectUtils.reflect(TestPrivateStaticFinal::class.java).field("I1", 2).field("I1").get())
+ .appendLine("before reflect: " + ReflectUtils.reflect(TestPrivateStaticFinal::class.java).field("STR").get())
+ .append("after reflect: " + ReflectUtils.reflect(TestPrivateStaticFinal::class.java).field("STR", "reflect success").field("STR").get())
.create()
+ LogUtils.e(TestPrivateStaticFinal.STR)
}
override fun doBusiness() {}
@@ -49,11 +52,7 @@ class ReflectActivity : CommonTitleActivity() {
override fun onDebouncingClick(view: View) {}
override fun onDestroy() {
- ReflectUtils.reflect(TestPrivateStaticFinal::class.java).field("I1", 1)
+// ReflectUtils.reflect(TestPrivateStaticFinal::class.java).field("STR", "str")
super.onDestroy()
}
}
-
-object TestPrivateStaticFinal {
- val I1 = 1
-}
diff --git a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/reflect/TestPrivateStaticFinal.java b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/reflect/TestPrivateStaticFinal.java
new file mode 100644
index 0000000000..33c921b6bc
--- /dev/null
+++ b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/reflect/TestPrivateStaticFinal.java
@@ -0,0 +1,13 @@
+package com.blankj.utilcode.pkg.feature.reflect;
+
+/**
+ *
+ * author: blankj
+ * blog : http://blankj.com
+ * time : 2019/09/09
+ * desc :
+ *
+ */
+public class TestPrivateStaticFinal {
+ public static final String STR = "str";
+}
diff --git a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/spStatic/SPStaticActivity.kt b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/spStatic/SPStaticActivity.kt
index 85b0f6f7be..2a51965c81 100644
--- a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/spStatic/SPStaticActivity.kt
+++ b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/spStatic/SPStaticActivity.kt
@@ -55,6 +55,7 @@ class SPStaticActivity : CommonTitleActivity() {
spStaticPutLongBtn,
spPutFloatBtn,
spStaticPutBooleanBtn,
+ spStaticPutStringSetBtn,
spStaticClearBtn
)
}
@@ -70,6 +71,7 @@ class SPStaticActivity : CommonTitleActivity() {
R.id.spStaticPutLongBtn -> SPStaticUtils.put("LONG", java.lang.Long.MAX_VALUE)
R.id.spPutFloatBtn -> SPStaticUtils.put("FLOAT", Math.PI.toFloat())
R.id.spStaticPutBooleanBtn -> SPStaticUtils.put("BOOLEAN", true)
+ R.id.spStaticPutStringSetBtn -> SPStaticUtils.put("SET", setOf("1", "2"))
R.id.spStaticClearBtn -> SPStaticUtils.clear()
}
updateAboutSp()
diff --git a/feature/utilcode/pkg/src/main/res/layout/activity_spstatic.xml b/feature/utilcode/pkg/src/main/res/layout/activity_spstatic.xml
index 52f68eaf27..8272e5b42a 100644
--- a/feature/utilcode/pkg/src/main/res/layout/activity_spstatic.xml
+++ b/feature/utilcode/pkg/src/main/res/layout/activity_spstatic.xml
@@ -50,6 +50,13 @@
android:layout_height="wrap_content"
android:text="@string/sp_put_boolean" />
+
+