一行代码简单实现Android dp2px、sp2px、常用Resource值(string/color/drawable)获取

在日常开发中,我们经常需要用到dp2px、sp2px、常用Resource值(string/color/drawable)获取等操作,如果全部使用Android自带的获取方法来实现,会比较冗余,且它们绝大多数都需要Context,在有些场景会让我们不得不层层传递Context,显得非常不优雅。于是我做了一个开源Library项目,方便大家集成后,不需要再传入Context,就可以一行代码简单实现Android dp2px、sp2px、常用Resource值(string/color/drawable)获取。

使用方式:
1、集成Library

allprojects {
    repositories {
        ...
        maven { url 'https://www.jitpack.io' }
    }
}
 implementation 'com.github.Arcns.arc-fast:core:1.23.1'

2、使用方式
(1)dp2px、px2dp

方法 功能 用法
Float.dpToPx 把dp转换为px(Float格式) 100f.dpToPx
Int.dpToPx 把dp转换为px(Int格式) 100.dpToPx
Float.pxToDp 把px转换为dp(Float格式) 100f.pxToDp
Int.pxToDp 把px转换为dp(Int格式) 100.pxToDp

(2)sp2px

方法 功能 用法
Float.spToPx 把sp转换为px(Float格式) 100f.spToPx
Int.spToPx 把sp转换为px(Int格式) 100.spToPx

(3)获取String资源

方法 功能 用法
Int.resToString 通过StringRes获取String值 R.string.test.resToString
Int.resToStringOrNull 通过StringRes获取String值,获取失败时返回null R.string.test.resToStringOrNull
Int.resToString(vararg values: Any?) 通过StringRes获取String值,并替换格式参数(例如%1$s) R.string.test.resToString("1","2")
Int.resToStringOrNull(vararg values: Any?) 通过StringRes获取String值,并替换格式参数(例如%1$s),获取失败时返回null R.string.test.resToStringOrNull("1","2")

(4)Drawable资源

方法 功能 用法
Int.resToDrawable 通过DrawableRes获取Drawable值 R.drawable.test.resToDrawable
Int.resToDrawableOrNull 通过DrawableRes获取Drawable值,获取失败时返回null R.drawable.test.resToDrawableOrNull
Drawable.applyTint(color: Int?) 为Drawable实现着色效果 R.drawable.test.applyTint(0x24000000)
Drawable.applyRipple(context: Context,rippleColor: Int? = null,rippleColorStateList: ColorStateList? = null) 为Drawable实现Ripple效果,ColorStateList优先级高于rippleColor R.drawable.test.applyRipple(context,0x00000000)

(5)Color资源

方法 功能 用法
Int.resToColor 通过ColorRes获取Color值 R.color.test.resToColor
Int.resToColorOrNull 通过ColorRes获取Color值,获取失败时返回null R.color.test.resToColorOrNull
String.hexToColor 把Hex Color转换为Color(Int格式) "#00000000".hexToColor
String.hexToColorOrNull 把Hex Color转换为Color(Int格式),获取失败时返回null "#000000".hexToColorOrNull
Int.colorToHex 把Color转换为Hex Color(String格式) 0x00000000.colorToHex
Int.colorToHexOrNull 把Color转换为Hex Color(String格式),获取失败时返回null 0x00000000.colorToHexOrNull
Int.lightColorNess 获取Color的亮度(0-1) 0x00000000.lightColorNess
Int.isLightColor 判断Color是否为亮色调 0x00000000.isLightColor

(6)Dimension资源

方法 功能 用法
Int.resToDimenValue 通过DimenRes获取Dimen值 R.dimen.test.resToDimenValue
Int.resToDimenValueOrNull 通过DimenRes获取Dimen值,获取失败时返回null R.dimen.test.resToDimenValueOrNull

(7)Attr资源(Attr的Res资源与Context的theme相关,因此此处必须手动传入Attr对应的Context)

方法 功能 用法
Context.getAttributeResource(attr: Int, defResId: Int? = null) 通过AttrResId获取Res资源 context.getAttributeResource(R.attr.test)
Context.selectableItemBackgroundRes 获取selectableItemBackground资源 context.selectableItemBackgroundRes
Context.selectableItemBackgroundBorderlessRes 获取selectableItemBackgroundBorderless资源 context.selectableItemBackgroundBorderlessRes
Context.actionBarItemBackgroundRes 获取actionBarItemBackground资源 context.actionBarItemBackgroundRes

项目地址:
https://github.com/Arcns/arc-fast

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容