这个库作为官方的Anko的一个扩展,提供官方Anko没有提供的一些实用方法,建 议和官方Anko一起导入到你的项目中。
- 增加以下脚本到你的工程根目录的build.gradle文件中
allprojects { repositories { ... maven { url 'https://jitpack.io' } } }
2)在你的app工程中,增加如下依赖:
dependencies { compile 'com.github.yuanhoujun:AnkoExt:0.1.0' }
以下是目前AnkoExt提供的一些实用方法,以及和Java语言的简单对比:
在Activity中获取常用的服务管理类
NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE)
val notificationManager = notificationManager()
AnkoExt 也提供了其它服务的获取接口:
val windowManager = windowManager() val alarmManager = alarmManager() val wifiManager = wifiManager() val pref = defaultSharedPreferences()
更多服务获取接口,欢迎你Fork这个仓库,推送Pull Request。
针对字符串处理,AnkoExt也提供了如下接口:
// 将指定格式字符串转换为Date SimpleDateFormat formatter = SimpleDateFormat(pattern , Locale.CHINA) try { Date result = formatter.parse(this) } catch (e: Exception) { }
// 将指定格式字符串转换为Date val date = "2017-10-1 12:12:12".toDate("yy-MM-dd HH:mm")
当然,AnkoExt也提供了将Date转换为字符串的接口:
val dateString = date.toDateString("yy-MM-dd HH:mm")
针对SharePreferences,AnkoExt也提供了一些简化处理的接口:
SharedPreferences pref = ... SharedPreferences.Editor editor = pref.editor(); editor.putString("name" , "Scott Smith"); editor.apply();
val pref = ... pref.edit { putString("name" , "Scott Smith") }
针对Android常用数据格式转换,AnkoExt也提供了一些相应的接口,这个其实官方Anko也有,不过解决方案不太一样:
val dp = 12.toDp(this) val px = 12.toPx(this) val dateString = 12L.toDateString("yy-MM-dd HH:mm")
val str = ... // 判断该字符串是否是一个有效的手机号 str.isPhoneNumber() // 判断该字符串是否是一个有效的IP地址 str.isIP() // 判断该字符串是否是一个有效的身份证号 str.isIdNumber() // 判断该字符串是否是一个有效的邮箱地址 str.isEmail() // 判断该字符串是否全是中文 str.isChinese() // 字符串安全转换到整型 str.safeConvertToInt() // 字符串安全转换到整型 str.safeConvertToInt() // 字符串安全转换到长整型 str.safeConvertToLong() // 字符串安全转换到浮点类型 str.safeConvertToFloat() // 字符串安全转换到双精度类型 str.safeConvertToDouble() // 字符串安全转换到短整型类型 str.safeConvertToShort()
在Contex的子类,例如:Activity,Application等,可以直接使用如下api获取如下数据:
// 获取整型版本号 val versionCode = versionCode() // 获取版本名称 val versionName = versionName() // 获取Density val density = density() // 获取清单文件元数据 (这里可能会导致获取失败) val meta = metaData("channel") // 获取导航栏高度 val navigationBarHeight = navigationBarHeight() // 获取状态栏高度 val statusBarHeight = statusBarHeight()