美文网首页面试Android知识Android开发
20行代码实现生成二维码功能

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

作者: wwzlp | 来源:发表于2017-03-06 11:17 被阅读1339次

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

    一般就是两种方法:

    • 服务端生成二维码图片,客户端去获取图片。
    • 客户端自己生成二维码。

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

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

    相关文章

      网友评论

        本文标题:20行代码实现生成二维码功能

        本文链接:https://www.haomeiwen.com/subject/xeurgttx.html