Skip to content

All Common APIs

DylanCai edited this page Sep 5, 2021 · 7 revisions

Gradle

添加依赖到 build.gradle

dependencies {
    implementation 'com.github.DylanCaiCoding.Longan:longan-common:0.3.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.pressBackTwiceToExit(toastText, [delayMillis]) 双击返回退出 App
ComponentActivity.pressBackTwiceToExit([delayMillis]) {...} 双击返回退出 App,自定义 Toast
ComponentActivity.pressBackToNotExit() 点击返回不退出 App
Context.checkPermission(permission) 判断是否有权限
Activity.contentView 获取布局的根视图
Context.context 获取 Context,无需指明用哪个 this
Activity.activity 获取 Activity,无需指明用哪个 this
FragmentActivity.fragmentActivity 获取 FragmentActivity,无需指明用哪个 this
ComponentActivity.lifecycleOwner 获取 LifecycleOwner,无需指明用哪个 this
用法 作用
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.insert(uri, [block]) 插入 Uri
ContentResolver.update(uri, [where], [selectionArgs]) {...} 更新 Uri
ContentResolver.delete(uri, [where], [selectionArgs]) 删除 Uri
contentValues {...} 创建 ContentValue
Cursor.displayNameIndex 获取名字的游标索引
Cursor.sizeIndex 获取大小的游标索引
用法 作用
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
用法 作用
downloadRequest(url) {...} 创建 DownloadManager.Request 下载文件
用法 作用
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 {...} 打印内容到文件
用法 作用
Fragment.withArguments("id" to 5) 创建 Fragment 时伴随参数
by Fragment.arguments(key) 用委托获取可空的参数
by Fragment.arguments(key, default) 用委托获取非空的参数
by Fragment.safeArguments(key) 用委托获取非空的参数,人为保证非空
用法 作用
intentOf<SomeOtherActivity>("id" to 5) 创建 Intent
by Activity.intentExtras(key) 用委托获取可空的参数
by Activity.intentExtras(key, default) 用委托获取非空的参数
by Activity.safeIntentExtras(key) 用委托获取非空的参数,人为保证非空
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/Fragment.doOnLifecycle {...} 监听生命周期
用法 作用
MutableLiveData<T>.toLiveData() 可变 LiveData 转为不可变
EventLiveData<T>() 事件类型的 LiveData
EventLiveData<Unit>.post() EventLiveData 发送空的数据
ClearableLiveData<T>() 可清理的 LiveData,清理数据时不会回调
用法 作用
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 等级的日志
用法 作用
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 文档
用法 作用
by [Context].stringRes(id) 根据 id 获取字符串
by [Context].colorOf(id) 根据 id 获取颜色
by [Context].drawableOf(id) 根据 id 获取 Drawable
by [Context].dimenRes(id) 根据 id 获取数字
by [Context].fontOf(id) 根据 id 获取字体
colorOf(colorString) 根据字符串获取颜色
用法 作用
screenWidth 获取屏幕宽度
screenHeight 获取屏幕高度
用法 作用
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]) 分享多个文件
用法 作用
by SharedPreferencesOwner.sharedPreferences([default]) 获取 SharedPreferences 的值
initSharedPreferences(name, [mode]) 初始化 SharedPreferences
用法 作用
randomUUIDString 获取随机 UUID 字符串
Long.toFileSizeString 数字转文件大小字符串
Long.toShortFileSizeString() 数字转文件大小字符串,显示较少的精度位数
String.limitLength(length: Int) 限制字符长度
String.isPhone() 判断是否是手机号
String.isEmail() 判断是否是邮箱
用法 作用
Activity/Fragment.areSystemBarsVisible 设置或判断系统栏是否都显示
Activity/Fragment.immerseStatusBar([lightMode]) 沉浸式状态栏
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.enableWhenTextNotEmpty(textViews) 当其它文本非空时可用
用法 作用
mainThread([delayMillis]) {...} 在主线程运行
用法 作用
Context/Fragment.toast(message) 吐司
Context/Fragment.longToast(message) 长吐司
Toast.fixBadTokenException() 修复 7.1 的 BadTokenException
用法 作用
fileProviderAuthority 设置 FileProvider 的 authority
File.toUri([authority]) File 转 Uri
queryMediaImages([projection], [selection], [selectionArgs], [sortOrder]) {...} 查询多媒体图片
queryMediaVideos([projection], [selection], [selectionArgs], [sortOrder]) {...} 查询多媒体视频
queryMediaAudios([projection], [selection], [selectionArgs], [sortOrder]) {...} 查询多媒体音频
queryMediaDownloads([projection], [selection], [selectionArgs], [sortOrder]) {...} 查询多媒体下载
insertMediaImageUri([block]) 插入多媒体图片的 Uri
insertMediaVideoUri([block]) 插入多媒体视频的 Uri
insertMediaAudioUri([block]) 插入多媒体音频的 Uri
insertMediaDownloadUri([block]) 插入多媒体下载的 Uri
Uri.update([id]) {...} 更新 Uri
Uri.delete([id]) 删除 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 {...} 设置点击事件
View/List<View>.doOnLongClick {...} 设置长按事件
View?.isTouchedAt(x, y) 判断控件是否在触摸位置上
ViewGroup.findTouchedChild(view, x, y) 寻找触摸位置上的子控件
View.locationOnScreen 获取控件在屏幕的位置
View.withStyledAttrs(set, attrs, [defStyleAttr], [defStyleRes]) {...} 获取自定义属性
View.doOnApplyWindowInsets {...} 监听应用 WindowInsets
用法 作用
by ComponentActivity/Fragment/ViewModel.applicationViewModels() 获取应用级别的 ViewModel 实例
用法 作用
FragmentActivity/Fragment.FragmentStateAdapter(fragmentList) 创建 FragmentStateAdapter
FragmentActivity/Fragment.FragmentStateAdapter(itemCount) {...} 创建 FragmentStateAdapter
ViewPager2.findFragment(fragmentManager, position) 获取 Fragment
Clone this wiki locally