频道栏目
首页 > 资讯 > Android > 正文

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

17-03-11        来源:[db:作者]  
收藏   我要投稿

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

相关TAG标签
上一篇:【图形图像】Android SurfaceFlinger之SurfaceFlinger启动过程
下一篇:Java中反射调用私有方法出现NoSuchMethodException
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站