-
Notifications
You must be signed in to change notification settings - Fork 68
All Common APIs
DylanCai edited this page Sep 5, 2021
·
7 revisions
添加依赖到 build.gradle
:
dependencies {
implementation 'com.github.DylanCaiCoding.Longan:longan-common:0.3.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.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 |