view.getDrawingCache()在Android API 28中已弃用 [英] view.getDrawingCache() is deprecated in Android API 28
本文介绍了view.getDrawingCache()在Android API 28中已弃用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
在android API 28中已弃用view.getDrawingCache()
.是否有任何更新的解决方案可在android中生成特定视图的位图.
In android API 28 view.getDrawingCache()
has been deprecated. Is there any newer solution to generate a Bitmap of a particular view in android.
推荐答案
我找到了一种使用PixelCopy API将视图作为位图检索的方法.二手Kotlin
I have found a way to use PixelCopy API for retrieving the view as a Bitmap. Used Kotlin
fun getBitmapFromView(view: View, activity: Activity, callback: (Bitmap) -> Unit) {
activity.window?.let { window ->
val bitmap = Bitmap.createBitmap(view.width, view.height, Bitmap.Config.ARGB_8888)
val locationOfViewInWindow = IntArray(2)
view.getLocationInWindow(locationOfViewInWindow)
try {
PixelCopy.request(window, Rect(locationOfViewInWindow[0], locationOfViewInWindow[1], locationOfViewInWindow[0] + view.width, locationOfViewInWindow[1] + view.height), bitmap, { copyResult ->
if (copyResult == PixelCopy.SUCCESS) {
callback(bitmap)
}
// possible to handle other result codes ...
}, Handler())
} catch (e: IllegalArgumentException) {
// PixelCopy may throw IllegalArgumentException, make sure to handle it
e.printStackTrace()
}
}
}
这篇关于view.getDrawingCache()在Android API 28中已弃用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文