功能描述:主界面中点击“我”进入个人中心, 点击右侧二维码图标,弹出附有个人信息的二维码对话框。
1源码中的布局文件: dialog_my_qr_code.xml ,类文件对话框类net.oschina.app.ui 下的对话框类MyQrodeDialog,个人信息类 net.oschina.app.fragment 下的MyInformationFragmen
2 自定义对话框:
2.1通过自定义属性添加背景,进出动画效果
2.2MyQrodeDialog类中通过构造函数,加载对话框布局文件,获取填充二维码图片的控件,然后调用生成二维码的方法
2.3利用ZXING包生成二维码,原理:
我要给控件放一张生成的图片,最简单的就是用到setImageBitmap(bitmap);
怎么生成图片?
Bitmap bitmap = Bitmap.createBitmap(width, height,Bitmap.Config.ARGB_8888);
bitmap.setPixels(colors, 0, width, 0, 0, width, height);
为什么要设置像素呢?不设置的话不就像是一张“空”的图片吗!!!
3这个宽高怎么来?
用ZXING 按照指定的编码格式,大小,生成二维矩阵,宽高不就有了嘛!!!
BitMatrix bitmatrix = new MultiFormatWriter().encode(contents,BarcodeFormat.QR_CODE, 300, 300);
int width = bitmatrix.getWidth();
int height = bitmatrix.getHeight();
4上文2.3中的 像素怎么来?二维码图片的颜色 黑色,有了宽高以后,我们就需要给每个像素点赋颜色值,怎么赋?
//二维码图片,每个像素点的颜色值,32位黑色
int[] colors = new int[width * height];
for (int i = 0; i < height; i++) {
for (int j = 0; j < width; j++) {
if (bitmatrix.get(j, i)) {
colors[i * width + j] = 0xff000000;
}
else
{
colors[i * width + j] = 0xffffffff;
}
}
}
好了,都有了思路了,那么接下来就是整合代码,代码的顺序倒过来即可。
http://git.oschina.net/jixin/AndroidDialog 是今天模仿客户端写的自定义 对话框,填充生成的二维码项目,便于后期用到。附加了长点击对话框执行保存二维码图片到SD目录。