Skip to content

All Common APIs

DylanCai edited this page Oct 29, 2021 · 7 revisions

Gradle

添加依赖到 build.gradle

dependencies {
    implementation 'com.github.DylanCaiCoding.Longan:longan:1.0.0'
}

APIs

下面用法中含有方括号 [] 的参数是可选的。

用法 作用
[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 实例
Clone this wiki locally