Kotlin中dp转Float方法及Activity获取屏幕中间位置报错解决
解决DisplayMetrics转Float及获取屏幕中间位置的问题
你代码里的val dpFloat = dp.toFloat()报错“未解析的引用”,核心原因是dp这个变量没有定义,先解决这个问题,再处理DisplayMetrics的Float转换及屏幕中间位置计算:
第一步:获取DisplayMetrics实例
在Activity中,直接通过resources就能拿到DisplayMetrics对象:val displayMetrics = resources.displayMetrics第二步:从DisplayMetrics获取Float类型像素值
DisplayMetrics的widthPixels、heightPixels都是Int类型,只需调用.toFloat()就能转为Float:// 屏幕宽、高的Float类型值 val screenWidthFloat = displayMetrics.widthPixels.toFloat() val screenHeightFloat = displayMetrics.heightPixels.toFloat()第三步:计算屏幕中间位置
用上面的Float值直接除以2,即可得到屏幕中间坐标:val centerX = screenWidthFloat / 2f val centerY = screenHeightFloat / 2f如果是要将DP值转为Float类型像素
若你原本的代码是想实现DP转PX,直接用DisplayMetrics的density(本身是Float类型)计算即可:// 示例:将18dp转换为像素Float值 val dpValue = 18f val pxFloat = dpValue * displayMetrics.density
内容的提问来源于stack exchange,提问作者nikwq
相关产品推荐
相关产品推荐

