通过view.getDrawableCache实现截屏功能

最近公司要做一些需要截屏的APP,职场菜鸟什么都不会,于是就在网上找了些资料。东拼西凑的大致了解了一下,其实还是很简单的,但是尝试的过程中遇到了一些些小问题,于是就想到要不要记录下来,于是就有了这篇文章。技术小白,大神请无视。

就如网上到处都能搜到的view.getDrawableCache()的用法一样,在调用view.getDrawableCache()之前需要调用view.setDrawingCacheEnabled(true)的方法,设置为true之后返回的bitmap就不会是null,不然这里会返回null,在调用完view.getDrawableCache()方法之后再调用view.setDrawingCacheEnabled(false)的方法,设置为false之后系统会清空缓存中bitmap,也就是说,在你使用完返回的bitmap对象之前不要把它设置为false,否则会出现你操作的bitmap被recycle的错误。

那么问题来了,既然调用了view.setDrawingCacheEnabled(false)的方法后,bitmap对象会被清空回收,那么是不是不要调用就可以避免了呢?当然不行,如果不调用,那么后面很有可能出现OOM的问题,要解决OOM就麻烦了。所以操作完之后,还是调用一下view.setDrawingCacheEnabled(false)方法比较好。

如果想要对整个Acitivity进行截屏,那么首先要获取到Activity对应的View,因为getDrawableCache()这个方法是View的,不是Activity的。所以首先调用activity.getWindow().getCacheView();这样就能获取到Activity所对应的View对象了,于是就可以实现对Activity的截屏功能了。

都是些肤浅的东西,希望以后的东西越来越深奥,嘿嘿。

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。