现在二维码已经成了人们生活中的一部分,各种角落、超市、还是小店门口,亦或是商品包装上都少不了它,也可见它带给人们的便利。好了,废话有点多,本文章主要想说一下在客户端展示二维码的实现。
一般就是两种方法:
- 服务端生成二维码图片,客户端去获取图片。
- 客户端自己生成二维码。
我这里就只讲客户端自己生成二维码的步骤:
- 导入zxing的核心类库,链接地址:http://pan.baidu.com/s/1qYTR0SW
- 生成二维码图片。
导入zxing的核心类库
因为只是实现生成二维码的功能,并不需要把整个zxing的项目去拷贝下来(如果用到扫描解析二维码,还需要将官方的项目工程拷贝下来),只需要将核心类库的包导入到你的项目中即可。
生成二维码图片
public void createImage(String codeFormat, ImageView codeImg) {
try {
if (codeFormat == null || "".equals(codeFormat) || codeFormat.length() < 1) {
return;
}
Hashtable<EncodeHintType, String> hints = new Hashtable<EncodeHintType, String>();
hints.put(EncodeHintType.CHARACTER_SET, "utf-8");
BitMatrix bitMatrix = new QRCodeWriter().encode(codeFormat, BarcodeFormat.QR_CODE, QR_WIDTH, QR_HEIGHT, hints);
int[] pixels = new int[QR_WIDTH * QR_HEIGHT];
for (int y = 0; y < QR_HEIGHT; y++) {
for (int x = 0; x < QR_WIDTH; x++) {
if (bitMatrix.get(x, y)) {
pixels[y * QR_WIDTH + x] = 0xff000000;
}
}
}
Bitmap bitmap = Bitmap.createBitmap(QR_WIDTH, QR_HEIGHT, Bitmap.Config.ARGB_8888);
bitmap.setPixels(pixels, 0, QR_WIDTH, 0, 0, QR_WIDTH, QR_HEIGHT);
codeImg.setImageBitmap(bitmap);
} catch (WriterException e) {
e.printStackTrace();
}
}
二维码的宽度和高度可以根据自己的需求自己定义,codeFormat就是你想要存储在二维码中的字符串信息(注意二维码容量是有限制的,里面的信息尽量小一点,更有利于解析)。
哈哈是不是很简单呢O(∩_∩)O哈哈