Android自带屏幕截图功能,截图面向所有视图,我门可以从其他控件或布局那里截图下来,然后显示在ImageView上面。
使用截图功能必须通过代码完成,相关方法如下:
- setDrawingCacheEnabled:设置绘图缓存的可用状态
- isDrawingCacheEnabled:判断控件的绘图缓存是否可用
- setDrawingCacheQuality:设置绘图缓存的质量
- getDrawingCache:获取该控件的绘图缓存结果,返回一个Bitmap类型的值
- setDrawingCacheBackgroundColor:设置绘图缓存的背景颜色,不设置则默认为黑色,通常设为白色
步骤:
- 开始截图前,先调用setDrawingCacheEnabled方法开启绘图缓存
- 调用getDrawingCache方法获取缓存中的Bitmap数据
- 完成截图,延迟若干毫秒后调用setDrawingCacheEnabled关闭绘图缓存,如果还需截图,就再次调用该方法重新开启
实例代码:
先添加一个TextView控件和一个ImageView控件,在代码中绑定,开启TextView的绘图缓存。
截图功能代码如下:
Bitmap bitmap = textView.getDrawingCache(); imageView.setImageBitmap(bitmap); //截图后不能马上关闭缓存,因为界面渲染需要时间,如果立即关闭会报错 //java.lang.IllegalArgumentException:Cannot draw recycled bitmaps mHandler.postDelayed(mResetCache,200);
handler代码:
private Handler mHandler = new Handler(); private Runable mResetCache = new Runnable(){ @Override public void run(){ textView.setDrawingCacheEnabled(false); textView.setDrawingCacheEnabled(true); } };