diff --git a/CHANGELOG.md b/CHANGELOG.md index 8059920565ddd66683a95da81eb8f645d061f77c..22d3624b178e1f62632cdb5c234a9bd71b7ab3c9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,6 @@ +* `19/01/29` [fix] LogUtils format json when json not start with '{'. Publish v1.23.3. +* `19/01/28` [fix] KeyboardUtils#fixSoftInputLeaks don't work on the device of HuaWei. +* `19/01/26` [fix] NetworkUtils#getNetworkType. * `19/01/25` [add] CloneUtils, PermissionUtils support request permission of WRITE_SETTINGS and DRAW_OVERLAYS. Publish v1.23.2. * `19/01/24` [add] BrightnessUtils and FlashlightUtils. * `19/01/23` [add] Modify the demo of utilcode use kotlin. Publish v1.23.1. diff --git a/README-CN.md b/README-CN.md index 97ab28c0b6e446712fa82b6301d8f98c390cac65..1054fb665e093e8fe086466f29b114e3e51b3568 100644 --- a/README-CN.md +++ b/README-CN.md @@ -41,7 +41,7 @@ [logo]: https://raw.githubusercontent.com/Blankj/AndroidUtilCode/master/art/logo.png -[aucSvg]: https://img.shields.io/badge/AndroidUtilCode-v1.23.2-brightgreen.svg +[aucSvg]: https://img.shields.io/badge/AndroidUtilCode-v1.23.3-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 1a516c8b4ec26501bb0fa71dce60fec90cb1e18d..a9831c052c936500cc326dfe4498e51ae50aa3b6 100644 --- a/README.md +++ b/README.md @@ -41,7 +41,7 @@ If this project helps you a lot and you want to support the project's developmen [logo]: https://raw.githubusercontent.com/Blankj/AndroidUtilCode/master/art/logo.png -[aucSvg]: https://img.shields.io/badge/AndroidUtilCode-v1.23.2-brightgreen.svg +[aucSvg]: https://img.shields.io/badge/AndroidUtilCode-v1.23.3-brightgreen.svg [auc]: https://github.com/Blankj/AndroidUtilCode [apiSvg]: https://img.shields.io/badge/API-14+-brightgreen.svg diff --git a/config.gradle b/config.gradle index be1aa3ae44d41fbd199b95a37e43a0a508dda493..34980b47590136637a7772199102b3a5971f0686 100644 --- a/config.gradle +++ b/config.gradle @@ -5,8 +5,8 @@ ext { compileSdkVersion = 27 minSdkVersion = 14 targetSdkVersion = 27 - versionCode = 1_023_002 - versionName = '1.23.2'// E.g. 1.9.72 => 1,009,072 + versionCode = 1_023_003 + versionName = '1.23.3'// E.g. 1.9.72 => 1,009,072 bus = [ isDebug: false, @@ -17,7 +17,7 @@ ext { // lib version kotlin_version = '1.3.0' support_version = '27.1.1' - leakcanary_version = '1.5.4' + leakcanary_version = '1.6.3' dep = [ plugin : [ @@ -38,8 +38,9 @@ ext { constraint : "com.android.support.constraint:constraint-layout: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", + 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", adapt_screen : "com.blankj:adapt-screen:0.0.3", diff --git a/config_app.gradle b/config_app.gradle index d2e0ce27338f40ae8e191e8a3081c696163c606b..b85c8b5f8583af6e5e774579d94db545de90dc8b 100644 --- a/config_app.gradle +++ b/config_app.gradle @@ -40,6 +40,7 @@ android { dependencies { // LeakCanary debugImplementation dep.leakcanary.android + debugImplementation dep.leakcanary.support_fragment releaseImplementation dep.leakcanary.android_no_op } diff --git a/lib/base/build.gradle b/lib/base/build.gradle index 1d1e325c490afbfc7423a44645584edc47f0ce92..66eb4f3c461e2567ddf7b58d0e84af339ff2f120 100644 --- a/lib/base/build.gradle +++ b/lib/base/build.gradle @@ -15,5 +15,5 @@ dependencies { api dep.free_proguard api 'com.r0adkll:slidableactivity:2.0.5' compileOnly dep.leakcanary.android_no_op -// api 'com.blankj:utilcode:1.23.2' +// api 'com.blankj:utilcode:1.23.3' } \ No newline at end of file diff --git a/subutil/pkg/src/main/java/com/blankj/subutil/pkg/feature/location/LocationActivity.kt b/subutil/pkg/src/main/java/com/blankj/subutil/pkg/feature/location/LocationActivity.kt index 79aad4dd1ef23ca491d15222ec96d3f1c42a7118..47e420e9bb2279ccc3423a8c778d1916f1f2f68f 100755 --- a/subutil/pkg/src/main/java/com/blankj/subutil/pkg/feature/location/LocationActivity.kt +++ b/subutil/pkg/src/main/java/com/blankj/subutil/pkg/feature/location/LocationActivity.kt @@ -51,7 +51,7 @@ class LocationActivity : BaseBackActivity() { override fun getLocation(lastLatitude: String, lastLongitude: String, latitude: String, longitude: String, country: String, locality: String, street: String) { runOnUiThread { - locationAboutTv.text = SpanUtils() + SpanUtils.with(locationAboutTv) .appendLine("lastLatitude: $lastLatitude") .appendLine("lastLongitude: $lastLongitude") .appendLine("latitude: $latitude") @@ -77,7 +77,7 @@ class LocationActivity : BaseBackActivity() { override fun initView(savedInstanceState: Bundle?, contentView: View) { setTitle(R.string.demo_location) - locationAboutTv.text = SpanUtils() + SpanUtils.with(locationAboutTv) .appendLine("lastLatitude: unknown") .appendLine("lastLongitude: unknown") .appendLine("latitude: unknown") diff --git a/utilcode/README-CN.md b/utilcode/README-CN.md index 7aae304a6cc3d67341452dff0f00fa1041d8ccc5..00db75076cea8dc2c78f0c91a8379a82ef6a762c 100644 --- a/utilcode/README-CN.md +++ b/utilcode/README-CN.md @@ -2,7 +2,7 @@ Gradle: ```groovy -implementation 'com.blankj:utilcode:1.23.2' +implementation 'com.blankj:utilcode:1.23.3' ``` diff --git a/utilcode/README-STATIC-BUS.md b/utilcode/README-STATIC-BUS.md index 1934cc8c36c059886a2a69af7b11f535310e0ddd..d0605ef25b699df4a0c26f81e893a97438d2df9a 100644 --- a/utilcode/README-STATIC-BUS.md +++ b/utilcode/README-STATIC-BUS.md @@ -27,7 +27,7 @@ apply plugin: "com.blankj.bus" 给 base 模块添加 [AndroidUtilCode](https://github.com/Blankj/AndroidUtilCode) 依赖: ```groovy -api "com.blankj:utilcode:1.23.2" +api "com.blankj:utilcode:1.23.3" ``` 比如 module0 中存在的 `Module0Activity.java`,我们通常都是在它内部写一个 `start` 函数来启动它,现在我们给它添加 `@BusUtils.Subscribe` 注解,并给注解的 `name` 赋唯一值,要注意,函数务必要 `public static` 哦: diff --git a/utilcode/README.md b/utilcode/README.md index fae15db9a4250e5a458a37fa411695e6ddd3f8d8..c9a5635f530ccb7a34480370ea24788b61ca995d 100644 --- a/utilcode/README.md +++ b/utilcode/README.md @@ -2,7 +2,7 @@ Gradle: ```groovy -implementation 'com.blankj:utilcode:1.23.2' +implementation 'com.blankj:utilcode:1.23.3' ``` 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 fe57b63dcce2572dc7b3e2fde2b8422ab9d5b49b..502f74e70aab7b2cbfb200c73333edf4a7d71c63 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 @@ -736,7 +736,7 @@ public final class AppUtils { * * * @param packageName The name of the package. - * @return 当前应用的 AppInfo + * @return the application's information */ public static AppInfo getAppInfo(final String packageName) { try { 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 343404752a095ea174294bf6a99ce80c0971b1a7..68b7e3e9158ba2db6dbc3fbe7289bce68e945e1f 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 @@ -127,7 +127,6 @@ public final class BarUtils { if (decorView != null) { int vis = decorView.getSystemUiVisibility(); if (isLightMode) { - window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); vis |= View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR; } else { vis &= ~View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR; @@ -137,6 +136,33 @@ public final class BarUtils { } } + /** + * Is the status bar light mode. + * + * @param activity The activity. + * @return {@code true}: yes
{@code false}: no + */ + public static boolean isStatusBarLightMode(@NonNull final Activity activity) { + return isStatusBarLightMode(activity.getWindow()); + } + + /** + * Is the status bar light mode. + * + * @param window The window. + * @return {@code true}: yes
{@code false}: no + */ + public static boolean isStatusBarLightMode(@NonNull final Window window) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + View decorView = window.getDecorView(); + if (decorView != null) { + int vis = decorView.getSystemUiVisibility(); + return (vis & View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR) != 0; + } + } + return false; + } + /** * Add the top margin size equals status bar's height for view. * @@ -437,9 +463,10 @@ public final class BarUtils { * @param activity The activity. * @param isVisible True to set navigation bar visible, false otherwise. */ - @RequiresApi(api = Build.VERSION_CODES.KITKAT) public static void setNavBarVisibility(@NonNull final Activity activity, boolean isVisible) { + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) return; setNavBarVisibility(activity.getWindow(), isVisible); + } /** @@ -448,8 +475,8 @@ public final class BarUtils { * @param window The window. * @param isVisible True to set navigation bar visible, false otherwise. */ - @RequiresApi(Build.VERSION_CODES.KITKAT) public static void setNavBarVisibility(@NonNull final Window window, boolean isVisible) { + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) return; final ViewGroup decorView = (ViewGroup) window.getDecorView(); for (int i = 0, count = decorView.getChildCount(); i < count; i++) { final View child = decorView.getChildAt(i); diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/ConvertUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/ConvertUtils.java index 257f6d22a871bff549305032fa48022dab348d5f..6cb8ddbe45d9171cca0db0e5796f89c7bdd4ac18 100644 --- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/ConvertUtils.java +++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/ConvertUtils.java @@ -1,6 +1,7 @@ package com.blankj.utilcode.util; import android.annotation.SuppressLint; +import android.content.res.Resources; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; @@ -578,7 +579,7 @@ public final class ConvertUtils { * @return value of px */ public static int dp2px(final float dpValue) { - final float scale = Utils.getApp().getResources().getDisplayMetrics().density; + final float scale = Resources.getSystem().getDisplayMetrics().density; return (int) (dpValue * scale + 0.5f); } @@ -589,7 +590,7 @@ public final class ConvertUtils { * @return value of dp */ public static int px2dp(final float pxValue) { - final float scale = Utils.getApp().getResources().getDisplayMetrics().density; + final float scale = Resources.getSystem().getDisplayMetrics().density; return (int) (pxValue / scale + 0.5f); } @@ -600,7 +601,7 @@ public final class ConvertUtils { * @return value of px */ public static int sp2px(final float spValue) { - final float fontScale = Utils.getApp().getResources().getDisplayMetrics().scaledDensity; + final float fontScale = Resources.getSystem().getDisplayMetrics().scaledDensity; return (int) (spValue * fontScale + 0.5f); } @@ -611,7 +612,7 @@ public final class ConvertUtils { * @return value of sp */ public static int px2sp(final float pxValue) { - final float fontScale = Utils.getApp().getResources().getDisplayMetrics().scaledDensity; + final float fontScale = Resources.getSystem().getDisplayMetrics().scaledDensity; return (int) (pxValue / fontScale + 0.5f); } diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/JsonUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/JsonUtils.java index 1a6236b9075d1ce0f7794df2ce14212b4e4b231a..55ac8803d18bd3672aede66c6cccd84811eac6f3 100644 --- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/JsonUtils.java +++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/JsonUtils.java @@ -211,10 +211,15 @@ public final class JsonUtils { public static String formatJson(final String json, final int indentSpaces) { try { - if (json.startsWith("{")) { - return new JSONObject(json).toString(indentSpaces); - } else if (json.startsWith("[")) { - return new JSONArray(json).toString(indentSpaces); + for (int i = 0, len = json.length(); i < len; i++) { + char c = json.charAt(i); + if (c == '{') { + return new JSONObject(json).toString(indentSpaces); + } else if (c == '[') { + return new JSONArray(json).toString(indentSpaces); + } else if (!Character.isWhitespace(c)) { + return json; + } } } catch (JSONException e) { e.printStackTrace(); 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 52a61eda768842b11d02f370adca6d093df8330e..03f81e7f225911bffac9b81b223959b5ff5c5a4b 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 @@ -259,17 +259,17 @@ public final class KeyboardUtils { * Fix the leaks of soft input. *

Call the function in {@link Activity#onDestroy()}.

* - * @param context The context. + * @param activity The activity. */ - public static void fixSoftInputLeaks(final Context context) { - if (context == null) return; + public static void fixSoftInputLeaks(final Activity activity) { + if (activity == null) return; InputMethodManager imm = (InputMethodManager) Utils.getApp().getSystemService(Context.INPUT_METHOD_SERVICE); - String[] strArr = new String[]{"mCurRootView", "mServedView", "mNextServedView", "mLastSrvView"}; - for (int i = 0; i < 4; i++) { + if (imm == null) return; + String[] leakViews = new String[]{"mLastSrvView", "mCurRootView", "mServedView", "mNextServedView"}; + for (String leakView : leakViews) { try { - //noinspection ConstantConditions - Field declaredField = imm.getClass().getDeclaredField(strArr[i]); + Field declaredField = InputMethodManager.class.getDeclaredField(leakView); if (declaredField == null) continue; if (!declaredField.isAccessible()) { declaredField.setAccessible(true); @@ -277,10 +277,8 @@ public final class KeyboardUtils { Object obj = declaredField.get(imm); if (!(obj instanceof View)) continue; View view = (View) obj; - if (view.getContext() == context) { + if (view.getRootView() == activity.getWindow().getDecorView().getRootView()) { declaredField.set(imm, null); - } else { - return; } } catch (Throwable th) { th.printStackTrace(); 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 6e801ba2652781a66e75e5bc7ee88c011d8ded7b..66c4cb280b1c51ddf3168dae063cf168d562b8ab 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 @@ -626,7 +626,7 @@ public final class LogUtils { private String mFilePrefix = "util";// The file prefix of log. private boolean mLogSwitch = true; // The switch of log. private boolean mLog2ConsoleSwitch = true; // The logcat's switch of log. - private String mGlobalTag = null; // The global tag of log. + private String mGlobalTag = ""; // The global tag of log. private boolean mTagIsSpace = true; // The global tag is space. private boolean mLogHeadSwitch = true; // The head's switch of log. private boolean mLog2FileSwitch = false; // The file's switch of log. @@ -744,22 +744,83 @@ public final class LogUtils { return this; } + public String getDefaultDir() { + return mDefaultDir; + } + + public String getDir() { + return mDir == null ? mDefaultDir : mDir; + } + + public String getFilePrefix() { + return mFilePrefix; + } + + public boolean isLogSwitch() { + return mLogSwitch; + } + + public boolean isLog2ConsoleSwitch() { + return mLog2ConsoleSwitch; + } + + public String getGlobalTag() { + if (isSpace(mGlobalTag)) return "null"; + return mGlobalTag; + } + + public boolean isLogHeadSwitch() { + return mLogHeadSwitch; + } + + public boolean isLog2FileSwitch() { + return mLog2FileSwitch; + } + + public boolean isLogBorderSwitch() { + return mLogBorderSwitch; + } + + public boolean isSingleTagSwitch() { + return mSingleTagSwitch; + } + + public char getConsoleFilter() { + return T[mConsoleFilter - V]; + } + + public char getFileFilter() { + return T[mFileFilter - V]; + } + + public int getStackDeep() { + return mStackDeep; + } + + public int getStackOffset() { + return mStackOffset; + } + + public int getSaveDays() { + return mSaveDays; + } + @Override public String toString() { - return "switch: " + mLogSwitch - + LINE_SEP + "console: " + mLog2ConsoleSwitch - + LINE_SEP + "tag: " + (mTagIsSpace ? "null" : mGlobalTag) - + LINE_SEP + "head: " + mLogHeadSwitch - + LINE_SEP + "file: " + mLog2FileSwitch - + LINE_SEP + "dir: " + (mDir == null ? mDefaultDir : mDir) - + LINE_SEP + "filePrefix: " + mFilePrefix - + LINE_SEP + "border: " + mLogBorderSwitch - + LINE_SEP + "singleTag: " + mSingleTagSwitch - + LINE_SEP + "consoleFilter: " + T[mConsoleFilter - V] - + LINE_SEP + "fileFilter: " + T[mFileFilter - V] - + LINE_SEP + "stackDeep: " + mStackDeep - + LINE_SEP + "stackOffset: " + mStackOffset - + LINE_SEP + "saveDays: " + mSaveDays + return "switch: " + isLogSwitch() + + LINE_SEP + "console: " + isLog2ConsoleSwitch() + + LINE_SEP + "tag: " + getGlobalTag() + + LINE_SEP + "head: " + isLogHeadSwitch() + + LINE_SEP + "file: " + isLog2FileSwitch() + + LINE_SEP + "dir: " + getDir() + + LINE_SEP + "filePrefix: " + getFilePrefix() + + LINE_SEP + "border: " + isLogBorderSwitch() + + LINE_SEP + "singleTag: " + isSingleTagSwitch() + + LINE_SEP + "consoleFilter: " + getConsoleFilter() + + LINE_SEP + "fileFilter: " + getFileFilter() + + LINE_SEP + "stackDeep: " + getStackDeep() + + LINE_SEP + "stackOffset: " + getStackOffset() + + LINE_SEP + "saveDays: " + getSaveDays() + LINE_SEP + "formatter: " + I_FORMATTER_MAP; } } @@ -969,10 +1030,15 @@ public final class LogUtils { private static String formatJson(String json) { try { - if (json.startsWith("{")) { - json = new JSONObject(json).toString(2); - } else if (json.startsWith("[")) { - json = new JSONArray(json).toString(2); + for (int i = 0, len = json.length(); i < len; i++) { + char c = json.charAt(i); + if (c == '{') { + return new JSONObject(json).toString(2); + } else if (c == '[') { + return new JSONArray(json).toString(2); + } else if (!Character.isWhitespace(c)) { + return json; + } } } catch (JSONException e) { e.printStackTrace(); 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 23eb3b3f00021021dd6411ca91add8b6deff0e60..f281d777c27dc39cff94dbf0de686bdfa2d78ef8 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 @@ -134,13 +134,13 @@ public final class NetworkUtils { return tm.isDataEnabled(); } @SuppressLint("PrivateApi") - Method getMobileDataEnabledMethod = tm.getClass().getDeclaredMethod("getDataEnabled"); + Method getMobileDataEnabledMethod = + tm.getClass().getDeclaredMethod("getDataEnabled"); if (null != getMobileDataEnabledMethod) { return (boolean) getMobileDataEnabledMethod.invoke(tm); } - } catch (Exception e) { - e.printStackTrace(); + Log.e("NetworkUtils", "getMobileDataEnabled: ", e); } return false; } @@ -151,21 +151,28 @@ public final class NetworkUtils { * {@code }

* * @param enabled True to enabled, false otherwise. + * @return {@code true}: success
{@code false}: fail */ @RequiresPermission(MODIFY_PHONE_STATE) - public static void setMobileDataEnabled(final boolean enabled) { + public static boolean setMobileDataEnabled(final boolean enabled) { try { TelephonyManager tm = (TelephonyManager) Utils.getApp().getSystemService(Context.TELEPHONY_SERVICE); - if (tm == null) return; - Method setMobileDataEnabledMethod = + if (tm == null) return false; + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + tm.setDataEnabled(enabled); + return false; + } + Method setDataEnabledMethod = tm.getClass().getDeclaredMethod("setDataEnabled", boolean.class); - if (null != setMobileDataEnabledMethod) { - setMobileDataEnabledMethod.invoke(tm, enabled); + if (null != setDataEnabledMethod) { + setDataEnabledMethod.invoke(tm, enabled); + return true; } } catch (Exception e) { - e.printStackTrace(); + Log.e("NetworkUtils", "setMobileDataEnabled: ", e); } + return false; } /** @@ -281,24 +288,22 @@ public final class NetworkUtils { */ @RequiresPermission(ACCESS_NETWORK_STATE) public static NetworkType getNetworkType() { - NetworkType netType = NetworkType.NETWORK_NO; + if (isEthernet()) { + return NetworkType.NETWORK_ETHERNET; + } NetworkInfo info = getActiveNetworkInfo(); if (info != null && info.isAvailable()) { - if (isEthernet()) { - netType = NetworkType.NETWORK_ETHERNET; - } else if (info.getType() == ConnectivityManager.TYPE_WIFI) { - netType = NetworkType.NETWORK_WIFI; + if (info.getType() == ConnectivityManager.TYPE_WIFI) { + return NetworkType.NETWORK_WIFI; } else if (info.getType() == ConnectivityManager.TYPE_MOBILE) { switch (info.getSubtype()) { - case TelephonyManager.NETWORK_TYPE_GSM: case TelephonyManager.NETWORK_TYPE_GPRS: case TelephonyManager.NETWORK_TYPE_CDMA: case TelephonyManager.NETWORK_TYPE_EDGE: case TelephonyManager.NETWORK_TYPE_1xRTT: case TelephonyManager.NETWORK_TYPE_IDEN: - netType = NetworkType.NETWORK_2G; - break; + return NetworkType.NETWORK_2G; case TelephonyManager.NETWORK_TYPE_TD_SCDMA: case TelephonyManager.NETWORK_TYPE_EVDO_A: @@ -310,30 +315,23 @@ public final class NetworkUtils { case TelephonyManager.NETWORK_TYPE_EVDO_B: case TelephonyManager.NETWORK_TYPE_EHRPD: case TelephonyManager.NETWORK_TYPE_HSPAP: - netType = NetworkType.NETWORK_3G; - break; + return NetworkType.NETWORK_3G; case TelephonyManager.NETWORK_TYPE_IWLAN: case TelephonyManager.NETWORK_TYPE_LTE: - netType = NetworkType.NETWORK_4G; - break; - default: + return NetworkType.NETWORK_4G; + default: String subtypeName = info.getSubtypeName(); if (subtypeName.equalsIgnoreCase("TD-SCDMA") || subtypeName.equalsIgnoreCase("WCDMA") || subtypeName.equalsIgnoreCase("CDMA2000")) { - netType = NetworkType.NETWORK_3G; - } else { - netType = NetworkType.NETWORK_UNKNOWN; + return NetworkType.NETWORK_3G; } - break; } - } else { - netType = NetworkType.NETWORK_UNKNOWN; } } - return netType; + return NetworkType.NETWORK_UNKNOWN; } /** @@ -344,18 +342,15 @@ public final class NetworkUtils { * @return {@code true}: yes
{@code false}: no */ @RequiresPermission(ACCESS_NETWORK_STATE) - public static boolean isEthernet() { - final ConnectivityManager connectivityManager = (ConnectivityManager) Utils.getApp().getSystemService(Context.CONNECTIVITY_SERVICE); - final NetworkInfo ethernet = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_ETHERNET); - if (ethernet != null) { - NetworkInfo.State state = ethernet.getState(); - if (null != state) { - if (state == NetworkInfo.State.CONNECTED || state == NetworkInfo.State.CONNECTING) { - return true; - } - } - } - return false; + private static boolean isEthernet() { + final ConnectivityManager cm = + (ConnectivityManager) Utils.getApp().getSystemService(Context.CONNECTIVITY_SERVICE); + if (cm == null) return false; + final NetworkInfo info = cm.getNetworkInfo(ConnectivityManager.TYPE_ETHERNET); + if (info == null) return false; + NetworkInfo.State state = info.getState(); + if (null == state) return false; + return state == NetworkInfo.State.CONNECTED || state == NetworkInfo.State.CONNECTING; } @RequiresPermission(ACCESS_NETWORK_STATE) 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 319aeee2a4c1ade6f6409cee4a072cc94d181d04..99068781a40b53b97ca39a65ccb70a9565b75ef9 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 @@ -284,7 +284,7 @@ public final class PhoneUtils { str += "SimSerialNumber = " + tm.getSimSerialNumber() + "\n"; str += "SimState = " + tm.getSimState() + "\n"; str += "SubscriberId(IMSI) = " + tm.getSubscriberId() + "\n"; - str += "VoiceMailNumber = " + tm.getVoiceMailNumber() + "\n"; + str += "VoiceMailNumber = " + tm.getVoiceMailNumber(); return str; } diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/SizeUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/SizeUtils.java index 4a496ca9bde8119ef63266b4e5825a546d5515e9..5ef9047e4d23ec160ffa63c99be906e46d6cfec2 100644 --- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/SizeUtils.java +++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/SizeUtils.java @@ -75,7 +75,7 @@ public final class SizeUtils { * metrics depending on its unit. */ public static float applyDimension(final float value, final int unit) { - DisplayMetrics metrics = Utils.getApp().getResources().getDisplayMetrics(); + DisplayMetrics metrics = Resources.getSystem().getDisplayMetrics(); switch (unit) { case TypedValue.COMPLEX_UNIT_PX: return value; 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 f5277eb9e9cba442caacb312dd01ed2b7fce24e0..a72c91f6d5a3ee3375b34b9145623b38a92bef05 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 @@ -335,15 +335,15 @@ public final class Utils { return null; } - private static void fixSoftInputLeaks(final Context context) { - if (context == null) return; + private static void fixSoftInputLeaks(final Activity activity) { + if (activity == null) return; InputMethodManager imm = (InputMethodManager) Utils.getApp().getSystemService(Context.INPUT_METHOD_SERVICE); - String[] strArr = new String[]{"mCurRootView", "mServedView", "mNextServedView", "mLastSrvView"}; - for (int i = 0; i < 4; i++) { + if (imm == null) return; + String[] leakViews = new String[]{"mLastSrvView", "mCurRootView", "mServedView", "mNextServedView"}; + for (String leakView : leakViews) { try { - //noinspection ConstantConditions - Field declaredField = imm.getClass().getDeclaredField(strArr[i]); + Field declaredField = InputMethodManager.class.getDeclaredField(leakView); if (declaredField == null) continue; if (!declaredField.isAccessible()) { declaredField.setAccessible(true); @@ -351,10 +351,8 @@ public final class Utils { Object obj = declaredField.get(imm); if (!(obj instanceof View)) continue; View view = (View) obj; - if (view.getContext() == context) { + if (view.getRootView() == activity.getWindow().getDecorView().getRootView()) { declaredField.set(imm, null); - } else { - return; } } catch (Throwable th) { th.printStackTrace(); diff --git a/utilcode/lib/src/test/java/com/blankj/utilcode/util/CloneUtilsTest.java b/utilcode/lib/src/test/java/com/blankj/utilcode/util/CloneUtilsTest.java index 1677925160fddf69bbf3df83ba52e6aa4ed3d84c..fd23058816ff1256213a897f9159938eb6374904 100644 --- a/utilcode/lib/src/test/java/com/blankj/utilcode/util/CloneUtilsTest.java +++ b/utilcode/lib/src/test/java/com/blankj/utilcode/util/CloneUtilsTest.java @@ -35,7 +35,9 @@ public class CloneUtilsTest { @Override public String toString() { - return "{\"code\":" + code + ",\"message\":" + message + ",\"data\":" + data + "}"; + return "{\"code\":" + primitive2String(code) + + ",\"message\":" + primitive2String(message) + + ",\"data\":" + primitive2String(data) + "}"; } } @@ -51,7 +53,15 @@ public class CloneUtilsTest { @Override public String toString() { - return "{\"name\":" + name + ",\"gender\":" + gender + ",\"address\":" + address + "}"; + return "{\"name\":" + primitive2String(name) + + ",\"gender\":" + primitive2String(gender) + + ",\"address\":" + primitive2String(address) + "}"; } } + + private static String primitive2String(final Object obj) { + if (obj == null) return "null"; + if (obj instanceof CharSequence) return "\"" + obj.toString() + "\""; + return obj.toString(); + } } \ No newline at end of file diff --git a/utilcode/lib/src/test/java/com/blankj/utilcode/util/LogUtilsTest.java b/utilcode/lib/src/test/java/com/blankj/utilcode/util/LogUtilsTest.java index 7abc42fcb793863790d6e53b7718b128f62fdf3c..e24cf4df0a993dcfd1bba6acdee72d8628bcc7e2 100644 --- a/utilcode/lib/src/test/java/com/blankj/utilcode/util/LogUtilsTest.java +++ b/utilcode/lib/src/test/java/com/blankj/utilcode/util/LogUtilsTest.java @@ -16,7 +16,7 @@ import java.util.Map; */ public class LogUtilsTest extends BaseTest { - private static final String JSON = "{\"tools\": [{ \"name\":\"css format\" , \"site\":\"http://tools.w3cschool.cn/code/css\" },{ \"name\":\"JSON format\" , \"site\":\"http://tools.w3cschool.cn/code/JSON\" },{ \"name\":\"pwd check\" , \"site\":\"http://tools.w3cschool.cn/password/my_password_safe\" }]}"; + private static final String JSON = "\r\n{\"tools\": [{ \"name\":\"css format\" , \"site\":\"http://tools.w3cschool.cn/code/css\" },{ \"name\":\"JSON format\" , \"site\":\"http://tools.w3cschool.cn/code/JSON\" },{ \"name\":\"pwd check\" , \"site\":\"http://tools.w3cschool.cn/password/my_password_safe\" }]}"; private static final String XML = "Jack HerringtonPHP HacksO'ReillyJack HerringtonPodcasting HacksO'Reilly"; private static final int[] ONE_D_ARRAY = new int[]{1, 2, 3}; private static final int[][] TWO_D_ARRAY = new int[][]{{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}; @@ -166,10 +166,6 @@ public class LogUtilsTest extends BaseTest { LogUtils.d((Object) TWO_D_ARRAY); LogUtils.d(LIST); LogUtils.d(MAP); - Object o = GsonUtils.fromJson(GsonUtils.toJson(LIST), GsonUtils.getListType(String.class)); - System.out.println(o); - - } static class Person { @@ -193,5 +189,18 @@ public class LogUtilsTest extends BaseTest { private static boolean equals(final Object o1, final Object o2) { return o1 == o2 || (o1 != null && o1.equals(o2)); } + + @Override + public String toString() { + return "{\"name\":" + primitive2String(name) + + ",\"gender\":" + primitive2String(gender) + + ",\"address\":" + primitive2String(address) + "}"; + } + } + + private static String primitive2String(final Object obj) { + if (obj == null) return "null"; + if (obj instanceof CharSequence) return "\"" + obj.toString() + "\""; + return obj.toString(); } } 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 895eb1b99403e7c4d4011e697d8fb93a3d80a7ca..6e29a7bfa5f8349cca1a4fce59f5364fbeabb109 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 @@ -54,7 +54,6 @@ class ActivityActivity : BaseBackActivity() { override fun initView(savedInstanceState: Bundle?, contentView: View) { - setTitle(R.string.demo_activity) activityClzBtn.setOnClickListener(this) 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 5e04389cb0f1e76c48172b4eb901790f006329f3..4d9725e42c0aeac7abc10e3b6f396facc1a703b6 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 @@ -34,6 +34,7 @@ class SubActivityActivity : BaseBackActivity() { } override fun initView(savedInstanceState: Bundle?, contentView: View) { + setTitle(R.string.demo_activity) contentView.setBackgroundColor(ColorUtils.getRandomColor(false)) } diff --git a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/adaptScreen/AdaptScreenActivity.kt b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/adaptScreen/AdaptScreenActivity.kt index 3e831f58a7b8e0036c3a9396f5960eaf558badcc..d66c637c59282b0ec5b87bd678b43eb04ddb6e4d 100644 --- a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/adaptScreen/AdaptScreenActivity.kt +++ b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/adaptScreen/AdaptScreenActivity.kt @@ -24,12 +24,20 @@ class AdaptScreenActivity : BaseBackActivity() { } override fun initView(savedInstanceState: Bundle?, contentView: View) { - adaptScreenAdaptWidthBtn.setOnClickListener { WidthActivity.start(this) } - adaptScreenAdaptHeightBtn.setOnClickListener { HeightActivity.start(this) } - adaptScreenCloseAdaptBtn.setOnClickListener { CloseAdaptActivity.start(this) } + setTitle(R.string.demo_adapt_screen) + + adaptScreenAdaptWidthBtn.setOnClickListener(this) + adaptScreenAdaptHeightBtn.setOnClickListener(this) + adaptScreenCloseAdaptBtn.setOnClickListener(this) } override fun doBusiness() {} - override fun onWidgetClick(view: View) {} + override fun onWidgetClick(view: View) { + when (view.id) { + R.id.adaptScreenAdaptWidthBtn -> WidthActivity.start(this) + R.id.adaptScreenAdaptHeightBtn -> HeightActivity.start(this) + R.id.adaptScreenCloseAdaptBtn -> CloseAdaptActivity.start(this) + } + } } diff --git a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/bar/BarNavActivity.kt b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/bar/BarNavActivity.kt index 8f9b170e0011a70de859f78600e819b1366a9e08..d5515ea86bc0d7b2e07c1eece2d9ad75227663d1 100644 --- a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/bar/BarNavActivity.kt +++ b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/bar/BarNavActivity.kt @@ -9,6 +9,7 @@ import android.view.View import com.blankj.lib.base.BaseBackActivity import com.blankj.utilcode.pkg.R import com.blankj.utilcode.util.BarUtils +import com.blankj.utilcode.util.ColorUtils import com.blankj.utilcode.util.SpanUtils import kotlinx.android.synthetic.main.activity_bar_nav.* @@ -38,13 +39,18 @@ class BarNavActivity : BaseBackActivity() { } override fun initView(savedInstanceState: Bundle?, contentView: View) { - (contentView.parent as View).setBackgroundColor(Color.GRAY) setTitle(R.string.demo_bar) - barNavShowBtn.setOnClickListener(this) - barNavHideBtn.setOnClickListener(this) - barNavSetColorBtn.setOnClickListener(this) - updateAboutNav() + contentView.setBackgroundColor(Color.GRAY) + if (!BarUtils.isSupportNavBar()) { + barNavVisibilityCb.visibility = View.GONE + barNavSetColorBtn.visibility = View.GONE + } else { + barNavVisibilityCb.setOnCheckedChangeListener { buttonView, isChecked -> + BarUtils.setNavBarVisibility(this, isChecked) + } + barNavSetColorBtn.setOnClickListener(this) + } } override fun doBusiness() { @@ -53,14 +59,8 @@ class BarNavActivity : BaseBackActivity() { override fun onWidgetClick(view: View) { when (view.id) { - R.id.barNavShowBtn -> if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { - BarUtils.setNavBarVisibility(this, true) - } - R.id.barNavHideBtn -> if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { - BarUtils.setNavBarVisibility(this, false) - } R.id.barNavSetColorBtn -> if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { - BarUtils.setNavBarColor(this, (Math.random() * 0xFFFFFFFF).toInt()) + BarUtils.setNavBarColor(this, ColorUtils.getRandomColor()) } } updateAboutNav() @@ -69,10 +69,9 @@ class BarNavActivity : BaseBackActivity() { private fun updateAboutNav() { SpanUtils.with(barNavAboutTv) .appendLine("navHeight: " + BarUtils.getNavBarHeight()) - .appendLine("isNavBarVisible: " + BarUtils.isNavBarVisible(this)) .apply { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { - appendLine("getNavBarColor: #" + Integer.toHexString(BarUtils.getNavBarColor(mActivity))) + appendLine("getNavBarColor: " + ColorUtils.int2ArgbString(BarUtils.getNavBarColor(mActivity))) } } .append("isSupportNavBar: " + BarUtils.isSupportNavBar()) @@ -81,6 +80,7 @@ class BarNavActivity : BaseBackActivity() { override fun onWindowFocusChanged(hasFocus: Boolean) { super.onWindowFocusChanged(hasFocus) + barNavVisibilityCb.isChecked = BarUtils.isNavBarVisible(this) updateAboutNav() } } diff --git a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/bar/BarStatusActivity.kt b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/bar/BarStatusActivity.kt index 0bc90b22e54b5a4152ea97d3ff935fe930871848..4af36861e1a9344567a86113086d8494f97bb899 100644 --- a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/bar/BarStatusActivity.kt +++ b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/bar/BarStatusActivity.kt @@ -38,31 +38,35 @@ class BarStatusActivity : BaseBackActivity() { override fun initView(savedInstanceState: Bundle?, contentView: View) { setTitle(R.string.demo_bar) - barStatusShowBtn.setOnClickListener(this) - barStatusHideBtn.setOnClickListener(this) - barStatusLightModeBtn.setOnClickListener(this) - barStatusDarkModeBtn.setOnClickListener(this) - updateAboutStatus() + barStatusVisibilityCb.isChecked = BarUtils.isStatusBarVisible(this) + barStatusVisibilityCb.setOnCheckedChangeListener { buttonView, isChecked -> + BarUtils.setStatusBarVisibility(this, isChecked) + } + + barStatusLightModeCb.isChecked = BarUtils.isStatusBarLightMode(this) + barStatusLightModeCb.setOnCheckedChangeListener { buttonView, isChecked -> + BarUtils.setStatusBarLightMode(this, isChecked) + } } override fun doBusiness() { } + override fun onResume() { + super.onResume() + updateAboutStatus() + } + override fun onWidgetClick(view: View) { when (view.id) { - R.id.barStatusShowBtn -> BarUtils.setStatusBarVisibility(this, true) - R.id.barStatusHideBtn -> BarUtils.setStatusBarVisibility(this, false) - R.id.barStatusLightModeBtn -> BarUtils.setStatusBarLightMode(this, true) - R.id.barStatusDarkModeBtn -> BarUtils.setStatusBarLightMode(this, false) } updateAboutStatus() } private fun updateAboutStatus() { - barStatusAboutTv.text = SpanUtils() - .appendLine("statusHeight: " + BarUtils.getStatusBarHeight()) - .append("isStatusVisible: " + BarUtils.isStatusBarVisible(this)) + SpanUtils.with(barStatusAboutTv) + .append("getStatusBarHeight: " + BarUtils.getStatusBarHeight()) .create() } } diff --git a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/brightness/BrightnessActivity.kt b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/brightness/BrightnessActivity.kt index d8e93eb005511bb32436a8377f00589f0f7d9960..4ebe23b48c5c76867a585e75bbecae04b7d02d95 100644 --- a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/brightness/BrightnessActivity.kt +++ b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/brightness/BrightnessActivity.kt @@ -25,8 +25,21 @@ class BrightnessActivity : BaseBackActivity() { companion object { fun start(context: Context) { - val starter = Intent(context, BrightnessActivity::class.java) - context.startActivity(starter) + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + PermissionUtils.requestWriteSettings(object : PermissionUtils.SimpleCallback { + override fun onGranted() { + val starter = Intent(context, BrightnessActivity::class.java) + context.startActivity(starter) + } + + override fun onDenied() { + start(context) + } + }) + } else { + val starter = Intent(context, BrightnessActivity::class.java) + context.startActivity(starter) + } } } @@ -69,6 +82,7 @@ class BrightnessActivity : BaseBackActivity() { } override fun initView(savedInstanceState: Bundle?, contentView: View) { + setTitle(R.string.demo_brightness) brightnessChangeSb.progress = BrightnessUtils.getBrightness() brightnessChangeSb.setOnSeekBarChangeListener(brightnessChangeListener) @@ -79,19 +93,7 @@ class BrightnessActivity : BaseBackActivity() { updateWindowBrightness() brightnessSetAutoCb.setOnCheckedChangeListener { buttonView, isChecked -> - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - PermissionUtils.requestWriteSettings(object : PermissionUtils.SimpleCallback { - override fun onGranted() { - BrightnessUtils.setAutoBrightnessEnabled(isChecked) - } - - override fun onDenied() { - - } - }) - } else { - BrightnessUtils.setAutoBrightnessEnabled(isChecked) - } + BrightnessUtils.setAutoBrightnessEnabled(isChecked) } } @@ -105,13 +107,13 @@ class BrightnessActivity : BaseBackActivity() { private fun updateBrightness() { SpanUtils.with(brightnessAboutTv) - .append(BrightnessUtils.getBrightness().toString()) + .append("getBrightness: " + BrightnessUtils.getBrightness()) .create() } private fun updateWindowBrightness() { SpanUtils.with(brightnessWindowAboutTv) - .append(BrightnessUtils.getWindowBrightness(window).toString()) + .append("getWindowBrightness: " + BrightnessUtils.getWindowBrightness(window)) .create() } } diff --git a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/flashlight/FlashlightActivity.kt b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/flashlight/FlashlightActivity.kt index 737fec0d7420a88d08c58ec2172151c2425f5eb4..07c82c93e5f064841574742edc0e5f6ad7b134b7 100644 --- a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/flashlight/FlashlightActivity.kt +++ b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/flashlight/FlashlightActivity.kt @@ -50,9 +50,11 @@ class FlashlightActivity : BaseBackActivity() { } override fun initView(savedInstanceState: Bundle?, contentView: View) { - flashlightEnableCb.setOnCheckedChangeListener { buttonView, isChecked -> + setTitle(R.string.demo_flashlight) + + flashlightStatusCb.isChecked = FlashlightUtils.isFlashlightOn() + flashlightStatusCb.setOnCheckedChangeListener { buttonView, isChecked -> FlashlightUtils.setFlashlightStatus(isChecked) - updateAboutFlashlight() } } @@ -66,8 +68,7 @@ class FlashlightActivity : BaseBackActivity() { private fun updateAboutFlashlight() { SpanUtils.with(flashlightAboutTv) - .appendLine("isFlashlightEnable: " + FlashlightUtils.isFlashlightEnable()) - .appendLine("isFlashlightOn: " + FlashlightUtils.isFlashlightOn()) + .append("isFlashlightEnable: " + FlashlightUtils.isFlashlightEnable()) .create() } diff --git a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/keyboard/KeyboardActivity.kt b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/keyboard/KeyboardActivity.kt index 4e002342bd12fc1c1b91d164b2ed7ce5d29d3d7f..5d28a97995a2f1435d4fb67facaaab484dff5b88 100644 --- a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/keyboard/KeyboardActivity.kt +++ b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/keyboard/KeyboardActivity.kt @@ -67,34 +67,32 @@ class KeyboardActivity : BaseBackActivity() { } } - // @Override - // public boolean dispatchTouchEvent(MotionEvent ev) { - // if (ev.getAction() == MotionEvent.ACTION_DOWN) { - // View v = getCurrentFocus(); - // if (isShouldHideKeyboard(v, ev)) { - // InputMethodManager imm = - // (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); - // if (imm == null) return super.dispatchTouchEvent(ev); - // imm.hideSoftInputFromWindow(v.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS); - // } - // } - // return super.dispatchTouchEvent(ev); - // } - // - // // 根据 EditText 所在坐标和用户点击的坐标相对比,来判断是否隐藏键盘 - // private boolean isShouldHideKeyboard(View v, MotionEvent event) { - // if (v != null && (v instanceof EditText)) { - // int[] l = {0, 0}; - // v.getLocationInWindow(l); - // int left = l[0], - // top = l[1], - // bottom = top + v.getHeight(), - // right = left + v.getWidth(); - // return !(event.getX() > left && event.getX() < right - // && event.getY() > top && event.getY() < bottom); - // } - // return false; - // } +// override fun dispatchTouchEvent(ev: MotionEvent): Boolean { +// if (ev.action == MotionEvent.ACTION_DOWN) { +// val v = currentFocus +// if (isShouldHideKeyboard(v, ev)) { +// val imm = getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager +// ?: return super.dispatchTouchEvent(ev) +// imm.hideSoftInputFromWindow(v.windowToken, InputMethodManager.HIDE_NOT_ALWAYS) +// } +// } +// return super.dispatchTouchEvent(ev) +// } +// +// // 根据 EditText 所在坐标和用户点击的坐标相对比,来判断是否隐藏键盘 +// private fun isShouldHideKeyboard(v: View?, event: MotionEvent): Boolean { +// if (v != null && v is EditText) { +// val l = intArrayOf(0, 0) +// v.getLocationInWindow(l) +// val left = l[0] +// val top = l[1] +// val bottom = top + v.height +// val right = left + v.width +// return !(event.x > left && event.x < right +// && event.y > top && event.y < bottom) +// } +// return false +// } override fun onDestroy() { KeyboardUtils.unregisterSoftInputChangedListener(this) diff --git a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/log/LogActivity.kt b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/log/LogActivity.kt index 9b311f9f2863e27a7790cd64edec80ae246afe11..a4b01cf30092c31a56cf5f4169cc876aca3c2454 100644 --- a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/log/LogActivity.kt +++ b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/log/LogActivity.kt @@ -6,12 +6,14 @@ import android.content.Intent import android.net.Uri import android.os.Bundle import android.view.View +import android.widget.CompoundButton import com.blankj.lib.base.BaseApplication import com.blankj.lib.base.BaseBackActivity import com.blankj.utilcode.pkg.R import com.blankj.utilcode.util.AppUtils import com.blankj.utilcode.util.LogUtils import com.blankj.utilcode.util.PathUtils +import com.blankj.utilcode.util.StringUtils import kotlinx.android.synthetic.main.activity_log.* import java.util.* @@ -24,21 +26,11 @@ import java.util.* * desc : demo about LogUtils * ``` */ -class LogActivity : BaseBackActivity() { +class LogActivity : BaseBackActivity(), + CompoundButton.OnCheckedChangeListener { companion object { private const val TAG = "CMJ" - private const val UPDATE_LOG = 0x01 - private const val UPDATE_CONSOLE = 0x01 shl 1 - private const val UPDATE_TAG = 0x01 shl 2 - private const val UPDATE_HEAD = 0x01 shl 3 - private const val UPDATE_FILE = 0x01 shl 4 - private const val UPDATE_DIR = 0x01 shl 5 - private const val UPDATE_BORDER = 0x01 shl 6 - private const val UPDATE_SINGLE = 0x01 shl 7 - private const val UPDATE_CONSOLE_FILTER = 0x01 shl 8 - private const val UPDATE_FILE_FILTER = 0x01 shl 9 - private const val JSON = "{\"tools\": [{ \"name\":\"css format\" , \"site\":\"http://tools.w3cschool.cn/code/css\" },{ \"name\":\"JSON format\" , \"site\":\"http://tools.w3cschool.cn/code/JSON\" },{ \"name\":\"pwd check\" , \"site\":\"http://tools.w3cschool.cn/password/my_password_safe\" }]}" private const val XML = "Jack HerringtonPHP HacksO'ReillyJack HerringtonPodcasting HacksO'Reilly" private val ONE_D_ARRAY = intArrayOf(1, 2, 3) @@ -107,17 +99,6 @@ class LogActivity : BaseBackActivity() { private val mConfig = LogUtils.getConfig() - private var dir: String = "" - private var globalTag = "" - private var log = true - private var console = true - private var head = true - private var file = false - private var border = true - private var single = true - private var consoleFilter = LogUtils.V - private var fileFilter = LogUtils.V - private val mRunnable = Runnable { LogUtils.v("verbose") LogUtils.d("debug") @@ -138,16 +119,40 @@ class LogActivity : BaseBackActivity() { override fun initView(savedInstanceState: Bundle?, contentView: View) { setTitle(R.string.demo_log) - logToggleLogBtn.setOnClickListener(this) - logToggleConsoleBtn.setOnClickListener(this) - logToggleTagBtn.setOnClickListener(this) - logToggleHeadBtn.setOnClickListener(this) - logToggleBorderBtn.setOnClickListener(this) - logToggleSingleBtn.setOnClickListener(this) - logToggleFileBtn.setOnClickListener(this) - logToggleDirBtn.setOnClickListener(this) - logToggleConsoleFilterBtn.setOnClickListener(this) - logToggleFileFilterBtn.setOnClickListener(this) + logSwitchCb.isChecked = mConfig.isLogSwitch + logSwitchCb.setOnCheckedChangeListener(this) + + log2ConsoleSwitchCb.isChecked = mConfig.isLog2ConsoleSwitch + log2ConsoleSwitchCb.setOnCheckedChangeListener(this) + + logGlobalTagCb.isChecked = !StringUtils.isSpace(mConfig.globalTag) + logGlobalTagCb.setOnCheckedChangeListener(this) + logGlobalTagCb.text = String.format("Global Tag: %s", mConfig.globalTag) + + logHeadSwitchCb.isChecked = mConfig.isLogHeadSwitch + logHeadSwitchCb.setOnCheckedChangeListener(this) + + log2FileSwitchCb.isChecked = mConfig.isLog2FileSwitch + log2FileSwitchCb.setOnCheckedChangeListener(this) + + logDirCb.isChecked = mConfig.dir != mConfig.defaultDir + logDirCb.setOnCheckedChangeListener(this) + logDirCb.text = String.format("Dir: %s", mConfig.dir) + + logBorderSwitchCb.isChecked = mConfig.isLogBorderSwitch + logBorderSwitchCb.setOnCheckedChangeListener(this) + + logBorderSwitchCb.isChecked = mConfig.isSingleTagSwitch + logSingleTagSwitchCb.setOnCheckedChangeListener(this) + + logConsoleFilterCb.isChecked = mConfig.consoleFilter != 'V' + logConsoleFilterCb.setOnCheckedChangeListener(this) + logConsoleFilterCb.text = String.format("ConsoleFilter: %s", mConfig.consoleFilter) + + logFileFilterCb.isChecked = mConfig.fileFilter != 'V' + logFileFilterCb.setOnCheckedChangeListener(this) + logFileFilterCb.text = String.format("FileFilter: %s", mConfig.fileFilter) + logNoTagBtn.setOnClickListener(this) logWithTagBtn.setOnClickListener(this) logInNewThreadBtn.setOnClickListener(this) @@ -163,7 +168,7 @@ class LogActivity : BaseBackActivity() { logIntentBtn.setOnClickListener(this) logArrayListBtn.setOnClickListener(this) logMapBtn.setOnClickListener(this) - updateConfig(0) + updateAboutLog() } override fun doBusiness() { @@ -172,16 +177,6 @@ class LogActivity : BaseBackActivity() { override fun onWidgetClick(view: View) { when (view.id) { - R.id.logToggleLogBtn -> updateConfig(UPDATE_LOG) - R.id.logToggleConsoleBtn -> updateConfig(UPDATE_CONSOLE) - R.id.logToggleTagBtn -> updateConfig(UPDATE_TAG) - R.id.logToggleHeadBtn -> updateConfig(UPDATE_HEAD) - R.id.logToggleFileBtn -> updateConfig(UPDATE_FILE) - R.id.logToggleDirBtn -> updateConfig(UPDATE_DIR) - R.id.logToggleBorderBtn -> updateConfig(UPDATE_BORDER) - R.id.logToggleSingleBtn -> updateConfig(UPDATE_SINGLE) - R.id.logToggleConsoleFilterBtn -> updateConfig(UPDATE_CONSOLE_FILTER) - R.id.logToggleFileFilterBtn -> updateConfig(UPDATE_FILE_FILTER) R.id.logNoTagBtn -> { LogUtils.v("verbose") LogUtils.d("debug") @@ -189,7 +184,6 @@ class LogActivity : BaseBackActivity() { LogUtils.w("warn") LogUtils.e("error") LogUtils.a("assert") - } R.id.logWithTagBtn -> { LogUtils.vTag("customTag", "verbose") @@ -198,12 +192,10 @@ class LogActivity : BaseBackActivity() { LogUtils.wTag("customTag", "warn") LogUtils.eTag("customTag", "error") LogUtils.aTag("customTag", "assert") - } R.id.logInNewThreadBtn -> { val thread = Thread(mRunnable) thread.start() - } R.id.logNullBtn -> { LogUtils.v(null) @@ -212,7 +204,6 @@ class LogActivity : BaseBackActivity() { LogUtils.w(null) LogUtils.e(null) LogUtils.a(null) - } R.id.logManyParamsBtn -> { LogUtils.v("verbose0", "verbose1") @@ -227,7 +218,6 @@ class LogActivity : BaseBackActivity() { LogUtils.eTag("customTag", "error0", "error1") LogUtils.a("assert0", "assert1") LogUtils.aTag("customTag", "assert0", "assert1") - } R.id.logLongBtn -> LogUtils.d(LONG_STR) R.id.logFileBtn -> for (i in 0..99) { @@ -237,17 +227,14 @@ class LogActivity : BaseBackActivity() { R.id.logJsonBtn -> { LogUtils.json(JSON) LogUtils.json(LogUtils.I, JSON) - } R.id.logXmlBtn -> { LogUtils.xml(XML) LogUtils.xml(LogUtils.I, XML) - } R.id.logArrayBtn -> { LogUtils.e(ONE_D_ARRAY) LogUtils.e(TWO_D_ARRAY) - } R.id.logThrowableBtn -> LogUtils.e(THROWABLE) R.id.logBundleBtn -> LogUtils.e(BUNDLE) @@ -257,41 +244,44 @@ class LogActivity : BaseBackActivity() { } } - private fun updateConfig(args: Int) { - when (args) { - UPDATE_LOG -> log = !log - UPDATE_CONSOLE -> console = !console - UPDATE_TAG -> globalTag = if (globalTag == TAG) "" else TAG - UPDATE_HEAD -> head = !head - UPDATE_FILE -> file = !file - UPDATE_DIR -> dir = - if (getDir().contains("test")) { - "" - } else { - PathUtils.getInternalAppFilesPath() + System.getProperty("file.separator") + "test" - } - UPDATE_BORDER -> border = !border - UPDATE_SINGLE -> single = !single - UPDATE_CONSOLE_FILTER -> consoleFilter = if (consoleFilter == LogUtils.V) LogUtils.W else LogUtils.V - UPDATE_FILE_FILTER -> fileFilter = if (fileFilter == LogUtils.V) LogUtils.I else LogUtils.V + override fun onCheckedChanged(buttonView: CompoundButton?, isChecked: Boolean) { + when (buttonView?.id) { + R.id.logSwitchCb -> mConfig.setLogSwitch(isChecked) + R.id.log2ConsoleSwitchCb -> mConfig.setConsoleSwitch(isChecked) + R.id.logGlobalTagCb -> { + if (isChecked) { + mConfig.setGlobalTag(TAG) + } else { + mConfig.setGlobalTag("") + } + logGlobalTagCb.text = String.format("Global Tag: %s", mConfig.globalTag) + } + R.id.logHeadSwitchCb -> mConfig.setLogHeadSwitch(isChecked) + R.id.log2FileSwitchCb -> mConfig.setLog2FileSwitch(isChecked) + R.id.logDirCb -> { + if (isChecked) { + mConfig.setDir("") + } else { + mConfig.setDir(PathUtils.getInternalAppFilesPath() + System.getProperty("file.separator") + "test") + } + logDirCb.text = String.format("Dir: %s", mConfig.dir) + } + R.id.logBorderSwitchCb -> mConfig.setBorderSwitch(isChecked) + R.id.logSingleTagSwitchCb -> mConfig.setSingleTagSwitch(isChecked) + R.id.logConsoleFilterCb -> { + mConfig.setConsoleFilter(if (isChecked) LogUtils.W else LogUtils.V) + logConsoleFilterCb.text = String.format("ConsoleFilter: %s", mConfig.consoleFilter) + } + R.id.logFileFilterCb -> { + mConfig.setFileFilter(if (isChecked) LogUtils.W else LogUtils.V) + logFileFilterCb.text = String.format("FileFilter: %s", mConfig.fileFilter) + } } - mConfig.setLogSwitch(log) - .setConsoleSwitch(console) - .setGlobalTag(globalTag) - .setLogHeadSwitch(head) - .setLog2FileSwitch(file) - .setDir(dir) - .setBorderSwitch(border) - .setSingleTagSwitch(single) - .setConsoleFilter(consoleFilter) - .setFileFilter(fileFilter) - logAboutTv.text = mConfig.toString() + updateAboutLog(); } - private fun getDir(): String { - return mConfig.toString() - .split(System.getProperty("line.separator"))[5] - .substring(5) + private fun updateAboutLog() { + logAboutTv.text = mConfig.toString() } override fun onDestroy() { diff --git a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/network/NetworkActivity.kt b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/network/NetworkActivity.kt index 716aa57fb4118bc9efdd2e7ef86830e0bf155706..5d2f6dfb19a3c5bad15e8ebe50693348241da828 100644 --- a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/network/NetworkActivity.kt +++ b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/network/NetworkActivity.kt @@ -7,6 +7,7 @@ import android.text.SpannableStringBuilder import android.view.View import com.blankj.lib.base.BaseBackActivity import com.blankj.utilcode.pkg.R +import com.blankj.utilcode.util.AppUtils import com.blankj.utilcode.util.NetworkUtils import com.blankj.utilcode.util.SpanUtils import com.blankj.utilcode.util.ThreadUtils @@ -56,7 +57,28 @@ class NetworkActivity : BaseBackActivity() { setTitle(R.string.demo_network) networkOpenWirelessSettingsBtn.setOnClickListener(this) - networkSetWifiEnabledBtn.setOnClickListener(this) + + networkMobileDataEnabledCb.setOnClickListener(this) + + if (AppUtils.isAppSystem()) { + networkMobileDataEnabledCb.setOnCheckedChangeListener { buttonView, isChecked -> + NetworkUtils.setMobileDataEnabled(isChecked) + updateAboutNetwork() + } + } else { + networkMobileDataEnabledCb.isEnabled = false + } + + networkWifiEnabledCb.setOnCheckedChangeListener { buttonView, isChecked -> + NetworkUtils.setWifiEnabled(isChecked) + updateAboutNetwork() + } + } + + override fun onResume() { + super.onResume() + networkMobileDataEnabledCb.isChecked = NetworkUtils.getMobileDataEnabled() + networkWifiEnabledCb.isChecked = NetworkUtils.getWifiEnabled() updateAboutNetwork() } @@ -67,8 +89,6 @@ class NetworkActivity : BaseBackActivity() { override fun onWidgetClick(view: View) { when (view.id) { R.id.networkOpenWirelessSettingsBtn -> NetworkUtils.openWirelessSettings() - R.id.btn_set_data_enabled -> NetworkUtils.setMobileDataEnabled(!NetworkUtils.getMobileDataEnabled()) - R.id.networkSetWifiEnabledBtn -> NetworkUtils.setWifiEnabled(!NetworkUtils.getWifiEnabled()) } updateAboutNetwork() } diff --git a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/phone/PhoneActivity.kt b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/phone/PhoneActivity.kt index c15c1edbbdf001570044fa1d0ef7519994b37923..13a5e5dfec654e46b991bf4021c266cda0a75d43 100644 --- a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/phone/PhoneActivity.kt +++ b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/phone/PhoneActivity.kt @@ -56,7 +56,7 @@ class PhoneActivity : BaseBackActivity() { .appendLine("isSimCardReady: " + PhoneUtils.isSimCardReady()) .appendLine("getSimOperatorName: " + PhoneUtils.getSimOperatorName()) .appendLine("getSimOperatorByMnc: " + PhoneUtils.getSimOperatorByMnc()) - .appendLine("getPhoneStatus: " + PhoneUtils.getPhoneStatus()) + .append("getPhoneStatus: " + PhoneUtils.getPhoneStatus()) .create() phoneDialBtn.setOnClickListener(this) diff --git a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/resource/ResourceActivity.kt b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/resource/ResourceActivity.kt index 3be2c25d4727641822403a8780608b5a331fd16d..af5cb7c6278963594b8de907ad3e6615dfe4f81e 100644 --- a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/resource/ResourceActivity.kt +++ b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/resource/ResourceActivity.kt @@ -16,7 +16,7 @@ import kotlinx.android.synthetic.main.activity_resource.* * author: Blankj * blog : http://blankj.com * time : 2018/05/07 - * desc : + * desc : demo about ResourceUtils * ``` */ class ResourceActivity : BaseBackActivity() { @@ -37,8 +37,10 @@ class ResourceActivity : BaseBackActivity() { } override fun initView(savedInstanceState: Bundle?, contentView: View) { - resourceTestAssetsBtn.setOnClickListener(this) - resourceTestRawBtn.setOnClickListener(this) + setTitle(R.string.demo_resource) + + resourceCopyFileFromAssets.setOnClickListener(this) + resourceCopyFileFromRaw.setOnClickListener(this) SpanUtils.with(resourceAboutTv) .appendLine("readAssets2String: " + ResourceUtils.readAssets2String("test/test.txt")) @@ -53,8 +55,8 @@ class ResourceActivity : BaseBackActivity() { override fun onWidgetClick(view: View) { when (view.id) { - R.id.resourceTestAssetsBtn -> ResourceUtils.copyFileFromAssets("test", Config.CACHE_PATH + "/assets/test") - R.id.resourceTestRawBtn -> ResourceUtils.copyFileFromRaw(R.raw.test, Config.CACHE_PATH + "/raw/test.txt") + R.id.resourceCopyFileFromAssets -> ResourceUtils.copyFileFromAssets("test", Config.CACHE_PATH + "/assets/test") + R.id.resourceCopyFileFromRaw -> ResourceUtils.copyFileFromRaw(R.raw.test, Config.CACHE_PATH + "/raw/test.txt") } } } diff --git a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/spStatic/SPStaticActivity.kt b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/spStatic/SPStaticActivity.kt index 3fb3783e1ce51ae21280c8a37bbd7ede74569b22..03103b36fd82ecf31ad490bc9a5df3e379c25adf 100644 --- a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/spStatic/SPStaticActivity.kt +++ b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/spStatic/SPStaticActivity.kt @@ -48,6 +48,8 @@ class SPStaticActivity : BaseBackActivity() { } override fun initView(savedInstanceState: Bundle?, contentView: View) { + setTitle(R.string.demo_spStatic) + spStaticPutStringBtn.setOnClickListener(this) spStaticPutIntBtn.setOnClickListener(this) spStaticPutLongBtn.setOnClickListener(this) 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 c4b098f556f47c1fddecf2a44175a41be987818c..4e524feb3dcbcae40b91ef644e567c66915bca19 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 @@ -229,12 +229,12 @@ class SpanActivity : BaseBackActivity() { } - override fun onDestroy() { - if (valueAnimator.isRunning) { - valueAnimator.cancel() - } - super.onDestroy() - } +// override fun onDestroy() { +// if (valueAnimator.isRunning) { +// valueAnimator.cancel() +// } +// super.onDestroy() +// } } class BlurMaskFilterSpan(private var mRadius: Float) : CharacterStyle(), UpdateAppearance { 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 02c24958c8d93fb88b7ef299bdbbd343baeb09d2..314ba33d59d5ad6e00776c2c52944584e1be37c9 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 @@ -23,7 +23,7 @@ object CustomToast { private val HANDLER = Handler(Looper.getMainLooper()) fun showShort(text: CharSequence) { - show(text, Toast.LENGTH_SHORT) + showReal(text, Toast.LENGTH_SHORT) } fun showShort(@StringRes resId: Int) { @@ -39,7 +39,7 @@ object CustomToast { } fun showLong(text: CharSequence) { - show(text, Toast.LENGTH_LONG) + showReal(text, Toast.LENGTH_LONG) } fun showLong(@StringRes resId: Int) { @@ -63,10 +63,10 @@ object CustomToast { } private fun show(format: String, duration: Int, vararg args: Any) { - show(String.format(format, *args), duration) + showReal(String.format(format, *args), duration) } - private fun show(text: CharSequence, duration: Int) { + private fun showReal(text: CharSequence, duration: Int) { HANDLER.post { val toastView: TextView if (duration == Toast.LENGTH_SHORT) { 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 dfba33e505a176ed0e4bb1102463c4ad67f9933b..c93dfa7399e6d3f1950890e7720ceff5ee447837 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 @@ -79,7 +79,7 @@ object DialogHelper { dialogView.findViewById(R.id.toastDialogShowShortToastBtn) .setOnClickListener { ToastUtils.showShort("Short") } val dialog = AlertDialog.Builder(topActivity).setView(dialogView).create() - dialog.setCanceledOnTouchOutside(false) +// dialog.setCanceledOnTouchOutside(false) dialog.show() } } diff --git a/utilcode/pkg/src/main/res/layout/activity_bar_nav.xml b/utilcode/pkg/src/main/res/layout/activity_bar_nav.xml index 5b954d7025cababa5a2b930df8bdb9960dad50ff..a51692d9bdd5dc43fa1b081dbee10ac6c5c57d84 100644 --- a/utilcode/pkg/src/main/res/layout/activity_bar_nav.xml +++ b/utilcode/pkg/src/main/res/layout/activity_bar_nav.xml @@ -13,19 +13,12 @@ android:layout_width="match_parent" android:layout_height="wrap_content" /> -