Android:布局中的view存成图片

新浪博客转载地址 http://blog.sina.com.cn/s/blog_6854b8350101qila.html

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()方法了。。

猜你喜欢

转载自blog.csdn.net/qq_18824545/article/details/52767026
今日推荐