Так что никто не ответил, и после некоторых поисков и экспериментов я получаю рабочее решение, использую его или адаптируюсь к вашим потребностям, если вы попадете в ту же ситуацию
(ответ основан на коде из моего вопроса- поэтому, если вы пропустите некоторые зависимости, пожалуйста, отметьте это)
- Объект сопутствующего объекта Init с кодом запроса для действия галереи в вашей ACTIVITY
companion object {
private const val GALLERY_REQUEST_CODE = 102
}
Создать метод для выбора изображения из галереи (необходимо получить Uri)
private fun pickFromGallery() {
val intent = Intent(Intent.ACTION_PICK)
intent.type = "image/*"
val imageTypes = arrayOf("image/jpeg", "image/png")
intent.putExtra(Intent.EXTRA_MIME_TYPES, imageTypes)
startActivityForResult(intent, GALLERY_REQUEST_CODE)
}
Чем вам нужно переопределить
onActivityResult () метод, чтобы получить ваш Uri и отправить его в пользовательское представление
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (requestCode == GALLERY_REQUEST_CODE) {
if (resultCode == Activity.RESULT_OK) {
val uri: Uri? = data?.data
if (uri != null) {
val bitmap = MediaStore.Images.Media.getBitmap(this.contentResolver, uri)
canvasCustomView.loadCanvasBackground(bitmap)
}
}
}
}
Теперь в
onDraw () метод
(в вашем пользовательском представлении) вам нужно использовать .drawBitmap, чтобы установить полученное растровое изображение Uri aka в качестве фона для вашего холста
override fun onDraw(canvas: Canvas?) {
if (bitmapBackground != null) {
canvas?.drawBitmap(bitmapBackground!!, 0f, 0f, paint)
}