抬头仰望星空,是否能发现自己的渺小。

伪斜杠青年

人们总是混淆了欲望和理想

使用createConfigurationContext对单一布局进行指定dpi的缩放渲染(固定尺寸)

工作中遇到一个需求是分享图片时将图片固定为1080p的分辨率,但实际上是按安卓的dp方式写的布局,那这样就会有个问题,view生成的bitmap也是按屏幕进行缩放的,那么这就不符合需求。

但好在项目中已有解决办法,之前查了挺久没找到答案,所以记录一下宝藏:

fun shareImageContext(origContext: Context): Context {
    return ContextThemeWrapper(origContext.createConfigurationContext(Configuration(origContext.resources.configuration).apply {
        densityDpi = 480
        fontScale = 1f
    }), R.style.Theme_Dark)
}

简单明了,然后返回的新context,就用于LayoutInflater.from(context)中即可,然后填充数据,最后使用以下的方式就可以生成bitmap了,再然后保存等。

fun generateViewBitmap(v: View): Bitmap {
val bitmap: Bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888)
val canvas = Canvas(bitmap)
v.draw(canvas)
return bitmap
}

以上。


0条评论

发表评论