Я создал настраиваемое представление для отображения прогресса значения, т.е. дней до праздника. Это прекрасно воспроизводится, когда он отображается на экране, но когда я пытаюсь программно сделать снимок экрана с этим экраном, пользовательский вид больше не отображается.
Вот как это выглядит при отображении на экране:
https://i.stack.imgur.com/3xVbE.png
Вот как выглядит снимок экрана:
https://i.stack.imgur.com/aMSfs.png
Чтобы сделать снимок экрана, я преобразовываю экран в растровое изображение, а затем сохраняю его в кэш телефона. Я пробовал несколько методов для преобразования в растровое изображение:
`val view = constraintLayout
view.isDrawingCacheEnabled = true
view.buildDrawingCache()
val bitmap = view.drawingCache`
`val view = constraintLayout
val bitmap = Bitmap.createBitmap(view.width, view.height, Bitmap.Config.ARGB_8888)
val canvas = Canvas(bitmap)
view.draw(canvas)`
`val view = this.window.decorView
view.isDrawingCacheEnabled = true
view.buildDrawingCache()
val bitmap = view.drawingCache
val frame = Rect()
this.window.decorView.getWindowVisibleDisplayFrame(frame)
val statusBarHeight = frame.top
val width = this.windowManager.defaultDisplay.width
val height = this.windowManager.defaultDisplay.height
val bitmapScreenshot = Bitmap.createBitmap(bitmap, 0, statusBarHeight, width, height - statusBarHeight)
view.destroyDrawingCache()`
Вот как я сохраняю растровое изображение:
val cachePath = File(this.cacheDir, "images")
cachePath.mkdirs() // don't forget to make the directory
val stream = FileOutputStream(cachePath.path + "/image.png") // overwrites this image every time
bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream)
stream.close()
Я уже рассматривал этот вопрос Имитируйте вопрос о функции скриншота , и если бы кто-нибудь знал ответ на этот вопрос, это действительно помогло бы, так как, когда я делаю скриншот с помощью аппаратных кнопок, пользовательские представления отображаются правильно.
Итак, мой вопрос: почему мои пользовательские представления не отображаются при создании снимка экрана и как я могу это исправить?
Заранее спасибо!