Android截图的实现方法

2021/4/13 18:30:46

本文主要是介绍Android截图的实现方法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

Android实现截图的方式之一:将View对象通过cache机制转化成Bitmap对象

相关API

void setDrawingCacheEnabled(boolean enabled)

void buildDrawingCache() // 直接调用了buildDrawingCache(false)
void buildDrawingCache(boolean autoScale)

Bitmap getDrawingCache() // 直接调用了getDrawingCache(false)
Bitmap getDrawingCache(boolean autoScale) // 此方法会判断是否开启了cache,已开启则调用buildDrawingCache方法

void destroyDrawingCache() // 销毁cache,在调用setDrawingCacheEnabled(false)时也会调用此方法

截图的步骤如下

  1. 获取要截取的View对象。如果是截全屏,首先获取当前Activity,然后通过Activity.getWindow().getDecorView() 获取DecorView对象;
  2. 调用View.setDrawingCacheEnabled(true) 开启cache;
  3. 调用View.getDrawingCache() 获取Bitmap对象;
  4. 通过Bitmap.createBitmap(Bitmap) 拷贝一个步骤3获取到的缓存Bitmap,对拷贝的Bitmap对象进行操作;
  5. 如果要更新缓存对象的话,需要调用View.destroyDrawingCache() 删除之前缓存的对象。如果不再使用缓存,调用View.setDrawingCacheEnabled(false)(如果跳过步骤4,直接使用步骤3的cache,那么在cache销毁后会报错:java.lang.RuntimeException: Canvas: trying to use a recycled bitmap android.graphics.Bitmap@f50e14a

参考:http://blog.sina.com.cn/s/blog_726322c80101c0r9.html



这篇关于Android截图的实现方法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程