| name | basekit-ktx |
| description | Collection of Kotlin extensions for Android development. Invoke when needing common Android/Kotlin shortcuts. |
BaseKit KTX Skills
简介
me.shetj.base.ktx 模块提供了一系列 Kotlin 扩展函数,涵盖了 Android 开发的各个方面,从 UI 操作到系统组件交互,旨在提高开发效率。此外,me.shetj.base.tools.file 包下提供了一系列基础工具类。
核心功能分类
1. Context, Activity, Fragment & Window
提供界面跳转、权限请求、结果回调、沉浸式状态栏及 Context 增强功能。
-
Context 增强 (ContextKt):
context.lifeScope.launch { ... }
val activity = context.asActivity
val componentActivity = context.asComponentActivity
context.moveToFrontApp()
context.moveToFront(activity)
context.getIdByName("layout", "activity_main")
context.openActivity("scheme://...")
context.openActivityByPackageName("com.example.app")
-
ActivityResultLauncher (ActivityResultExt):
自动管理生命周期的 Launcher 注册,简化 startActivityForResult 和权限请求。
startRequestPermission(Manifest.permission.CAMERA) { granted -> }
startRequestPermissions(arrayOf(Manifest.permission.CAMERA)) { result -> }
startActivityResult(intent) { result -> }
takePicture { uri -> }
selectFile { uri -> }
createFile("test.txt") { uri -> }
cropImage(CropImage(uri, 1, 1)) { uri -> }
pickVisualMedia(PickVisualMediaRequest.Builder().build()) { uri -> }
-
WindowInsets & 沉浸式 (WinCompatExt):
基于 WindowCompat 和 enableEdgeToEdge 的现代化窗口控制。
immerse(
type = Type.statusBars(),
statusIsBlackText = true,
navigationIsBlackLine = true
)
setAppearance(isBlackText = true, color = Color.WHITE)
hideSystemUI()
showSystemUI()
getStatusBarsHeight()
getNavigationBarsHeight()
-
Fragment 管理与转场 (ActivityUtilsExt, TransitionExt):
supportFragmentManager.replaceFragment(fragment, R.id.container)
supportFragmentManager.addFragmentToActivity(fragment, R.id.container)
fragment.show(supportFragmentManager, R.id.container)
val options = activity.getActivityOptions(sharedView, "transitionName")
activity.startNewActivity(options, TargetActivity::class.java)
context.getTransition(R.transition.slide)
2. View & UI 增强
简化 View 动画、布局、约束、文本样式及常用控件操作。
-
View 基础 (ViewExt):
view.setClicksAnimate()
view.clipRound(10f.dp2px)
view.layoutRatio(ratioW = 16, ratioH = 9)
view.isCompletelyVisible(parentView)
-
EditText 输入流 (EditTextExt):
editText.asFlow().collect { text -> ... }
editText.asLiveData().observe(owner) { text -> ... }
-
AppBar & Menu (AppBarExt, MenuExt):
appBarLayout.enableAppBar(true)
menu.setVisible(true)
-
ConstraintLayout 动态布局 (ConstraintSetExt):
DSL 风格的约束设置。
constraintLayout.reLayout {
topToParent(viewId, margin = 10)
startToStart(viewId, targetId)
}
-
文本样式 (SpanExt, StringExt):
textView.text = "Hello".toSizeSpan(0..5, 1.5f).toColorSpan(...)
textView.text = highString("Content with key", listOf("key"), "#FF0000")
"<b>Bold</b>".fromHtml()
-
动画 (AnimatorExt, LayoutAnimateExt):
view.rotation(duration = 1000)
viewGroup.addLayoutChangeAnim { ... }
-
RecyclerView (RecyclerViewExt):
recyclerView.smoothToPosition(pos)
recyclerView.isCompleteVisibleScreen(pos)
3. 数据处理与工具
JSON 解析、字符串处理、日志打印、数据流操作等。
-
String 常用扩展 (StringExt):
"13800000000".isPhone()
"420...".isIdCard()
"content".md5
"#FFFFFF".toColor
"text".copy(context)
getAssetsString(context, "config.json")
-
JSON & Gson (GsonExt, StringExt):
obj.toJson()
jsonString.toBean<User>()
jsonString.toList<User>()
jsonString.toMap()
val listType = GsonExt.list(User::class.java)
val mapType = GsonExt.map(String::class.java, User::class.java)
-
日志打印 (StringExt):
提供基于 Timber 的便捷日志打印,支持 JSON 格式化和长日志分段。
"message".logI()
"error".logE()
exception.logE()
jsonString.logJson()
longString.logChunked()
"onResume".logUILife()
-
LiveData & Flow (LiveDataExt, FlowExt):
liveData.throttleLast(1000)
liveData.throttleFirst(1000)
flow.throttleFirst(1000)
-
反射与泛型 (ClassExt, TypeExt):
val clazz = getClazz<MyViewModel>(this)
val clazzInterface = getClazzByInterface<MyInterface>(this)
val obj = getObjByClassArg<MyObject>(this)
val rawType = getRawType(type)
-
数据转换 (DataExt):
10.dp2px
100.toNumberCH()
runTimeMillis { }
4. 组件集成与工具
Intent、Navigation、Glide、Uri、Saver 等工具集成。
-
Intent 跳转 (IntentExt):
context.openUri("https://...")
context.openMarket()
context.openSetting()
context.openNotificationSetting()
context.sendEmailText(...)
-
Navigation 导航 (NavExt):
activity.fixFindNavController(R.id.nav_host)
navController.getCurSavedStateHandle()
navController.getPreSavedStateHandle()
-
Glide 图片加载 (GlideExt):
imageView.loadImage(url)
imageView.loadImageBitmap(url)
saveImage(context, url)
-
文件与 Uri (ContentExt, UriExt):
createImagePathUri(context)
createVideoPathUri(context)
uri.parseUriParams()
-
数据持久化 (SaverExt):
saverCreate("group", "key", "value").updateToDB()
-
线程切换 (ArmExt, CoroutineExt):
runOnMain { ... }
runOnIo { ... }
data.withIO { ... }
5. 基础工具类 (Tools)
位于 me.shetj.base.tools.file 包下,提供文件、IO、SP 等静态工具方法。
-
文件操作 (FileUtils):
FileUtils.isFileExists(path)
FileUtils.createOrExistsFile(path)
FileUtils.deleteFile(path)
FileUtils.copyFile(src, dest, listener)
FileUtils.rename(file, newName)
FileUtils.getFileMD5ToString(path)
-
文件读写 (FileIOUtils):
FileIOUtils.writeFileFromString(file, content)
val content = FileIOUtils.readFile2String(file)
val lines = FileIOUtils.readFile2List(file)
-
Android Q 适配 (FileQUtils):
FileQUtils.getFileAbsolutePath(context, uri)
-
SharedPreferences (SPUtils):
SPUtils.put(context, "key", value)
val value = SPUtils.get(context, "key", default)
SPUtils.remove(context, "key")
SPUtils.clear(context)
-
字符串工具 (StringUtils):
StringUtils.isPhone(number)
StringUtils.isIdCard(id)
StringUtils.numberToCH(123)
-
环境路径 (EnvironmentStorage):
val sdCard = EnvironmentStorage.sdCardPath
val cache = EnvironmentStorage.cache
6. 日志与调试 (Debug Tools)
位于 me.shetj.base.tools.debug 包下,提供高性能的日志管理系统。
-
LogManager: 核心日志管理器,支持缓冲写入、文件分割、Crash 保护。
LogManager.init {
isEnable = true
isPrintToConsole = BuildConfig.DEBUG
logDir = "..."
bufferSize = 50
}
LogManager.log(LogLevel.INFO, "Tag", "Message")
LogManager.log(LogLevel.ERROR, "Tag", "Error Message")
LogManager.flushSync()
-
DebugFunc: 旧版兼容入口,现作为 LogManager 的门面。
DebugFunc.getInstance().initContext(context)
DebugFunc.getInstance().logBehavior("UserAction", "Click Button")
-
BaseUncaughtExceptionHandler: 全局异常捕获,自动保存 Crash 堆栈到日志文件。
目录结构
- ktx/
ActivityResultExt.kt: ActivityResultLauncher 封装。
WinCompatExt.kt: 窗口与沉浸式适配。
ContextKt.kt: Context 扩展。
ActivityExt.kt / FragmentExt.kt: 基础扩展。
ActivityUtilsExt.kt: Fragment 事务与转场工具。
ViewExt.kt: View 基础扩展。
EditTextExt.kt: EditText 转 Flow/LiveData。
ConstraintSetExt.kt: 约束布局扩展。
SpanExt.kt / StringExt.kt: 字符串与富文本。
GsonExt.kt: Gson 工具。
DateKit.kt: 日期工具。
LiveDataExt.kt / FlowExt.kt: 数据流扩展。
IntentExt.kt: 系统 Intent 跳转。
GlideExt.kt: 图片加载。
ContentExt.kt: Uri/File 创建兼容。
NavExt.kt: Navigation 扩展。
ClassExt.kt / TypeExt.kt: 反射与泛型工具。
- tools/file/
FileUtils.kt: 文件操作工具。
FileIOUtils.kt: 文件读写工具。
FileQUtils.kt: Android Q 适配工具。
SPUtils.kt: SharedPreferences 工具。
StringUtils.kt: 字符串工具。
EnvironmentStorage.kt: 存储路径工具。
- tools/debug/
LogManager.kt: 日志管理核心。
LogConfig.kt: 日志配置。
DebugFunc.kt: 调试工具门面。
BaseUncaughtExceptionHandler.kt: Crash 捕获。