二维码保存遇到问题小结
来源:互联网 发布:淘宝营销策略 编辑:程序博客网 时间:2024/05/16 11:31
在做二维码保存成图片的时候遇到了几个问题。在这里记录一下。也方便一下后来的同学。不足之处请指正~
1.如何将二维码图片(包括布局整个页面保存下来)保存下来?
经过查找资料发现用到的知识点是:将View转化为Bitmap并保存下来有一个方法是使用:View里面有几个方法,
setDrawingCacheEnabled(boolean b);
This API can be used to manually generate a bitmap copy of this view, by setting the flag to true and calling
getDrawingCache();
A non-scaled bitmap representing this view or null if cache is disabled
DestoryDrawingCache();
Frees the resources by the drawing cache,if you can call bulidDrawingCache() or setDrawingCacheEnable(true),you should cleanup the cache with this method afterwards.
大概意思就是:我们可以利用它们把view转化为Bitmap
下面是我写的一个小例子:
public Bitmap convertViewToBitmap() { TestView.setDrawingCacheEnabled(true); TestView.measure( View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED), View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED)); Bitmap bitmap = TestView.getDrawingCache(); return bitmap; }
if(item.getItemId()==R.id.action_save_pic){ Bitmap bitmap = convertViewToBitmap(); getCommand().savePicture(bitmap); TestView.setDrawingCacheEnabled(false); TestView.destoryDrawingCache();//这里记得将缓存销毁 }
使用该方法可以将一个布局转化为Bitmap,然后再保存。
*这里我遇到的一个问题就是按照网络上的写法保存了以后布局会乱跑至左上角,一开始参考网络上的写法
网络上大家提供的方法写的是:
contentLayout.setDrawingCacheEnabled(true); contentLayout.measure( MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED), MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED)); contentLayout.layout(0, 0, contentLayout.getMeasuredWidth(), contentLayout.getMeasuredHeight()); contentLayout.buildDrawingCache(); Bitmap bitmap= contentLayout.getDrawingCache();
在使用的时候调用Bitmap bitmap = view.getDrawingCache();
以上是网络上的代码,使用该代码以后会出现跑到右上角的问题,还有就是我之前在这块新new 了一个Bitmap来保存缓存的图片,然后这里设置了 contentLayout.layout(0, 0, contentLayout.getMeasuredWidth(),contentLayout.getMeasuredHeight()); 这样使得布局在左上角显示。
保存的二维码图片一片黑
生成二维码的代码:加上如下判断,意思就是有信息的点显示黑色,无信息的点显示白色。另外保存成png默认背景是黑色的,所以会看到一片黑。
if (resMatrix.get(x, y)) { pixels[y * width + x] = 0xff000000;//白色 } else { pixels[y * width + x] = 0xffffffff;//黑色 }
总结:在遇到需要把布局截图保存问题可以使用该方法,自己的理解就是使用了darwingcache以后把View缓存转化为了Bitmap,然后我们可以保存该Bitmap.希望能帮助到大家。
- 二维码保存遇到问题小结
- 二维码扫描遇到的问题
- 生成二维码,解决保存二维码全黑的问题
- 二维码的生成 lizbqrencode遇到的问题
- 关于扫描POS二维码遇到的问题
- 微信小程序二维码解析遇到的问题
- zxing扫描二维码遇到的一个问题
- qr二维码遇到的一些问题
- 重新安装mysql遇到问题小结
- Axis2+eclipse遇到问题小结
- byte编码转换保存TXT问题小结
- 二维码保存时看到是一张纯黑色图片问题
- zxing开源项目 解决生成二维码保存的问题
- gridview保存Excel文件遇到的问题
- vim保存文件遇到的一些问题
- 遇到的保存网页的问题
- mysql 保存中文遇到的问题
- iOS,二维码识别,保存二维码
- 学习SpringMVC——从HelloWorld开始
- JVM调优 学习: 概念储备 (1)
- 线程创建的两种方式及区别
- Debug---Eclipse断点调试基础
- 高仿喵播项目下载iOS
- 二维码保存遇到问题小结
- Android插件化认知
- org.apache.struts2.json.JSONException: java.lang.IllegalAccessException: Class org.apache.struts2.js
- XCode6 Archive 出错~,大侠们 ,SOS ....
- 欢迎使用CSDN-markdown编辑器
- 新固态硬盘格式化,并在Ubuntu挂载ntfs格式硬盘
- 涉及java及python的求职之路
- 诗歌
- 第十六周项目1-(5)验证算法直接选择排序