From 314f640b9c96aa5329cc9b210958e79fe424b304 Mon Sep 17 00:00:00 2001 From: luyao Date: Tue, 16 Jul 2019 16:55:35 +0800 Subject: [PATCH] update readme --- README.md | 175 ++++++++++++------ .../java/luyao/util/ktx/ext/ActivityExt.kt | 60 +++++- .../main/java/luyao/util/ktx/ext/CommonExt.kt | 2 +- .../main/java/luyao/util/ktx/ext/LogExt.kt | 10 +- .../sharedpreferences/SharedPreferencesExt.kt | 4 +- 5 files changed, 187 insertions(+), 64 deletions(-) diff --git a/README.md b/README.md index 9ee0820..73a3f06 100644 --- a/README.md +++ b/README.md @@ -11,91 +11,162 @@ ### [权限相关](https://github.com/lulululbj/AndroidUtilCodeKTX/blob/master/ktx/src/main/java/luyao/util/ktx/ext/permission/PermissionExt.kt) [[Demo]](https://github.com/lulululbj/AndroidUtilCodeKTX/blob/master/app/src/main/java/luyao/util/ktx/ui/PermissionExtActivity.kt) ```kotlin -fun FragmentActivity.request() :权限请求 +FragmentActivity.request(vararg permissions: String, callbacks: PermissionsCallbackDSL.() -> Unit) ``` ### [AppExt](https://github.com/lulululbj/AndroidUtilCodeKTX/blob/master/ktx/src/main/java/luyao/util/ktx/ext/AppExt.kt) ```kotlin -fun Context.getVersionName() : 获取应用版本名称 -fun Context.getVersionCode() :获取应用版本号 -fun Context.getAppSignature() :获取应用签名 -fun Context.getAppInfo() :根据安装包获取应用信息 -fun Context.getAppInfos() +Context.versionName: String +Context.versionCode: Long +Context.getAppInfo(apkPath: String): AppInfo +Context.getAppInfos(apkFolderPath: String): List +Context.getAppSignature(packageName: String = this.packageName): ByteArray? ``` ### [CommonExt](https://github.com/lulululbj/AndroidUtilCodeKTX/blob/master/ktx/src/main/java/luyao/util/ktx/ext/CommonExt.kt) ```kotlin -fun Context.dp2px() : dp 转 px -fun Context.px2dp() :px 转 dp -fun View.dp2px() :dp 转 px -fun View.px2dp() :px 转 dp -fun Context.getWidth() :获取屏幕宽度 -fun Context.getHeight() :获取屏幕高度 -fun Context.copyToClipboard() :复制到粘贴板 +Context.dp2px(dp: Float): Int +Context.px2dp(px: Float): Int +View.dp2px(dp: Float): Int +View.px2dp(px: Float): Int +Context.screenWidth +Context.screenHeight +Context.copyToClipboard(label: String, text: String) ``` ### [HashExt](https://github.com/lulululbj/AndroidUtilCodeKTX/blob/master/ktx/src/main/java/luyao/util/ktx/ext/HashExt.kt) [[Demo]](https://github.com/lulululbj/AndroidUtilCodeKTX/blob/master/ktx/src/test/java/luyao/util/ktx/ext/HashExtKtTest.kt) ```kotlin -fun ByteArray.hash() :获取字节数组哈希值 -fun String.hash() :获取字符串哈希值 -fun File.hash() :获取文件哈希值 -fun ByteArray.md5Bytes() -fun ByteArray.md5() :获取字节数组 md5 值 -fun String.md5() :获取字符串 md5 值 -fun ByteArray.sha1Bytes() -fun ByteArray.sha1() :获取字节数组 sha1 值 -fun String.sha1() :获取字符串 sha1 值 -fun ByteArray.sha224Bytes() -fun ByteArray.sha224() :获取字节数组 sha224 值 -fun String.sha224() :获取字符串 sha224 值 -fun ByteArray.sha256Bytes() -fun ByteArray.sha256() :获取字节数组 sha256 值 -fun String.sha256() :获取字符串 sha256 值 -fun ByteArray.sha384Bytes() -fun ByteArray.sha384() :获取字节数组 sha384 值 -fun String.sha384() :获取字符串 sha384 值 -fun ByteArray.sha512Bytes() -fun ByteArray.sha512() :获取字节数组 sha512 值 -fun String.sha512() :获取字符串 sha512 值 +ByteArray.hash(algorithm: Hash): String +String.hash(algorithm: Hash, charset: Charset = Charset.forName("utf-8")): String +ByteArray.md5Bytes(): ByteArray +ByteArray.md5(): String +String.md5(charset: Charset = Charset.forName("utf-8")): String +ByteArray.sha1Bytes(): ByteArray +ByteArray.sha1(): String +String.sha1(charset: Charset = Charset.forName("utf-8")): String +ByteArray.sha224Bytes(): ByteArray +ByteArray.sha224(): String +String.sha224(charset: Charset = Charset.forName("utf-8")): String +ByteArray.sha256Bytes(): ByteArray +ByteArray.sha256(): String +String.sha256(charset: Charset = Charset.forName("utf-8")): String +ByteArray.sha384Bytes(): ByteArray +ByteArray.sha384(): String +String.sha384(charset: Charset = Charset.forName("utf-8")): String +ByteArray.sha512Bytes(): ByteArray +ByteArray.sha512(): String +String.sha512(charset: Charset = Charset.forName("utf-8")): String +File.hash(algorithm: Hash = Hash.SHA1): String ``` ### [AesExt](https://github.com/lulululbj/AndroidUtilCodeKTX/blob/master/ktx/src/main/java/luyao/util/ktx/ext/AesExt.kt) [[Demo]](https://github.com/lulululbj/AndroidUtilCodeKTX/blob/master/ktx/src/test/java/luyao/util/ktx/ext/AesExtKtTest.kt) ```kotlin -fun ByteArray.aesEncrypt() :加密字节数组,默认 CFB -fun ByteArray.aesDecrypt() :解密字节数组,默认 CFB -fun File.aesEncrypt() :加密文件,CFB 流加密模式 -fun File.aesDecrypt() :解密文件,CFB 流加密模式 +ByteArray.aesEncrypt(key: ByteArray, iv: ByteArray, cipherAlgotirhm: String = AES_CFB_NOPADDING): ByteArray +ByteArray.aesDecrypt(key: ByteArray, iv: ByteArray, cipherAlgotirhm: String = AES_CFB_NOPADDING): ByteArray +File.aesEncrypt(key: ByteArray, iv: ByteArray, destFilePath: String): File? +File.aesDecrypt(key: ByteArray, iv: ByteArray, destFilePath: String): File? ``` ### [IntentExt](https://github.com/lulululbj/AndroidUtilCodeKTX/blob/master/ktx/src/main/java/luyao/util/ktx/ext/IntentExt.kt) [[Demo]](https://github.com/lulululbj/AndroidUtilCodeKTX/blob/master/app/src/main/java/luyao/util/ktx/ui/IntentExtActivity.kt) ```kotlin -fun Context.goToAppInfoPage() : 跳转到应用信息页面 -fun Context.goToDateAndTimePage() : 跳转到日期和时间设置页面 -fun Context.goToLanguagePage() : 跳转到语言设置页面 -fun Context.goToAccessibilitySetting() : 跳转到无障碍服务设置页面 -fun Context.openApp() : 打开 app -fun Context.openInAppStore() : 在应用商店打开 app -fun Context.installApk() : 安装 apk -fun Context.openBrowser(url:String) :打开浏览器跳转到指定网页 -fun Context.uninstallApp() : 卸载 app +Context.getAppInfoIntent(packageName: String = this.packageName): Intent +Context.goToAppInfoPage(packageName: String = this.packageName) +Context.getDateAndTimeIntent(): Intent +Context.goToDateAndTimePage() +Context.getLanguageIntent() +Context.goToLanguagePage() +Context.getInstallIntent(apkFile: File): Intent? +Context.goToAccessibilitySetting() +Context.installApk(apkFile: File) +Context.openBrowser(url: String) +Context.openInAppStore(packageName: String = this.packageName) +Context.openApp(packageName: String) +Context.uninstallApp(packageName: String) +``` + +### [LogExt]() + +```kotlin +String.logv(tag: String = TAG) +String.logd(tag: String = TAG) +String.logi(tag: String = TAG) +String.logw(tag: String = TAG) +String.loge(tag: String = TAG) ``` ### [ToastExt](https://github.com/lulululbj/AndroidUtilCodeKTX/blob/master/ktx/src/main/java/luyao/util/ktx/ext/ToastExt.kt) [[Demo]](https://github.com/lulululbj/AndroidUtilCodeKTX/blob/master/app/src/main/java/luyao/util/ktx/ui/ToastExtActivity.kt) ```kotlin -fun Context.toast() -fun Context.longToast() -fun Any.toast() -fun Any.longToast() +Context.toast(content: String, duration: Int = Toast.LENGTH_SHORT) +Context.toast(@StringRes id: Int, duration: Int = Toast.LENGTH_SHORT) +Context.longToast(content: String) +Context.longToast(@StringRes id: Int) +Any.toast(context: Context, content: String, duration: Int = Toast.LENGTH_SHORT) +Any.toast(context: Context, @StringRes id: Int, duration: Int=Toast.LENGTH_SHORT) +Any.longToast(context: Context, content: String) +Any.longToast(context: Context, @StringRes id: Int) +``` + +### [SharedPreferencesExt]() + +```kotlin +fun Context.putSpValue(key: String, value: T, name: String = packageName) +fun Activity.putSpValue(key: String, value: T, name: String = packageName) +fun Context.getSpValue(key: String, default: T, name: String = packageName ): T +fun Activity.getSpValue(key: String, default: T, name: String = packageName): T +``` + +### [SystemServiceExt]() + +```kotlin +val Context.windowManager +val Context.clipboardManager +val Context.layoutInflater +val Context.activityManager +val Context.powerManager +val Context.alarmManager +val Context.notificationManager +val Context.keyguardManager +val Context.locationManager +val Context.searchManager +val Context.storageManager +val Context.vibrator +val Context.connectivityManager +val Context.wifiManager +val Context.audioManager +val Context.mediaRouter +val Context.telephonyManager +val Context.sensorManager +val Context.subscriptionManager +val Context.carrierConfigManager +val Context.inputMethodManager +val Context.uiModeManager +val Context.downloadManager +val Context.batteryManager +val Context.jobScheduler ``` ### [TransformExt](https://github.com/lulululbj/AndroidUtilCodeKTX/blob/master/ktx/src/main/java/luyao/util/ktx/ext/TransformExt.kt) ```kotlin -fun ByteArray.toHexString() : 字节数组转十六进制字符串 +ByteArray.toHexString() : 字节数组转十六进制字符串 ``` + +### [ViewExt]() + +```kotlin +View.visible() +View.invisible() +View.gone() +var View.isVisible: Boolean +var View.isInvisible: Boolean +var View.isGone: Boolean +View.setPadding(@Px size: Int) +View.postDelayed(delayInMillis: Long, crossinline action: () -> Unit): Runnable +View.toBitmap(config: Bitmap.Config = Bitmap.Config.ARGB_8888): Bitmap +``` \ No newline at end of file diff --git a/ktx/src/main/java/luyao/util/ktx/ext/ActivityExt.kt b/ktx/src/main/java/luyao/util/ktx/ext/ActivityExt.kt index 5af62ce..1c507a8 100644 --- a/ktx/src/main/java/luyao/util/ktx/ext/ActivityExt.kt +++ b/ktx/src/main/java/luyao/util/ktx/ext/ActivityExt.kt @@ -5,15 +5,25 @@ import android.content.Context import android.content.Intent import android.os.Bundle import android.os.Parcelable +import androidx.fragment.app.Fragment import java.io.Serializable /** * Created by luyao * on 2019/7/9 14:17 */ -inline fun Activity.startKtxActivity(flags: Int? = null, extra: Bundle? = null): Unit = +inline fun Activity.startKtxActivity(flags: Int? = null, extra: Bundle? = null) = startActivity(getIntent(flags, extra)) +inline fun Fragment.startKtxActivity(flags: Int? = null, extra: Bundle? = null) = + activity?.let { + startActivity(activity?.getIntent(flags, extra)) + } + +inline fun Context.startKtxActivity(flags: Int? = null, extra: Bundle? = null) = + startActivity(getIntent(flags, extra)) + + inline fun Activity.startKtxActivity( flags: Int? = null, extra: Bundle? = null, @@ -21,6 +31,22 @@ inline fun Activity.startKtxActivity( ): Unit = startActivity(getIntent(flags, extra, arrayListOf(value))) +inline fun Fragment.startKtxActivity( + flags: Int? = null, + extra: Bundle? = null, + value: Pair? +) = + activity?.let { + startActivity(activity?.getIntent(flags, extra, arrayListOf(value))) + } + +inline fun Context.startKtxActivity( + flags: Int? = null, + extra: Bundle? = null, + value: Pair? +): Unit = + startActivity(getIntent(flags, extra, arrayListOf(value))) + inline fun Activity.startKtxActivity( flags: Int? = null, extra: Bundle? = null, @@ -28,6 +54,22 @@ inline fun Activity.startKtxActivity( ): Unit = startActivity(getIntent(flags, extra, values)) +inline fun Fragment.startKtxActivity( + flags: Int? = null, + extra: Bundle? = null, + values: List?>? +) = + activity?.let { + startActivity(activity?.getIntent(flags, extra, values)) + } + +inline fun Context.startKtxActivity( + flags: Int? = null, + extra: Bundle? = null, + values: List?>? +) = + startActivity(getIntent(flags, extra, values)) + inline fun Activity.startKtxActivityForResult( requestCode: Int, flags: Int? = null, @@ -35,13 +77,22 @@ inline fun Activity.startKtxActivityForResult( ): Unit = startActivityForResult(getIntent(flags, extra), requestCode) -inline fun Activity.getIntent(flags: Int?, extra: Bundle?): Intent = +inline fun Fragment.startKtxActivityForResult( + requestCode: Int, + flags: Int? = null, + extra: Bundle? = null +) = + activity?.let { + startActivityForResult(activity?.getIntent(flags, extra), requestCode) + } + +inline fun Context.getIntent(flags: Int?, extra: Bundle?): Intent = Intent(this, T::class.java).apply { flags?.let { setFlags(flags) } extra?.let { putExtras(extra) } } -inline fun Activity.getIntent( +inline fun Context.getIntent( flags: Int?, extra: Bundle?, pairs: List?>? @@ -83,4 +134,5 @@ inline fun Activity.getIntent( } } } - } \ No newline at end of file + } + diff --git a/ktx/src/main/java/luyao/util/ktx/ext/CommonExt.kt b/ktx/src/main/java/luyao/util/ktx/ext/CommonExt.kt index 07481c3..e73bc6a 100644 --- a/ktx/src/main/java/luyao/util/ktx/ext/CommonExt.kt +++ b/ktx/src/main/java/luyao/util/ktx/ext/CommonExt.kt @@ -37,7 +37,7 @@ val Context.screenWidth val Context.screenHeight get() = resources.displayMetrics.heightPixels -fun Context.copyToClipboard(text: String, label: String) { +fun Context.copyToClipboard(label: String, text: String) { val cm = getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager val clipData = ClipData.newPlainText(label, text) cm.primaryClip = clipData diff --git a/ktx/src/main/java/luyao/util/ktx/ext/LogExt.kt b/ktx/src/main/java/luyao/util/ktx/ext/LogExt.kt index ce2cb98..677abbe 100644 --- a/ktx/src/main/java/luyao/util/ktx/ext/LogExt.kt +++ b/ktx/src/main/java/luyao/util/ktx/ext/LogExt.kt @@ -13,11 +13,11 @@ private enum class LEVEL { V, D, I, W, E } -fun String.logV(tag: String = TAG) = log(LEVEL.V, tag, this) -fun String.logD(tag: String = TAG) = log(LEVEL.D, tag, this) -fun String.logI(tag: String = TAG) = log(LEVEL.I, tag, this) -fun String.logW(tag: String = TAG) = log(LEVEL.W, tag, this) -fun String.logE(tag: String = TAG) = log(LEVEL.E, tag, this) +fun String.logv(tag: String = TAG) = log(LEVEL.V, tag, this) +fun String.logd(tag: String = TAG) = log(LEVEL.D, tag, this) +fun String.logi(tag: String = TAG) = log(LEVEL.I, tag, this) +fun String.logw(tag: String = TAG) = log(LEVEL.W, tag, this) +fun String.loge(tag: String = TAG) = log(LEVEL.E, tag, this) private fun log(level: LEVEL, tag: String, message: String) { when (level) { diff --git a/ktx/src/main/java/luyao/util/ktx/ext/sharedpreferences/SharedPreferencesExt.kt b/ktx/src/main/java/luyao/util/ktx/ext/sharedpreferences/SharedPreferencesExt.kt index 1d7d235..97453b8 100644 --- a/ktx/src/main/java/luyao/util/ktx/ext/sharedpreferences/SharedPreferencesExt.kt +++ b/ktx/src/main/java/luyao/util/ktx/ext/sharedpreferences/SharedPreferencesExt.kt @@ -30,7 +30,7 @@ fun Activity.sp(name: String = packageName, mode: Int = Context.MODE_PRIVATE): S getSharedPreferences(name, mode) -fun Context.putSpValue(name: String = packageName, key: String, value: T) = sp(name).edit { +fun Context.putSpValue(key: String, value: T, name: String = packageName) = sp(name).edit { when (value) { is Long -> putLong(key, value) is String -> putString(key, value) @@ -52,7 +52,7 @@ fun Activity.putSpValue(key: String, value: T, name: String = packageName) = } } -fun Context.getSpValue(key: String, default: T, name: String = packageName ): T = sp(name).run { +fun Context.getSpValue(key: String, default: T, name: String = packageName): T = sp(name).run { val result = when (default) { is Long -> getLong(key, default) is String -> getString(key, default)