什么是扩展函数?
在介绍什么是Kotlin的扩展函数之前,先来看一个具体的例子。
在日常Android任务开发中,一般在设置View的尺寸时都应该使用dp值,但是View系统底层都是使用的px值来进行计算的,所以需要把dp值转成对应的px值。
在Java中,可以写一个dp转px的工具类,代码如下:
public class Util {
public static float dp2px(float dpValue, Context context) {
return TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_DIP,
dpValue,
context.getResources().getDisplayMetrics()
)
}
}
之后,在需要dp转px的地方调用如下方法就可以了。
float pxValue = Util.dp2px(20f, context)
这也是在Java中最常规的操作了,现在使用Kotlin之后,同样也可以定义一个一模一样的工具类进行数值转换,但是Kotlin中有更加优雅的写法。
新建一个Extensions.kt文件,编写如下代码:
fun Float.dp2px(context: Context) : Float {
return TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_DIP,
this,
context.resources.displayMetrics
)
}
然后,使用下面的写法就可以进行dp转px了
val pxValue = 20f.dp2px(context)
Kotlin扩展函数的基本结构如下:
fun ClassName.methodName(param: ParamType) : ReturnType {