-
Notifications
You must be signed in to change notification settings - Fork 68
All Common APIs
DylanCai edited this page Oct 29, 2021
·
7 revisions
添加依赖到 build.gradle
:
dependencies {
implementation 'com.github.DylanCaiCoding.Longan:longan:1.0.0'
}
下面用法中含有方括号 []
的参数是可选的。
用法 | 作用 |
---|---|
[Activity].startActivity<SomeOtherActivity>("id" to 5) |
启动 Activity |
Activity.finishWithResult("id" to 5, "name" to name) |
关闭 Activity 并返回结果 |
activityList |
获取 Activity 栈链表 |
topActivity |
获取栈顶 Activity |
isActivityExistsInStack<SomeOtherActivity> |
判断 Activity 是否存在栈中 |
finishActivity<SomeOtherActivity> |
结束 Activity |
finishAllActivities |
结束所有 Activity |
finishAllActivitiesExceptNewest |
结束除最新之外的所有 Activity |
ComponentActivity.pressBackTwiceToExitApp(toastText, [delayMillis]) |
双击返回退出 App |
ComponentActivity.pressBackTwiceToExitApp([delayMillis]) {...} |
双击返回退出 App,自定义 Toast |
ComponentActivity.pressBackToNotExit() |
点击返回不退出 App |
Context.checkPermission(permission) |
判断是否有权限 |
Activity.windowInsetsControllerCompat |
获取 WindowInsetsControllerCompat |
Activity.decorFitsSystemWindows |
设置布局适应系统窗口 |
Activity.contentView |
获取布局的根视图 |
Context.activity |
通过 Context 获取 Activity |
Context.context |
作用域的 this 不是 Activity 时获取 Context |
Activity.activity |
作用域的 this 不是 Activity 时获取 Activity |
FragmentActivity.fragmentActivity |
作用域的 this 不是 Activity 时获取 FragmentActivity |
ComponentActivity.lifecycleOwner |
作用域的 this 不是 Activity 时获取 LifecycleOwner |
用法 | 作用 |
---|---|
application |
获取 Application |
packageName |
获取包名 |
appVersionName |
获取 App 版本号 |
appVersionCode |
获取 App 版本码 |
isAppDebug |
判断 App 是否是 Debug 版本 |
isAppDarkMode |
判断 App 是否是夜间模式 |
launchAppDetailsSettings |
启动 App 详情设置 |
relaunchApp([killProcess]) |
重启 App |
用法 | 作用 |
---|---|
Array<T>.percentage {...} |
获取条件判断所占数量的百分比 |
用法 | 作用 |
---|---|
isBluetoothEnabled |
判断蓝牙是否开启 |
BluetoothStateLiveData {...} |
监听蓝牙设备的连接状态 |
用法 | 作用 |
---|---|
Canvas.drawCenterVerticalText(text, centerX, centerY, paint) |
绘制垂直居中的文字 |
Canvas.drawCenterText(text, centerX, centerY, paint) |
绘制居中的文字 |
用法 | 作用 |
---|---|
List<T>.percentage {...} |
获取条件判断所占数量的百分比 |
用法 | 作用 |
---|---|
contentResolver |
获取 ContentResolver |
ContentResolver.query(uri, [projection], [selection], [selectionArgs], [sortOrder]) {...} |
查询匹配的 Uri |
ContentResolver.queryFirst(uri, [projection], [selection], [selectionArgs], [sortOrder]) {...} |
查询第一个匹配的 Uri |
ContentResolver.queryLast(uri, [projection], [selection], [selectionArgs], [sortOrder]) {...} |
查询最后一个匹配的 Uri |
ContentResolver.queryMediaImages(uri, [projection], [selection], [selectionArgs], [sortOrder]) {...} |
查询匹配的图片 Uri |
ContentResolver.queryMediaVideos(uri, [projection], [selection], [selectionArgs], [sortOrder]) {...} |
查询匹配的视频 Uri |
ContentResolver.queryMediaAudios(uri, [projection], [selection], [selectionArgs], [sortOrder]) {...} |
查询匹配的音频 Uri |
ContentResolver.queryMediaDownloads(uri, [projection], [selection], [selectionArgs], [sortOrder]) {...} |
查询匹配的下载 Uri |
ContentResolver.insert(uri, [block]) |
插入 Uri |
ContentResolver.insertMediaImage(uri, [block]) |
插入图片 Uri |
ContentResolver.insertMediaVideo(uri, [block]) |
插入视频 Uri |
ContentResolver.insertMediaAudio(uri, [block]) |
插入音频 Uri |
ContentResolver.insertMediaDownload(uri, [block]) |
插入下载 Uri |
ContentResolver.update(uri, [where], [selectionArgs]) {...} |
更新 Uri |
ContentResolver.delete(uri, [where], [selectionArgs]) |
删除 Uri |
用法 | 作用 |
---|---|
contentValues {...} |
创建 ContentValues 对象 |
ContentValues.displayName |
设置 MediaStore.MediaColumns.DISPLAY_NAME
|
`ContentValues.relativePath | 设置 MediaStore.MediaColumns.RELATIVE_PATH
|
`ContentValues.mimeType: String | 设置 MediaStore.MediaColumns.MIME_TYPE
|
`ContentValues.imageDescription | 设置 MediaStore.Images.Media.DESCRIPTION
|
`ContentValues.videoDescription | 设置 MediaStore.Video.Media.DESCRIPTION
|
`ContentValues.dateAdded | 设置 MediaStore.MediaColumns.DATE_ADDED
|
`ContentValues.dateModified | 设置 MediaStore.MediaColumns.DATE_MODIFIED
|
用法 | 作用 |
---|---|
saveCrashLogLocally([dirPath]) |
保存崩溃日志到本地 |
handleUncaughtException {...} |
处理未捕获的异常 |
用法 | 作用 |
---|---|
sdkVersionName |
获取设备系统版本号 |
sdkVersionCode |
获取设备系统版本码 |
deviceManufacturer |
获取设备厂商 |
deviceModel |
获取设备型号 |
用法 | 作用 |
---|---|
Int/Long/Float/Double.dp |
dp 转 px |
Int/Long/Float/Double.sp |
sp 转 px |
Int/Long/Float/Double.pxToDp() |
px 转 dp |
Int/Long/Float/Double.pxToSp() |
px 转 sp |
用法 | 作用 |
---|---|
download(url) {...} |
使用原生 DownloadManager 下载文件 |
用法 | 作用 |
---|---|
ByteArray.base64Encode([flag]) |
Base64 编码 |
ByteArray.base64EncodeToString([flag]) |
Base64 编码 |
String.base64Decode([flag]) |
Base64 解码 |
String.urlEncode(enc) |
Url 编码 |
String.urlDecode(enc) |
Url 解码 |
用法 | 作用 |
---|---|
File.mimeType |
获取文件的 MIME 类型 |
fileSeparator |
获取文件分隔符 |
File.print {...} |
打印内容到文件 |
用法 | 作用 |
---|---|
Flow<T>.launchAndCollectIn(owner, [minActiveState]) {...} |
启动 lifecycleScope 和收集数据 |
用法 | 作用 |
---|---|
Fragment.withArguments("id" to 5) |
创建 Fragment 时伴随参数 |
by Fragment.arguments(key) |
通过 Fragment 的 argments 获取可空的参数 |
by Fragment.arguments(key, default) |
通过 Fragment 的 argments 获取含默认值的参数 |
by Fragment.safeArguments(key) |
通过 Fragment 的 argments 获取人为保证非空的参数 |
用法 | 作用 |
---|---|
intentOf<SomeOtherActivity>("id" to 5) |
创建 Intent |
by Activity.intentExtras(key) |
通过 Intent 的 extras 获取可空的参数 |
by Activity.intentExtras(key, default) |
通过 Intent 的 extras 获取含默认值的参数 |
by Activity.safeIntentExtras(key) |
通过 Intent 的 extras 获取人为保证非空的参数 |
dial(phoneNumber) |
拨号 |
makeCall(phoneNumber) |
打电话 |
sendSMS(phoneNumber, content) |
发短信 |
browse(url, [newTask]) |
打开网页 |
email(email, [subject], [text]) |
发送邮件 |
installAPK(uri) |
安装 APK |
Intent.clearTask() |
添加 FLAG_ACTIVITY_CLEAR_TASK 的 flag |
Intent.clearTop() |
添加 FLAG_ACTIVITY_CLEAR_TOP 的 flag |
Intent.newDocument() |
添加 FLAG_ACTIVITY_NEW_DOCUMENT 的 flag |
Intent.excludeFromRecents() |
添加 FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS 的 flag |
Intent.multipleTask() |
添加 FLAG_ACTIVITY_MULTIPLE_TASK 的 flag |
Intent.newTask() |
添加 FLAG_ACTIVITY_NEW_TASK 的 flag |
Intent.noAnimation() |
添加 FLAG_ACTIVITY_NO_ANIMATION 的 flag |
Intent.noHistory() |
添加 FLAG_ACTIVITY_NO_HISTORY 的 flag |
Intent.singleTop() |
添加 FLAG_ACTIVITY_SINGLE_TOP 的 flag |
Intent.grantReadPermission() |
添加 FLAG_GRANT_READ_URI_PERMISSION 的 flag |
Intent.clearTask() |
添加 FLAG_ACTIVITY_CLEAR_TASK 的 flag |
Intent.clearTask() |
添加 FLAG_ACTIVITY_CLEAR_TASK 的 flag |
用法 | 作用 |
---|---|
EditText.showKeyboard() |
显示键盘 |
EditText.hideKeyboard() |
隐藏键盘 |
EditText.toggleKeyboard() |
切换键盘显示状态 |
EditText.isKeyboardVisible |
判断键盘是否可见 |
EditText.keyboardHeight |
获取键盘高度 |
用法 | 作用 |
---|---|
LifecycleOwner.doOnLifecycle {...} |
监听 Activity 或 Fragment 生命周期 |
Fragment.doOnViewLifecycle {...} |
监听 Fragment 视图的生命周期 |
用法 | 作用 |
---|---|
Any.TAG |
获取对象的标签(不大于 23 个字符的类名) |
[Logger].logVerbose(message, [thr]) |
打印 Verbose 等级的日志 |
[Logger].logDebug(message, [thr]) |
打印 Debug 等级的日志 |
[Logger].logInfo(message, [thr]) |
打印 Info 等级的日志 |
[Logger].logWarn(message, [thr]) |
打印 Warn 等级的日志 |
[Logger].logError(message, [thr]) |
打印 Error 等级的日志 |
[Logger].logVerWtf(message, [thr]) |
打印 Wtf 等级的日志 |
initLogger([isLoggable], [printer]) |
初始化 Logger (可选) |
用法 | 作用 |
---|---|
isNetworkAvailable |
判断网络是否可用 |
NetworkAvailableLiveData() |
监听网络状态改变 |
用法 | 作用 |
---|---|
cacheDirPath |
获取应用缓存路径(优先外存) |
externalCacheDirPath |
获取外存应用缓存路径 |
externalFilesDirPath |
获取外存应用文件路径 |
externalPicturesDirPath |
获取外存应用图片路径 |
externalMoviesDirPath |
获取外存应用视频路径 |
externalDownloadsDirPath |
获取外存应用下载路径 |
externalDocumentsDirPath |
获取外存应用文档路径 |
externalMusicDirPath |
获取外存应用音乐路径 |
externalPodcastsDirPath |
获取外存应用播客路径 |
externalRingtonesDirPath |
获取外存应用铃声路径 |
externalAlarmsDirPath |
获取外存应用闹铃路径 |
externalNotificationsDirPath |
获取外存应用通知路径 |
internalCacheDirPath |
获取内存应用缓存路径 |
internalFileDirPath |
获取内存应用文件路径 |
internalPicturesDirPath |
获取内存应用图片路径 |
internalMoviesDirPath |
获取内存应用视频路径 |
internalDownloadsDirPath |
获取内存应用下载路径 |
internalDocumentsDirPath |
获取内存应用文档路径 |
internalMusicDirPath |
获取内存应用音乐路径 |
internalPodcastsDirPath |
获取内存应用播客路径 |
internalRingtonesDirPath |
获取内存应用铃声路径 |
internalNotificationsDirPath |
获取内存应用通知路径 |
isExternalStorageWritable |
判断外存是否可读写 |
isExternalStorageReadable |
判断外存是否可读 |
isExternalStorageRemovable |
判断外存是否可移除 |
用法 | 作用 |
---|---|
Bitmap/List<Bitmap>.toPdfDoc(pageWidth, pageHeight) |
Bitmap 转 PDF 文档 |
Bitmap/List<Bitmap>.toA4PdfDoc() |
Bitmap 转 A4 纸大小的 PDF 文档 |
用法 | 作用 |
---|---|
Context/View.getCompatColor(id) |
根据 id 获取颜色 |
Context/View.getCompatDrawable(id) |
根据 id 获取 Drawable |
Context/View.getCompatDimen(id) |
根据 id 获取数字 |
Context/View.getCompatFont(id) |
根据 id 获取字体 |
View.getString(id) |
根据 id 获取字符串 |
parseColor(colorString) |
根据字符串获取颜色 |
用法 | 作用 |
---|---|
screenWidth |
获取屏幕宽度 |
screenHeight |
获取屏幕高度 |
Activity/Fragment.isFullScreen |
判断或设置是否全屏 |
Activity/Fragment.isLandscape |
判断或设置是否横屏 |
Activity/Fragment.isPortrait |
判断或设置是否竖屏 |
用法 | 作用 |
---|---|
shareText(text, [title]) |
分享文字 |
shareImage(uri, [title]) |
分享单张图片 |
shareImages(uris, [title]) |
分享多张图片 |
shareTextAndImage(text, uri, [title]) |
分享文字和单张图片 |
shareTextAndImages(text, uris,[title]) |
分享文字和多张图片 |
shareFile(text, [title], [mimeType]) |
分享单个文件 |
shareFiles(text, [title], [mimeType]) |
分享多个文件 |
用法 | 作用 |
---|---|
randomUUIDString |
获取随机 UUID 字符串 |
Long.toFileSizeString |
数字转文件大小字符串 |
Long.toShortFileSizeString() |
数字转精度位数较少的文件大小字符串 |
String.limitLength(length: Int) |
限制字符长度 |
String.isPhone() |
判断是否是手机号 |
String.isDomainName() |
判断是否是域名 |
String.isEmail() |
判断是否是邮箱 |
String.isIP() |
判断是否是 IP 地址 |
String.isWebUrl() |
判断是否是网址 |
String.isIDCard15() |
判断是否是 15 位身份证号码 |
String.isIDCard18() |
判断是否是 18 位身份证号码 |
String.isJson() |
判断是否是 Json 字符串 |
用法 | 作用 |
---|---|
Activity/Fragment.immerseStatusBar([lightMode],[addBottomMargin]) |
沉浸式状态栏 |
Activity/Fragment.transparentStatusBar() |
透明状态栏 |
Activity/Fragment.statusBarColor |
获取或设置状态栏颜色 |
Activity/Fragment.isLightStatusBar |
判断或设置状态栏是否为浅色模式 |
Activity/Fragment.isStatusBarVisible |
判断或设置状态栏是否为显示 |
Activity/Fragment.statusBarHeight |
获取状态栏高度 |
View.addStatusBarHeightToMarginTop() |
控件的顶部外边距增加状态栏高度 |
View.subtractStatusBarHeightToMarginTop() |
控件的顶部外边距减少状态栏高度 |
View.addStatusBarHeightToPaddingTop() |
控件的顶部内边距增加状态栏高度 |
View.subtractStatusBarHeightToPaddingTop() |
控件的顶部内边距减少状态栏高度 |
Activity/Fragment.navigationBarColor |
获取或设置状态栏颜色 |
Activity/Fragment.isLightNavigationBar |
判断或设置状态栏是否为浅色模式 |
Activity/Fragment.isNavigationBarVisible |
判断或设置状态栏是否为显示 |
Activity/Fragment.navigationBarHeight |
获取状态栏高度 |
View.addNavigationBarHeightToMarginBottom() |
控件的底部外边距增加虚拟导航栏高度 |
View.subtractNavigationBarHeightToMarginBottom() |
控件的底部外边距减少虚拟导航栏高度 |
用法 | 作用 |
---|---|
TextView.textString |
获取文本字符串 |
TextView.isTextEmpty() |
判断文本是否为空 |
TextView.isTextNotEmpty() |
判断文本是否非空 |
TextView.isPasswordVisible |
判断或设置密码是否可见 |
TextView.addUnderline() |
添加下划线 |
TextView.startCountDown(lifecycleOwner, [secondInFuture], onTick, onFinish) |
开启倒计时并修改文字 |
TextView.enableWhenOtherTextNotEmpty(textViews) |
当其它文本非空时可用 |
TextView.enableWhenOtherTextChanged(textViews) {...} |
当其它文本改变时可用 |
用法 | 作用 |
---|---|
mainThread([delayMillis]) {...} |
在主线程运行 |
用法 | 作用 |
---|---|
Context/Fragment.toast(message) |
吐司 |
Context/Fragment.longToast(message) |
长吐司 |
Toast.fixBadTokenException() |
修复 7.1 的 BadTokenException |
用法 | 作用 |
---|---|
fileProviderAuthority |
设置 FileProvider 的 authority |
File.toUri([authority]) |
File 转 Uri |
Uri.update([block]) |
更新 Uri |
Uri.openFileDescriptor([mode]) {...} |
打开 Uri 的文件描述符 |
Uri.openInputStream {...} |
打开 Uri 的输入流 |
Uri.openOutputStream {...} |
打开 Uri 的输出流 |
Uri.loadThumbnail(width, height, [signal]) |
加载 Uri 封面 |
Uri.observeContentChange(lifecycleOwner) {...} |
观察 Uri 内容改变 |
Uri.fileExtension |
获取 Uri 的文件拓展名 |
Uri.mimeType |
获取 Uri 的 MIME 类型 |
用法 | 作用 |
---|---|
View/List<View>.doOnClick([intervals], [isSharingIntervals]) {...} |
设置点击事件 |
View/List<View>.doOnLongClick([intervals], [isSharingIntervals]) {...} |
设置长按事件 |
View?.isTouchedAt(x, y) |
判断控件是否在触摸位置上 |
View.findTouchedChild(view, x, y) |
寻找触摸位置上的子控件 |
View.locationOnScreen |
获取控件在屏幕的位置 |
View.withStyledAttrs(set, attrs, [defStyleAttr], [defStyleRes]) {...} |
获取自定义属性 |
View.doOnApplyWindowInsets {...} |
监听应用 WindowInsets |
View.rootWindowInsetsCompat |
获取根视图的 WinowInsetsCompat |
View.windowInsetsControllerCompat |
获取 WindowInsetsControllerCompat |
用法 | 作用 |
---|---|
by ComponentActivity/Fragment/ViewModel.applicationViewModels() |
获取应用级别的 ViewModel 实例 |