bitmap

- 단색이 아닌 특정 이미지를 활용하여 View의 테두리를 붙여서 그려줘야 하는 경우가 있었다. - 이미 그려야하는 라인의 각 지점에 대한 좌표 값들이 프로젝트에 구성되어 있었기 때문에 그에 따라 비트맵을 붙여주기만 하면 되었다.val measure = PathMeasure(path, false)val length = measure.length - PathMeasure(path, forceClosed: Boolean)는 Android에서 Path의 길이와 경로 상의 점, 방향 등을 측정할 수 있게 해주는 클래스다. 이를 통해 그려야 하는 라인 상의 정확한 위치와 방향을 찾을 수 있다. - 그리기 전에 경로 길이를 측정해놓고, 이후 일정 거리마다 지점에 비트맵을 붙일 것이다. - forceClosed: B..
- Glance에서 Image 컴포저블 자체에 Alpha 값을 적용할 수는 없다. 그래서 애초에 ImageProvider에 리소스를 넘길 때 알파 값이 적용된 리소스여야 한다. - 알파값 적용된 비트맵은 아래 확장함수를 구현하여 기존 비트맵에서 알파를 적용한 비트맵을 다시 그리도록 했다.fun Bitmap.withAlpha(alpha: Float): Bitmap { val result = createBitmap(width, height) val canvas = Canvas(result) val paint = Paint().apply { this.alpha = (alpha * 255).toInt() } canvas.drawBitmap(this, 0f, 0f, paint) retu..
val bitmap = Bitmap.createBitmap(200, 200, Bitmap.Config.ARGB_8888)val canvas = Canvas(bitmap)val paint = Paint()val path = Path()path.fillType = Path.FillType.EVEN_ODDpath.moveTo(0f, 40f)path.lineTo(5f, 0f)path.lineTo(5f, 80f)path.lineTo(0f, 40f)canvas.drawPath(path, paint)paint.strokeWidth = 10fcanvas.drawLine(5f, 40f, 200f, 40f, paint)val rightPath = Path()rightPath.fillType = Path.FillType.E..
Fatal Exception: java.lang.IllegalArgumentException RemoteViews for widget update exceeds maximum bitmap memory usage (used: 16216160, max: 15940800) 위와 같은 에러가 간혹 Widget에서 Bitmap을 사용할 때 발생합니다. 이전에 관련된 글을 작성했으나 여전히 재발하는 경우가 있어서 더 강화된 로직을 문서를 참고하여 구성했습니다. 거대한 비트맵 처리에 대해서 아래 공식 문서에서 처리 로직을 제안해주고 있습니다. https://developer.android.com/topic/performance/graphics/load-bitmap?hl=ko 큰 비트맵을 효율적으로 로드 | App q..
달력형 위젯을 구현 중, Background ImageView에 디자이너분이 제작해 주신 테마 이미지를 Bitmap으로 삽입하던 중 다음과 같은 오류가 발생했다. java.lang.IllegalArgumentException: RemoteViews for widget update exceeds maximum bitmap memory usage (used: 7474416, max: 6432000) 무슨 오류인가.. 확인해 보니 Bitmap 메모리 사용량이 한도를 초과한 것이다. 이미지 크기와 해상도가 상이하기 때문에 충분히 발생할 수 있다고 생각했다. 위젯에 최적화된 이미지를 다시 제작하기 전까지는 임시로 크기를 줄여서라도 사용하기로 결정했다. fun getBitmapSize(file: File): Siz..
SeungYong.Lee
'bitmap' 태그의 글 목록