0
点赞
收藏
分享

微信扫一扫

常用的Spring Boot注解及其作用

瑾谋 2023-09-22 阅读 41
android

Tips: KTX可以直接将bitmap转为Drawable 

     val drawable1 = ColorDrawable()
val bitmap1 = drawable1.toBitmap()

Drawable 也可以直接转为BitMap 

     val bitmap = Bitmap.createBitmap(20,20,Bitmap.Config.ARGB_8888)
val drawable = bitmap.toDrawable(resources)

toDrawable源码:

/** Create a [BitmapDrawable] from this [Bitmap]. */
public inline fun Bitmap.toDrawable(
resources: Resources
)
: BitmapDrawable = BitmapDrawable(resources, this)

toBitmap源码:

public fun Drawable.toBitmap(
@Px width: Int = intrinsicWidth,
@Px height: Int = intrinsicHeight,
config: Config? = null
)
: Bitmap {
if (this is BitmapDrawable) {
if (bitmap == null) {
// This is slightly better than returning an empty, zero-size bitmap.
throw IllegalArgumentException("bitmap is null")
}
if (config == null || bitmap.config == config) {
// Fast-path to return original. Bitmap.createScaledBitmap will do this check, but it
// involves allocation and two jumps into native code so we perform the check ourselves.
if (width == bitmap.width && height == bitmap.height) {
return bitmap
}
return Bitmap.createScaledBitmap(bitmap, width, height, true)
}
}

val (oldLeft, oldTop, oldRight, oldBottom) = bounds

val bitmap = Bitmap.createBitmap(width, height, config ?: Config.ARGB_8888)
setBounds(0, 0, width, height)
draw(Canvas(bitmap))

setBounds(oldLeft, oldTop, oldRight, oldBottom)
return bitmap
}

Bitmap: bit 位 ,map 映射,也就是像素映射到内存对象

Drawable: ColorDrawable 默认范围0.0 需要制定Bounds

drawable 内部维持绘制规则 可以使bitmap color 等

bitmap是像素信息

bitmap和drawable 互转本质上是创建彼此的一个对象实例

bitmapDrawable通过canvas.drawBitmap

自定义Drawable:

drawable 是一个接口 需要实现四个方法:



class MatchDrawable : Drawable() {
override fun draw(canvas: Canvas) {

}

override fun setAlpha(alpha: Int) {
}

override fun setColorFilter(colorFilter: ColorFilter?) {
}

override fun getOpacity(): Int {
}
}

setColor KTX 可以写 "#0085d0".toColorInt

大多数情况可以使用系统自带的drawable  比如 colorDrawable  BitmapDrawable等

举报

相关推荐

0 条评论