首页 > 程序开发 > 移动开发 > Android >

android中如何直接将布局中的View存成图像

2017-03-11

android中如何直接将布局中的View存成图像,android可以将布局中的view存成图片。这个问题虽然不常见,但是有还是会应用到。

android中如何直接将布局中的View存成图像,android可以将布局中的view存成图片。这个问题虽然不常见,但是有还是会应用到。来看下面一段代码

View view = getLayoutInflater().inflate(R.layout.activity_main, null);

//打开图像缓存

view.setDrawingCacheEnabled(true);

//测量view的大小

view.measure(

MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED),

MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED)

);

//发送位置和尺寸到view及其所有的子view

view.layout (0, 0, view.getMeasuredWidth(), view.getMeasuredHeight());

Bitmap bp = view.getDrawingCache();//获得可视组件的截图

这样写根据解析的布局的不同,view.measure()方法可能会报空指针异常,查看源码这样翻译的:The actual mesurement work of a view is performed in

* {@link #onMeasure(int, int)}, called by this method. Therefore, only

* {@link #onMeasure(int, int)} can and must be overriden by subclasses.

*

也就是说想view在调用measure的时候必须重写他的onMeasure()方法。但是我没有重写也有成功的情况。查看布局发现有的布局跟标签是 有的是

将RelativeLayout 把他换为LinearLayout 就好了。究其原因,原来是 Linearlayout重写了onmeasure方法,其他的布局文件没有重写onmeasure,所以在调用listItem.measure(0, 0);

会报空指针异常,如果想用这个东东,就必须用linearlayout布局或者重写onMeasure()方法了。。

相关文章
最新文章
热点推荐