Android杂识安卓资源收集Android知识

轻松获取布局截图 或友盟分享截图

2017-09-28  本文已影响56人  MrLgc

这面我就不说屏幕截图了, 直接进入任意布局获取截图。

因为我这面用到了友盟分享布局截图 所以我就分享给大家了 ,

😄😄。。。。。。

总体来说 主要还是得到布局的bitmap位图,接下来你可以存入本地、

也可以借助友盟分享 分享bitmap, 既然你拿到bitmap也就可以随心所欲了。

首先:

view.setDrawingCacheEnabled(true);//设置能否缓存图片信息

view.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED), MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));

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

view.buildDrawingCache();

Bitmap bitmap = view.getDrawingCache();

拿到bitmap 重新绘制下

之前我没有重新绘制分享出去的bitmap,分享出去的bitmap背景应该是黑色的或者是透明

然后我就用Canvas 重新绘制

Bitmap newBitmap = Bitmap.createBitmap(bitmap);

Canvas c =new Canvas(newBitmap);

c.drawColor(Color.WHITE);

/** 如果不设置canvas画布为白色,则生成透明 */

view.draw(c);

view.setDrawingCacheEnabled(false);//设置能否缓存图片信息

view.destroyDrawingCache();//释放缓存占用的资源

我用了上个方法有时候获取的bitmap 为空。

其次:

然后我就简单粗暴

view.setDrawingCacheEnabled(true);//设置能否缓存图片信息(drawing cache)

view.buildDrawingCache();//如果能够缓存图片,则创建图片缓存

Bitmap bitmap =  view.getDrawingCache();//如果图片已经缓存,返回一个bitmap*/

其实这样也可以拿到bitmap位图,但是在我截图之前赋值TextView,有的TextView不显示文字 ;

所以我又想到了第三种方法 对measur()这个方法搞一搞

view.measure(View.MeasureSpec.makeMeasureSpec(CommonTool.getScreenWidth(IApplication.getInstance()), View.MeasureSpec.EXACTLY),

View.MeasureSpec.makeMeasureSpec(CommonTool.getScreenHeight(IApplication.getInstance()), View.MeasureSpec.EXACTLY));

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

view.getMeasuredHeight());

这样就好了 ,measure()里面是有两个参数的

分别是我们自己.makeMeasureSpec()这个方法自己制造的

CommonTool.getScreenHeight(IApplication.getInstance())

这个是我自己封装的拿取屏幕尺寸。

最后:

view.setDrawingCacheEnabled(true);//设置能否缓存图片信息

view.measure(View.MeasureSpec.makeMeasureSpec(CommonTool.getScreenWidth(IApplication.getInstance()), View.MeasureSpec.EXACTLY),

View.MeasureSpec.makeMeasureSpec(CommonTool.getScreenHeight(IApplication.getInstance()), View.MeasureSpec.EXACTLY));

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

view.buildDrawingCache();

Bitmap bitmap = view.getDrawingCache();

拿到bitmap 重新绘制下

之前我没有重新绘制分享出去的bitmap,分享出去的bitmap背景应该是黑色的或者是透明。

然后我用Canvas 重新绘制,

Bitmap newBitmap = Bitmap.createBitmap(bitmap);

Canvas c =new Canvas(newBitmap);

c.drawColor(Color.WHITE);

/** 如果不设置canvas画布为白色,则生成透明 */

view.draw(c);

view.setDrawingCacheEnabled(false);//设置能否缓存图片信息

view.destroyDrawingCache();//释放缓存占用的资源

newBitmap 这个时候 就是我们最终的想要的结果了,去处理这个newBitmap。

最后bitmap 也需要释放掉啊。

上一篇下一篇

猜你喜欢

热点阅读