开源中国 OsChina Android 客户端源码分析(7)二维码生成对话框

功能描述:主界面中点击“我”进入个人中心, 点击右侧二维码图标,弹出附有个人信息的二维码对话框。

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目录。 

你可能感兴趣的:(对话框,二维码生成,长点击,保存图片到SD卡)