大佬教程收集整理的这篇文章主要介绍了Android Zxing生成二维码经典案例分享,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
本文实例为大家解析了Zxing生成二维码的经典案例,供大家参考,具体内容如下
1、首先呢,先编译 compile ‘com.google.zxing:core:3.2.1'
2、实战
@H_
675_11@
public class QRCode
{
private stati
c int IMAGE_HALFWIDTH = 50;//宽度值,影响中间
图片大小
/
**
*
生成二维码,
默认大小为500*500
*
* @return bitmap
*/
public static Bitmap createQRCode()
{
return createQRCode(
);
}
/
**
*
生成二维码,
默认大小为500*500
*
* @param text 需要
生成二维码的
文字、网址等
* @return bitmap
*/
public static Bitmap createQRCode(
String text)
{
return createQRCode(text,500
);
}
/
**
*
生成二维码
*
* @param text 需要
生成二维码的
文字、网址等
* @param size 需要
生成二维码的大小()
* @return bitmap
*/
public static Bitmap createQRCode(
String text,int siz
E) {
try
{
Hashtable<EncodeHintType,
String> hints = new Hashtable<>(
);
hint
s.put(EncodeHintType.CHARACTER_SET,"utf-8"
);
BitMatrix bitMatrix = new QRCodeWriter().encode(text,BarcodeFormat.QR_CODE,size,hints
);
int[] pixels = new int[size * size];
for (int y = 0; y < size; y++)
{
for (int x = 0; x < size; x++)
{
if (bitMatrix.get(x,y))
{
pixels[y * size + x] = 0xff000000;
} else
{
pixels[y * size + x] = 0xffffffff;
}
}
}
Bitmap bitmap = Bitmap.createBitmap(size,Bitmap.Con
fig.ARGB_8888
);
bitmap.setPixels(pixels,siz
E);
return bitmap;
} catch (WriterException
E) {
e.printStackTrace(
);
return null;
}
}
/
**
*
生成带
logo的
二维码,
默认
二维码的大小为500,
logo为
二维码的1/5
*
* @param text 需要
生成二维码的
文字、网址等
* @param mBitmap
logo文件
* @return bitmap
*/
public static Bitmap createQRCodeWith
logo(
String text,Bitmap mBitma
p) {
return createQRCodeWith
logo(text,500,mBitma
p);
}
/
**
*
生成带
logo的
二维码,
logo默认为
二维码的1/5
*
* @param text 需要
生成二维码的
文字、网址等
* @param size 需要
生成二维码的大小()
* @param mBitmap
logo文件
* @return bitmap
*/
public static Bitmap createQRCodeWith
logo(
String text,int size,Bitmap mBitma
p) {
try
{
IMAGE_HALFWIDTH = size/10;
Hashtable<EncodeHintType,Ob
ject> hints = new Hashtable<>(
);
hint
s.put(EncodeHintType.CHARACTER_SET,"utf-8"
);
/*
* 设置容错级别,
默认为ErrorCorrectionLeve
l.L
* 因为中间加入
logo所以建议你把容错级别调至H,否则可能
会出现识别不了
*/
hint
s.put(EncodeHintType.ERROR_CORRECTION,ErrorCorrectionLeve
l.H
);
BitMatrix bitMatrix = new QRCodeWriter().encode(text,hints
);
int width = bitMatrix.getWidth(
);//矩阵高度
int height = bitMatrix.getHeight(
);//矩阵宽度
int halfW = width / 2;
int halfH = height / 2;
Matrix m = new Matrix(
);
float sx = (float) 2 * IMAGE_HALFWIDTH / mBitmap.getWidth(
);
float sy = (float) 2 * IMAGE_HALFWIDTH
/ mBitmap.getHeight(
);
m.setScale(sx,sy
);
//设置缩放信息
//将
logo图片按martix设置的信息缩放
mBitmap = Bitmap.createBitmap(mBitmap,mBitmap.getWidth(),mBitmap.getHeight(),m,
fals
E);
int[] pixels = new int[size * size];
for (int y = 0; y < size; y++)
{
for (int x = 0; x < size; x++)
{
if (x > halfW - IMAGE_HALFWIDTH && x < halfW + IMAGE_HALFWIDTH
&& y > halfH - IMAGE_HALFWIDTH
&& y < halfH + IMAGE_HALFWIDTH)
{
//该位置用于存放
图片信息
//记录
图片每个像素信息
pixels[y * width + x] = mBitmap.getPixel(x - halfW
+ IMAGE_HALFWIDTH,y - halfH + IMAGE_HALFWIDTH
);
} else
{
if (bitMatrix.get(x,y))
{
pixels[y * size + x] = 0xff000000;
} else
{
pixels[y * size + x] = 0xffffffff;
}
}
}
}
Bitmap bitmap = Bitmap.createBitmap(size,siz
E);
return bitmap;
} catch (WriterException
E) {
e.printStackTrace(
);
return null;
}
}
3、解析
生成二维码,上面可以做的操作生成带文字和网址、带图片的还有二维码的大小,在代码中都有了详细的总结。
4、对二维码进行放大和缩小的操作
@H_
675_11@
public class MainActivity extends AppCompatActivity
{
Bitmap bp = null;
ImageView imageview;
float scaleWidth;
float scaleHeight;
int h;
Boolean num =
false;
private Bitmap netfits;
@Override
protected void onCreate(Bundle savedInstanceStat
E) {
super
.onCreate(savedInstanceStat
E);
setContentView(R.layout.activity_main
);
Displa
ymetrics dm = new Displa
ymetrics(
);//创建矩阵
getWindowManager().getDefaultDisplay().getMetrics(dm
);
imageview = (ImageView) findViewById(R.id.imageview
);
bp= BitmapFactory.decode
resource(get
resources(),R.drawable.icon
);
netfits = QRCode.createQRCodeWith
logo("张",200,b
p);
int width = netfit
s.getWidth(
);
int height = netfit
s.getHeight(
);
int w = d
m.widthPixels; //得到屏幕的宽度
final int h = d
m.heightPixels; //得到屏幕的高度
scaleWidth = ((float) w) / width;
scaleHeight = ((float) w) / height;
imageview.setImageBitmap(netfits
);
imageview.setOnClickListener(new View
.onClickListener()
{
@Override
public void onClick(
View view)
{
if (num == tru
E) {
Matrix matrix = new Matrix(
);
matrix.postScale(scaleWidth,scaleHeight
);
Bitmap newBitmap = Bitmap.createBitmap(netfits,netfit
s.getWidth(),netfit
s.getHeight(),matrix,tru
E);
imageview.setImageBitmap(newBitma
p);
num =
false;
} else
{
Matrix matrix = new Matrix(
);
matrix.postScale(1.0f,1.0f
);
Bitmap newBitmap = Bitmap.createBitmap(netfits,tru
E);
imageview.setImageBitmap(newBitma
p);
num = true;
}
}
}
);
}
普通模式下我们可以自己处理:
@H_
675_11@
@Override
public
Boolean onTouchEvent(MotionEvent event)
{
switch (event.getAction())
{
case MotionEvent.ACTION_DOWN: //当屏幕检测到第
一个触点按下之后就会触发到这个事件。
if (num == tru
E) {
Matrix matrix = new Matrix(
);
matrix.postScale(scaleWidth,tru
E);
imageview.setImageBitmap(newBitma
p);
num = true;
}
break;
}
return super
.onTouchEvent(event
);
}
添加功能:看是否选中,给二维码添加图片
@H_
675_11@
private void initView()
{
editText = (EditText) thi
s.findViewById(R.id.qrcode_et
);
button = (Button) thi
s.findViewById(R.id.qrcode_bt
);
imageView = (ImageView) thi
s.findViewById(R.id.qrcode_iv
);
cb = (
check
Box) thi
s.findViewById(R.id.qrcode_cb
);
button.setOnClickListener(new View
.onClickListener()
{
@Override
public void onClick(
View view)
{
if (cb.i
schecked())
{
Bitmap bitmap = QRCode.createQRCodeWith
logo(editText.getText().to
String(),BitmapFactory.decode
resource(get
resources(),R.drawable.
logo_m
E));
imageView.setImageBitmap(bitma
p);
}else
{
Bitmap bitmap = QRCode.createQRCode(editText.getText().to
String(),500
);
imageView.setImageBitmap(bitma
p);
}
}
}
);
}
上面是简单的实现对二维码的方法和缩小,如果更好的实现,欢迎交流!
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程小技巧。
大佬总结
以上是大佬教程为你收集整理的Android Zxing生成二维码经典案例分享全部内容,希望文章能够帮你解决Android Zxing生成二维码经典案例分享所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。