sdf
AndroidUtilCodeKTX ! 专注提升 Android 开发效率 !
该类库利用 Kotlin 语言特性合理封装了 Android 开发中的常用操作,同时也收集了开发过程中的常用工具类。 旨在做同样的事情,写最少的代码,提升开发效率。
Change log
implementation 'luyao.util.ktx:AndroidUtilKTX:0.0.5'
最新版本将第一时间用在我的另外两个开源项目,wanandroid 和 Box,欢迎关注 !
FragmentActivity.request(vararg permissions: String, callbacks: PermissionsCallbackDSL.() -> Unit)
Activity.startKtxActivity( flags: Int? = null, extra: Bundle? = null, value: Pair<String, Any>? = null, values: Collection<Pair<String, Any>?>? = null ) fun <reified T : Activity> Activity.startKtxActivityForResult( requestCode: Int, flags: Int? = null, extra: Bundle? = null, value: Pair<String, Any>? = null, values: Collection<Pair<String, Any>?>? = null ) Fragment.startKtxActivity() Fragment.startKtxActivityForResult() Context.startKtxActivity Activity.hideKeyboard() Activity.showKeyboard(et: EditText) Activity.hideKeyboard(view: View)
Context.versionName: String Context.versionCode: Long Context.getAppInfo(apkPath: String): AppInfo Context.getAppInfos(apkFolderPath: String): List<AppInfo> Context.getAppSignature(packageName: String = this.packageName): ByteArray? Context.isPackageInstalled(pkgName: String)
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?, cipherAlgotirhm: String = AES_CFB_NOPADDING) File.aesDecrypt(key: ByteArray, iv: ByteArray, destFilePath: String): File?, cipherAlgotirhm: String = AES_CFB_NOPADDING) initAESKey(size: Int): ByteArray initCipher(mode: Int, key: ByteArray, iv: ByteArray, cipherAlgotirhm: String): Cipher
fromM() beforeM() fromN() beforeN() fromO() beforeO() fromP() beforeP() fromSpecificVersion(version: Int) beforeSpecificVersion(version: Int) Context.dp2px(dp: Int) Context.px2dp(px: Int) View.dp2px(dp: Int) View.px2dp(px: Int) Context.screenWidth Context.screenHeight Context.copyToClipboard(label: String, text: String) Context.checkAccessbilityServiceEnabled(serviceName: String) Any?.notNull(f: () -> T, t: () -> T): T Context.isRTLLayout
fun isOnMainThread()
Drawable.convertToBitmap()
File.canListFiles File.totalSize File.formatSize File.mimeType File.listFiles(isRecursive: Boolean = false, filter: ((file: File) -> Boolean)? = null) File.writeText(append: Boolean = false, text: String, charset: Charset = Charsets.UTF_8) File.writeBytes(append: Boolean = false, bytes: ByteArray) File.moveTo(destFile: File, overwrite: Boolean = true, reserve: Boolean = true) File.moveToWithProgress( destFolder: File, overwrite: Boolean = true, reserve: Boolean = true, func: ((file: File, i: Int) -> Unit)? = null) File.rename(newName: String) File.rename(newFile: File)
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
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) Context.sendEmail(email: String, subject: String?, text: String?)
pushActivity(activity: Activity) popActivity(activity: Activity) finishCurrentActivity() finishActivity(activity: Activity) finishActivity(clazz: Class<*>) finishAllActivity()
text( text: CharSequence, isNewLine: Boolean = true, textSize: Int = -1, fontFamily: String = "", customTypeFace: Typeface? = null, isDp: Boolean = true, fontProportion: Float = -1f, xFontProportion: Float = -1f, lineHeight: Int = -1, foregroundColor: Int = -1, backgroundColor: Int = -1, alignment: Layout.Alignment? = null, isBold: Boolean = false, isStrikethrough: Boolean = false, isUnderline: Boolean = false, isItalic: Boolean = false, isBoldAndItalic: Boolean = false, isSuperscript: Boolean = false, isSubscript: Boolean = false, first: Int = 0, rest: Int = 0, quoteColor: Int = -1, quoteStripeWidth: Int = STANDARD_STRIPE_WIDTH_PX, quoteGapWidth: Int = STANDARD_GAP_WIDTH_PX, bulletColor: Int = -1, bulletRadius: Int = STANDARD_BULLET_RADIUS, bulletGapWidth: Int = STANDARD_GAP_WIDTH_PX, clickSpan: ClickableSpan? = null, url: String? = null, blurRadius: Float = -1f, blurStyle: BlurMaskFilter.Blur = BlurMaskFilter.Blur.NORMAL ): KtxSpan image( resId: Int, verticalAlignment: Int = KtxImageSpan.ALIGN_MIDDLE, marginLeft: Int = 0, marginRight: Int = 0, offsetY: Int = 0, fontWidthMultiple: Float = -1f ) blockLine(@Px height: Int, addBlockAlways: Boolean = false)
SearchView.queryTextListener(listener: KtxQueryTextLister.() -> Unit) SeekBar.onProgressBarChanged(callback: (Int, Boolean) -> Unit) TextView.textWatcher(watcher: KtxTextWatcher.() -> Unit) ViewPager.onPageSelected(pageChangedAction: (newPosition: Int) -> Unit)
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)
<T> Context.putSpValue(key: String, value: T, name: String = packageName) <T> Activity.putSpValue(key: String, value: T, name: String = packageName) <T> Context.getSpValue(key: String, default: T, name: String = packageName ): T <T> Activity.getSpValue(key: String, default: T, name: String = packageName): T
String.areDigitsOnly()
Context.windowManager Context.clipboardManager Context.layoutInflater Context.activityManager Context.powerManager Context.alarmManager Context.notificationManager Context.keyguardManager Context.locationManager Context.searchManager Context.storageManager Context.vibrator Context.connectivityManager Context.wifiManager Context.audioManager Context.mediaRouter Context.telephonyManager Context.sensorManager Context.subscriptionManager Context.carrierConfigManager Context.inputMethodManager Context.uiModeManager Context.downloadManager Context.batteryManager Context.jobScheduler Context.accessibilityManager
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)
ByteArray.toHexString() : 字节数组转十六进制字符串
View.visible() View.invisible() View.gone() View.reverseVisiblity(needGone: Boolean = true) View.changeVisible(visible: Boolean, needGone: Boolean = true) 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 RecyclerView.itemPadding(padding:Int) RecyclerView.itemPadding(top: Int, bottom: Int, left: Int = 0, right: Int = 0) TextView.notEmpty(f: TextView.() -> Unit, t: TextView.() -> Unit) View.onGlobalLayout(crossinline callback: () -> Unit) fun View.afterMeasured(crossinline callback: View.() -> Unit)
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802032778号
AndroidUtilCodeKTX ! 专注提升 Android 开发效率 !
该类库利用 Kotlin 语言特性合理封装了 Android 开发中的常用操作,同时也收集了开发过程中的常用工具类。 旨在做同样的事情,写最少的代码,提升开发效率。
Change log
Use
APIS (keep updating…)
权限相关 [Demo]
ActivityExt [Demo]
AppExt
AesExt [Demo]
CommonExt
Constants
DrawableExt
FileExt
HashExt [Demo]
IntentExt [Demo]
KtxManager [Demo]
KtxSpan [Demo]
Listener [Demo]
LogExt
SharedPreferencesExt [Demo]
StringExt
SystemServiceExt
ToastExt [Demo]
TransformExt
ViewExt
Others