Zxing生成二维码 条形码
程序员文章站
2024-01-27 12:00:16
...
版权声明:本文为博主原创文章,未经博主允许不得转载。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 是不支持中文二维码的
最后附上效果图,即可以生成二维码,又可以生成条形码
亲测 可以扫,有结果,毕竟第一发博客,我是个新人还会继续努力,希望大神指点
上一篇: 微信小程序之自动生成条形码和二维码