Zxing生成二维码 条形码

版权声明:本文为博主原创文章,未经博主允许不得转载。https://mp.csdn.net/mdeditor/78065629#

我是一个安卓新手 第一次写博客今天项目里面有个需求,需要动态生成一个条形码,于是 我想到了Zxing 这个开源框架。废话不多说,现在先来看代码

这里写图片描述

这是布局文件
接下来是代码

public class MainActivity extends AppCompatActivity {
private EditText mEtInput;
private Button mBtOneCode;
private Button mBtTwoCode;
private ImageView mIvCode;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    initView();
    initListener();
}

private void initListener() {
    mBtTwoCode.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            String strs =mEtInput.getText().toString().trim();
            Bitmap mBitmap=null;
            Toast.makeText(getApplicationContext(),""+strs,Toast.LENGTH_LONG).show();
            if(!"".equals(strs)&&strs!=null){
                try{
                    mBitmap=CreateTwoDcode(strs);
                }catch (WriterException e){
                    e.printStackTrace();
                }

                if (mBitmap!=null){
                   mIvCode.setImageBitmap(mBitmap);
                }
            }
        }
    });

    mBtOneCode.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            String str =mEtInput.getText().toString().trim();
            int size=str.length();
            for (int i=0;i<size;i++){
                int c=str.charAt(i);
                if (19968<=c&&c<40523){
                    Toast.makeText(getApplicationContext(),"生成的条形码不能使中文",Toast.LENGTH_LONG).show();
                    return;
                }
            }
            Bitmap bmp=null;
            try{
                if (!"".equals(str)&&str!=null){
                    bmp=CreateOneDcode(str);
                }
            }catch (WriterException e){
                e.printStackTrace();
            }


            if (bmp!=null){
                mIvCode.setImageBitmap(bmp);
            }
        }
    });

}

 public Bitmap CreateTwoDcode(String conternet)throws WriterException{
     BitMatrix bitMatrix=new MultiFormatWriter().encode(conternet, BarcodeFormat.QR_CODE,300,300);
     int width=bitMatrix.getWidth();
     int height=bitMatrix.getHeight();

     int[] pixels=new int[width*height];
     for (int i=0;i<height;i++){
         for (int j=0;j<width;j++){
             if(bitMatrix.get(j,i)){
                 pixels[i*width+j]=0xff000000;
             }
         }
     }

     Bitmap bitmap=Bitmap.createBitmap(width,height,Bitmap.Config.ARGB_8888);
     bitmap.setPixels(pixels,0,width,0,0,width,height);
     return bitmap;
 }

 public Bitmap CreateOneDcode(String conternet)throws  WriterException{
     BitMatrix bitMatrix=new MultiFormatWriter().encode(conternet,BarcodeFormat.CODE_128,500,200);
     int width=bitMatrix.getWidth();
     int height=bitMatrix.getHeight();

     int[] pixels=new int[width*height];
     for (int y=0;y<height;y++){
         for (int x=0;x<width;x++){
             if (bitMatrix.get(x,y)){
                 pixels[y*width+x]=0xff000000;
             }
         }
     }
     Bitmap bitmap=Bitmap.createBitmap(width,height, Bitmap.Config.ARGB_8888);
     bitmap.setPixels(pixels,0,width,0,0,width,height);
    return bitmap;
 }




private void initView() {
    mEtInput= (EditText) findViewById(R.id.et_inputText);
    mBtOneCode= (Button) findViewById(R.id.bt_one);
    mBtTwoCode= (Button) findViewById(R.id.bt_two);
    mIvCode= (ImageView) findViewById(R.id.iv_code);
} }

其中的MultiFormatWriter(), BitMatrix 等 均为Zxing的方法

注意:Zxing 是不支持中文二维码的

最后附上效果图,即可以生成二维码,又可以生成条形码
这里写图片描述

这里写图片描述

亲测 可以扫,有结果,毕竟第一发博客,我是个新人还会继续努力,希望大神指点

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值