赞
踩
直接上代码:
- fun getBitmapFromView(view: View): Bitmap {
- val bitmap = Bitmap.createBitmap(
- view.width, view.height,
- Bitmap.Config.ARGB_8888
- )
- val canvas = Canvas(bitmap)
- view.layout(0, 0, view.width, view.height)
- Log.d("ss", "combineImages: width: " + view.width)
- Log.d("ss", "combineImages: height: " + view.height)
- view.draw(canvas)
- view.requestLayout()
- return bitmap
- }
今天看了一下kotlin的源码,发现我根本就是多余的,哈哈,人家本来就已经有这种方法了,直接用就可以了
- /**
- * Return a [Bitmap] representation of this [View].
- *
- * The resulting bitmap will be the same width and height as this view's current layout
- * dimensions. This does not take into account any transformations such as scale or translation.
- *
- * Note, this will use the software rendering pipeline to draw the view to the bitmap. This may
- * result with different drawing to what is rendered on a hardware accelerated canvas (such as
- * the device screen).
- *
- * If this view has not been laid out this method will throw a [IllegalStateException].
- *
- * @param config Bitmap config of the desired bitmap. Defaults to [Bitmap.Config.ARGB_8888].
- */
- fun View.drawToBitmap(config: Bitmap.Config = Bitmap.Config.ARGB_8888): Bitmap {
- if (!ViewCompat.isLaidOut(this)) {
- throw IllegalStateException("View needs to be laid out before calling drawToBitmap()")
- }
- return Bitmap.createBitmap(width, height, config).applyCanvas {
- translate(-scrollX.toFloat(), -scrollY.toFloat())
- draw(this)
- }
- }
![](https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreWhite.png)
直接引用就可以
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
- setContentView(R.layout.activity_test)
-
- //textView.setpadding(10)
-
- textView.drawToBitmap(Bitmap.Config.ARGB_8888)
-
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。