下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
【移动应用开发技术】怎么在Android中动态加载二维码
这篇文章将为大家详细讲解有关怎么在Android中动态加载二维码,文章内容质量较高,因此在下分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1.需求背景需要实现一个动态加载但不显示出来的视图,且该视图上有个动态生成的二维码,最后用其去生成一张快照(也就是图片)。(常见这种情况是来源于“图片分享”的功能需求,与普通图片分享不同在于,该快照图片是动态加载不显示的。)2.需求功能拆解动态二维码的实现动态视图生成快照的实现3.踩坑点提要获取不到动态视图的bitmap无法获取最新动态视图的bitmap4.开发实现动态加载的视图的布局文件代码:<?xml
version="1.0"
encoding="utf-8"?>
<LinearLayout
xmlns:android="/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/qrcodeContentLl"
android:background="#F0E68C"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="100dp"
android:text="二维码快照"
android:textSize="18sp"
android:textStyle="italic"
/>
<ImageView
android:id="@+id/qrcodeIv"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_gravity="center"
android:layout_marginTop="@dimen/activity_vertical_margin"
android:scaleType="fitCenter"
/>
<!--<TextView-->
<!--android:layout_width="wrap_content"-->
<!--android:layout_height="wrap_content"-->
<!--android:layout_marginTop="800dp"-->
<!--android:text="ahahds"-->
<!--android:layout_gravity="center"/>-->
</LinearLayout>大概样式如下:(上面的线框是用来显示动态生成的二维码图片的)a.动态二维码的实现关于这块内容,网上有太多例子了,其实也不用详解。主要是利用Zxing提供的jar包来进行处理。需要看这块的详细代码可以去文章最后提供的GitHub地址查看,在此只提供下该jar包的资源下载(项目中若只涉及生成二维码模块,那么只要core核心jar包即可):点击下载>>core-3.3.0.jarb.动态视图生成快照的实现private
void
inflateAndShowCaptureView()
{
if
(hideView
==
null)
{
hideView
=
LayoutInflater.from(this).inflate(R.layout.layout_quick_capture,
null);
qrcodeIv
=
(ImageView)
hideView.findViewById(R.id.qrcodeIv);
hideView.setDrawingCacheEnabled(true);//设置控件允许绘制缓存
hideView.measure(View.MeasureSpec.makeMeasureSpec(mainLayoutLl.getWidth(),
View.MeasureSpec.EXACTLY),
View.MeasureSpec.makeMeasureSpec(0,
View.MeasureSpec.UNSPECIFIED));
hideView.layout(0,
0,
hideView.getMeasuredWidth(),
hideView.getMeasuredHeight());
}
else
{
hideView.destroyDrawingCache();//要得到新的视图,就得销毁之前的缓存
}
showCaptureView();
}
private
void
showCaptureView()
{
String
content
=
contentEt.getText().toString().trim();
if
(content
==
null
||
content.length()
==
0)
{
return;
}
if
(qrcodeIv.getWidth()
==
0)
{
return;
}
Bitmap
qrcodeBitmap
=
ZXingUtils.createQRImage(content,
qrcodeIv.getWidth(),
qrcodeIv.getHeight());
qrcodeIv.setImageBitmap(qrcodeBitmap);//先将生成的二维码显示在加载的视图上
Bitmap
bitmap
=
hideView.getDrawingCache();
//
获取视图的绘制缓存(快照)
if
(bitmap
!=
null)
{
showIv.setImageBitmap(bitmap);
}
}1.首先获取到视图的bitmap是通过getDrawingCache()得到的。若视图是在界面上直接显示出来的——>那么使用该方法直接获取bitmap是没有问题的;若视图是动态加载且不显示出来,那么此时获取bitmap是null。此处的解决办法就是手动给该视图布局:hideView.measure(View.MeasureSpec.makeMeasureSpec(mainLayoutLl.getWidth(),
View.MeasureSpec.EXACTLY),
View.MeasureSpec.makeMeasureSpec(0,
View.MeasureSpec.UNSPECIFIED));
hideView.layout(0,
0,
hideView.getMeasuredWidth(),
hideView.getMeasuredHeight());以下做点简单解释:View.MeasureSpec.makeMeasureSpec(intsize,intmode)中有两个参数,size和mode,第一组MeasureSpec中我将size设置为了当前显示页面的布局的宽度(也就是屏幕宽度),然后mode设置为EXACTLY——>所表示的意义是:给hideView中的子View指定了精确的宽度大小为当前屏幕的宽度。mode有三种,EXACTLY,AT_MOST,UNSPECIFIED。在上面代码中,将高度的size指定为0,mode指定为UNSPECIFIED则表示——>整个动态加载的视图高度指定为:依据于最后子View确认的高度。若将第一组MeasureSpec的相关参数也改为size=0,mode=UNSPECIFIED,则两组图对比显示如下:可以看到,动态生成的快照的宽度也变成了
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年03月黑龙江牡丹江市林口县公安局招考聘用辅警40人笔试历年(难与易错考点)高频考题后附答案详解
- 2024年03月福建三明市科学技术协会直属事业单位选聘笔试历年(难与易错考点)高频考题后附答案详解
- 2024年03月国家邮政局发展研究中心下属北京国邮科讯科技发展有限公司招考聘用应届生笔试历年(难与易错考点)高频考题后附答案详解
- 2024年卫生知识健康教育知识竞赛-院感知识应知应会笔试考试历年真题含答案
- 中国车身配件行业市场深度调研及竞争格局与投资研究报告2024-2034版
- 七年级劳动技术-关注食品安全课件
- 2023年12月求是杂志社2024年度公开招考6名高校毕业生笔试历年高频考点(难、易错点)附带答案详解
- 2023年12月广东省吴川市教师发展中心公开遴选学科教研员及教师培训管理员0笔试历年高频考点(难、易错点)附带答案详解
- 糖尿病患者的护理需求预测
- 足球运动皮肤传染病有哪些
- 招投标中出现围串标乱象的根源与应对策略思考
- 个人所得税生产经营所得纳税申报表B类
- 削峰和数字预失真原理及其运用
- 10_kV小电阻接地系统的参数特点及其短路计算
- 207最标准租房合同范本(有利房东)
- 部编版小学语文四年级下册精读课文《白鹅》说课课件
- 酒店报销水单
- 精品资料(2021-2022年收藏)浙江移动通信机房现场管理制度汇编
- 特级教师指导小学生作文——写日记
- 手卫生依从性及正确率调查分析总结
- (A4纸)打印刻度尺WORD
评论
0/150
提交评论