简单使用的工具类
- 将图片资源转换成Bitmap以及合并2张bitmap图片
import android.content.Context
import android.graphics.Bitmap
import android.graphics.BitmapFactory
import android.graphics.Canvas
import android.graphics.Matrix
import android.os.Build
import android.support.v4.content.ContextCompat
import kotlin.math.abs
/**
* 合并2张bitmap图片
*/
object BitmapUtils {
/**
* 将2张图片合成
* @param background 背景图
* @param foreground 前景图
* @return
*/
fun compoundBitmap(background: Bitmap, foreground: Bitmap): Bitmap? {
val bitmap =
Bitmap.createBitmap(background.width, background.height, Bitmap.Config.ARGB_8888)
val canvas = Canvas(bitmap)
val left = abs(canvas.width.toFloat() - foreground.width.toFloat()) / 2
val top = abs(canvas.height.toFloat() - foreground.height.toFloat()) / 2
canvas.drawBitmap(background, Matrix(), null)
canvas.drawBitmap(foreground, left, top, null)
return bitmap
}
/**
* 将图片资源转换成Bitmap图片
*/
fun getBitmap(context: Context, vectorDrawableId: Int): Bitmap {
var bitmap: Bitmap? = null
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP) {
val vectorDrawable = ContextCompat.getDrawable(context, vectorDrawableId)
bitmap = Bitmap.createBitmap(
vectorDrawable!!.intrinsicWidth,
vectorDrawable.intrinsicHeight,
Bitmap.Config.ARGB_8888
)
val canvas = Canvas(bitmap)
vectorDrawable.setBounds(0, 0, canvas.width, canvas.height)
vectorDrawable.draw(canvas)
} else {
bitmap = BitmapFactory.decodeResource(context.resources, vectorDrawableId)
}
return bitmap
}
}
- 手机分辨率转换工具类:dp和px相互转换
/**
* 手机分辨率转换工具类
* dp -> px
* px -> dp
*/
object DensityUtil {
/**
* 根据手机的分辨率从 dp 的单位 转成为 px(像素)
*/
fun dp2px(context: Context, dpValue: Float): Int {
val scale = context.resources.displayMetrics.density
return (dpValue * scale + 0.5f).toInt()
}
/**
* 根据手机的分辨率从 px(像素) 的单位 转成为 dp
*/
fun px2dp(context: Context, pxValue: Float): Int {
val scale = context.resources.displayMetrics.density
return (pxValue / scale + 0.5f).toInt()
}
}