面试Android知识Android开发

20行代码实现生成二维码功能

2017-03-06  本文已影响1339人  wwzlp

现在二维码已经成了人们生活中的一部分,各种角落、超市、还是小店门口,亦或是商品包装上都少不了它,也可见它带给人们的便利。好了,废话有点多,本文章主要想说一下在客户端展示二维码的实现。

一般就是两种方法:

我这里就只讲客户端自己生成二维码的步骤:

  1. 导入zxing的核心类库,链接地址:http://pan.baidu.com/s/1qYTR0SW
  2. 生成二维码图片。

导入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哈哈

上一篇下一篇

猜你喜欢

热点阅读