[Android] 위젯에서 벡터 이미지 사용하기
2020. 10. 6. 20:44
안드로이드에서 위젯을 만들때, 일반적인 앱을 만드는 것과 달리 레이아웃 구성에 제약이 상당히 많다.
사용할 수 있는 View와 Layout 타입이 한정되어 있고, 인식할 수 있는 제스처 타입도 두가지밖에 없다. 그래서 ConstraintLayout, RecyclerView, Custom View 등 평소 즐겨쓰던 치트키들이 모두 봉인된 상태로 개발을 해야한다.
이런건 뭐 번거로움을 감수하면 되지만... 위젯의 ImageView에서 벡터 포맷의 이미지를 사용하면 표시가 되지를 않는다.
열심히 삽질을 해봤으나 원인은 아직 모르겠다. png, jpg 타입의 이미지가 없고 벡터 타입을 꼭 사용해야 할 때... 비트맵으로 변환하는 야매 해결법을 메모해둔다.
object VectorUtils {
fun vectorToBitmap(context: Context, @DrawableRes resId: Int, scale: Float = 1f): Bitmap? {
val drawable = AppCompatResources.getDrawable(context, resId) ?: return null
val bitmap = Bitmap.createBitmap(
drawable.intrinsicWidth,
drawable.intrinsicHeight,
Bitmap.Config.ARGB_8888
)
val canvas = Canvas(bitmap)
drawable.setBounds(0, 0, (canvas.width * scale).toInt(), (canvas.height * scale).toInt())
drawable.draw(canvas)
return bitmap
}
}
'if (study) > Android' 카테고리의 다른 글
[Android] 이탤릭체 사용시 TextView 끝이 잘리는 문제 (0) | 2020.10.21 |
---|---|
[짤막기록/Android] map, mapByPage로 PagedList 변형하기 (0) | 2020.05.28 |
[Android] ListAdapter로 RecyclerView 효율적으로 사용하기 (DiffUtil, AsyncListDiffer) (4) | 2020.05.25 |