收集 Android 中常用的 Kotlin 扩展函数,代替 Java 工具类和部分基类代码。
Step 1. Add the JitPack repository to your build file
allprojects {
repositories {
//...
maven { url 'https://jitpack.io' }
}
}
Step 2. Add the dependency
dependencies {
compile 'com.github.zyyoona7:KExtensions:VERSION_CODE'
}
最新的VERSION_CODE
-
appInfo.kt:Application信息相关扩展函数
作用范围:Context、Fragment
//获取应用的版本名称 getVersionName() //获取App版本码 getVersionCode() //安装App installApp(params) //判断App是否安装 isInstallApp(pkgName) //判断App是否处于前台 isAppForeground() //是否是平板设备 isTablet()
-
dates.kt:日期转换相关的拓展函数
//(作用范围:Any) 当前时间毫秒值 currentTimeMills //(作用范围:Any) 当前时间格式化成指定格式的String类型 currentTimeString() //(作用范围:Any) 当前时间的Date类型 currentDate //(作用范围:Date) Date类型格式化成指定格式的String类型 format2String(params) //(作用范围:Long) Long类型格式化成指定格式的String类型的日期 format2DateString() //(作用范围:Any) 解析String类型的日期为Long类型 parseDateString2Mills(params) //(作用范围:Any) 解析String类型的日期为Date类型 parseString2Date //(作用范围:Any,Calendar,Date,Long) //获取两个日期的时间差 getTimeSpan(params) //作用范围:Any,Date,Long) //将时间戳转换成 xx小时前 的样式(同微博) formatAgoStyleForWeibo() //作用范围:Any,Date,Long) //将时间戳转换成 xx小时前 的样式(同微信) formatAgoStyleForWeChat() //作用范围:Date,Long) //判断日期是否在同一年 isSameYear(params) //作用范围:Date) 日期是否在两个日期之间 betweenDates(params) //作用范围:Calendar) 将日期时间设置为0点,00:00:00:0 ofTimeZero() //(作用范围:Any,Calendar,Date,Long) //获取星期的下标 dayOfWeek()/dayOfWeek
-
dimensions.kt:尺寸、尺寸转换 扩展函数
作用范围:Context、Fragment、View
//屏幕宽度 screenWidth //屏幕高度 screenHeight //dp转换为px value类型为Int或Float dip2px(value) //sp转换为px value类型为Int或Float sp2px(value) //dimen资源转换为px dimen2px(R.dimen.value) //px转换为dp value类型为Int px2dip(value) //px转换为sp value类型为Int px2sp(value)
-
encodes.kt:编码/解码相关扩展函数
//作用范围:String、ByteArray、File //Base64编码为ByteArray类型 base64Encode() //Base64解码为ByteArray类型 base64Decode() //作用范围:String、ByteArray //Base64编码为String类型 base64Encode2Str() //Base64解码为String类型 base64Decode2Str() //作用范围:String //url编码/解码 urlEncode() urlDecode()
-
encrypts.kt:加密/解密相关的扩展函数
//ByteArray转换成16进制字符串 ByteArray.toHex() //16进制字符串转换成ByteArray String.hexToByteArray() //md5加密 String.md5(salt: String = "") //SHA1加密 String.sha1() //SHA224加密 String.sha224() //SHA256加密 String.sha256() //SHA384加密 String.sha384() //SHA512加密 String.sha512() //获取HMAC-MD5 加密 String.hmacMD5(key: String) //获取HMAC-SHA1 加密 String.hmacSHA1(key: String) //获取HMAC-SHA224 加密 String.hmacSHA224(key: String) //获取HMAC-SHA256 加密 String.hmacSHA256(key: String) //获取HMAC-SHA384 加密 String.hmacSHA384(key: String) //获取HMAC-SHA512 加密 String.hmacSHA512(key: String) //对称加密 //AES加密成16进制字符串 String.encryptAES(password: String) //AES加密成Base64字符串 String.encryptAES2Base64(password: String) //16进制字符串用AES解密 String.decryptAES(password: String) //Base64字符串用AES解密 String.decryptBase64AES(password: String) //DES加密成16进制字符串 String.encryptDES(password: String) //DES加密成Base64字符串 String.encryptDES2Base64(password: String) //16进制字符串用DES解密 String.decryptDES(password: String) //Base64字符串用DES解密 String.decryptBase64DES(password: String) //非对称加密 //生成RSA的密钥对 generateRSAKeyPair() //在生成的密钥对中获取公钥和私钥 getRSAKey(keyPair: KeyPair, isPublicKey: Boolean) //用私钥对信息生成数字签名 String.rsaSign(privateKey: ByteArray) //验证数字签名 String.rsaVerifySign(publicKey: ByteArray, sign: String) //RSA公钥加密/分段加密 String.rsaEncryptByPublicKey(publicKey: ByteArray) //RSA公钥解密/分段解密 String.rsaDecryptByPublicKey(publicKey: ByteArray) //RSA私钥加密/分段加密 String.rsaEncryptByPrivateKey(privateKey: ByteArray) //RSA私钥解密/分段解密 String.rsaDecryptByPrivateKey(privateKey: ByteArray)
-
fileProviders.kt:FileProvider相关扩展函数
作用范围:Context、Fragment
//自行配置FileProvider //获取对应的Uri 适配7.0+ getUriFromFile(file,authority) //为Intent设置dataAndType 适配7.0+ setIntentDataAndType(intent,type,file,authority,writeEnable)
-
files.kt:文件相关的扩展函数
//作用范围:Context、Fragment //获取应用文件目录 fileDirPath //获取应用缓存目录 cacheDirPath //获取应用外置文件目录 externalFileDirPath //获取应用外置缓存目录 externalCacheDirPath //作用范围:File or Any //获取公共下载文件夹路径 publicDownloadDir //获取公共的照片文件夹路径 publicDCIMDir //获取公共的图片文件夹路径 publicPictureDir //获取公共的音乐文件夹路径 publicMusicDir //获取公共的电影文件夹路径 publicMovieDir //内存卡是否挂载 isExternalStorageWritable //(Any)通过文件路径获取File对象 getFileByPath(filePath) //(File、Any)判断文件是否存在 isFileExists isFileExists() //(File、Any)判断文件夹是否存在 isDirExists isDirExists() //(File、Any)判断目录是否存在,不存在则判断是否创建成功 createOrExistsDir() //(File、Any)判断文件是否存在,不存在则判断是否创建成功 createOrExistsFile //(File、Any)获取文件夹目录大小 dirSize getDirSize() //(File、Any)获取目录长度 dirLength getDirLength() //(File、Any)获取文件大小 fileSize getFileSize() //(File、Any)获取文件长度 fileLength getFileLength() //(File、Any)获取全路径中的最长目录 dirName getDirName(path) //(File、Any)获取全路径中的文件名 fileName getFileName(path) //读/写文件 //(File、Any)将字符串写入文件 writeStringAsFile(params) //(File、Any)将输入流写入文件 writeISAsFile(params) //(File、Any)读取文件到字符串中 readFileAsString(params) //(File、Any)读取文件到字符串列表中 //Do not use this function for huge files. readFileAsList(params) // ---------- 文件操作:复制、移动、删除---------- //(File、Any)复制或移动目录(默认为复制目录) copyOrMoveDir(params) //(File、Any)复制或移动文件(默认为复制文件) copyOrMoveFile(params) //(File、Any)删除文件夹 deleteDir() //(File、Any)删除文件 deleteFile()
-
intents.kt:startActivity/startService 扩展函数
作用范围:Context、Fragment
//startActivity startActivity<AnyActivity>() startActivity<AnyActivity>(bundle) startActivityForResult<AnyActivity>(requestCode) startActivityForResult<AnyActivity>(bundle,requestCode) //startService startService<AnyService>() startService<AnyService>(bundle)
-
keyboard.kt:软键盘操作扩展函数
作用范围:Context、Fragment、View
showSoftInput(view) hideSoftInput(view) hideSoftInput(Activity)
-
logs.kt:Log 打印扩展函数
作用范围:Any
//全局控制是否输出log logEnabled(true) //定义全局的tag logGlobalTag("GlobalTag") //verbose级别 logv("Hello") //debug级别,自定义某个log的tag logd("Hello",customTag = "customTag") //info级别 logi("Hello") //warn级别 logw("Hello") //error级别 loge("Hello") //打印json val json = """ {'name':'zyyoona7','age':'25'} """ logJson(json)
效果图
-
network.kt:网络相关扩展函数
-
作用范围:Context、Fragment
//活动网络信息 networkInfo //网络是否连接 isNetworkConnected //判断/设置wifi是否打开(var类型) isWifiEnable //是否是WiFi连接 isWifiConnected //是否是移动数据连接 isMobileConnected //获取网络运营商名称 如中国移动、中国联通、中国电信 networkOperatorName //获取当前网络类型 // NETWORK_WIFI,NETWORK_4G,NETWORK_3G,NETWORK_2G,NETWORK_UNKNOWN,NETWORK_NO networkType
-
permissions.kt:动态权限相关扩展函数
//作用范围:Context、Fragment 单个权限是否已经授权 isPermissionGranted(permission) //作用范围:Context、Fragment 多个权限是否已经授权 arePermissionGranted(permissions) //作用范围:Context、Fragment 单个权限是否被拒绝或不再提示 isPermissionAlwaysDenied(permission) //作用范围:Context、Fragment 多个权限是否被拒绝或不再提示 arePermissionAlwaysDenied(permission) //作用范围:Activity、Fragment 请求[permissions]授权 requestPermission(permissionsArray,requestCode) //作用范围:Activity、Fragment 带解释的请求[permissions]授权 requestPermissionWithRationale(permissionsArray,requestCode,rationaleLamb) //作用范围:Any 处理请求权限结果 handlePermissionResult(params)
-
resources.kt:资源相关扩展函数
//作用范围:Context、Fragment、View loadColor(colorRes) loadDrawable(drawableRes) loadRaw(rawRes) loadAsset(filName) loadTypefaceFromAsset(fileName) //作用范围:Any loadTypefaceFromFile(filePath)
-
systemService.kt:需要通过 getSystemService() 获取的各种 manager
作用范围:Context
activityManager alarmManager bluetoothManager connectivityManager inputMethodManager //...
-
toast.kt:Toast 扩展函数
作用范围:Context、Fragment、View
//默认为short Toast toast("Hello") toast("Hello",Toast.LENGTH_LONG)
-
views.kt:view 扩展函数
//为view添加OnGlobalLayoutListener监听并在测量完成后自动取消监听同时执行[globalAction]函数 afterMeasured(lambda)
-
更多:持续更新中 ...
Copyright 2017 zyyoona7
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.