2024-09-01
Android/Java
00

目录

一、需求
二、创建android stdio工程
三、设置好JDK
四、创建activity
五、编写activity_main.xml布局
六、build.gradle增加zxing依赖
七、MainActivity

一、需求

一个界面,界面上一个文本输入框、一个按钮、一个二维码显示view。可在文本输入框输入字符串,点击按钮后,生成二维码。

二、创建android stdio工程

在这里插入图片描述

在这里插入图片描述

三、设置好JDK

在这里插入图片描述

在这里插入图片描述

我开始使用JDK 11:

在这里插入图片描述

四、创建activity

在这里插入图片描述

得到:

在这里插入图片描述

五、编写activity_main.xml布局

xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".MainActivity"> <EditText android:id="@+id/editText" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="50dp" android:hint="请输入要生成二维码的字符串" /> <Button android:id="@+id/button" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="生成二维码" /> <ImageView android:id="@+id/imageView" android:layout_width="match_parent" android:layout_height="match_parent" /> </LinearLayout>

六、build.gradle增加zxing依赖

在这里插入图片描述

七、MainActivity

java
package com.example.gen_qr_code; import androidx.appcompat.app.AppCompatActivity; import android.graphics.Bitmap; import android.os.Bundle; import android.text.TextUtils; import android.view.View; import android.widget.EditText; import android.widget.ImageView; import com.google.zxing.BarcodeFormat; import com.google.zxing.WriterException; import com.google.zxing.common.BitMatrix; import com.google.zxing.qrcode.QRCodeWriter; import java.nio.charset.StandardCharsets; public class MainActivity extends AppCompatActivity { private EditText editText; private ImageView imageView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); editText = findViewById(R.id.editText); imageView = findViewById(R.id.imageView); findViewById(R.id.button).setOnClickListener(v -> { String text = editText.getText().toString(); byte[] utf8Bytes = text.getBytes(StandardCharsets.UTF_8); String utf8BytesString = new String(utf8Bytes, StandardCharsets.UTF_8); if (!TextUtils.isEmpty(utf8BytesString)) { Bitmap qrCode = null; try { qrCode = createQRCode(utf8BytesString); } catch (WriterException e) { throw new RuntimeException(e); } imageView.setImageBitmap(qrCode); } }); } private Bitmap createQRCode(String text) throws WriterException { QRCodeWriter qrCodeWriter = new QRCodeWriter(); BitMatrix bitMatrix = qrCodeWriter.encode(text, BarcodeFormat.QR_CODE, 300, 300); Bitmap bitmap = Bitmap.createBitmap(300, 300, Bitmap.Config.RGB_565); for (int x = 0; x < 300; x++) { for (int y = 0; y < 300; y++) { bitmap.setPixel(x, y, bitMatrix.get(x, y) ? getResources().getColor(R.color.black) : getResources().getColor(R.color.white)); } } return bitmap; } }

八、github

https://github.com/xddun/generate_qrcode

如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:Dong

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC。本作品采用《知识共享署名-非商业性使用 4.0 国际许可协议》进行许可。您可以在非商业用途下自由转载和修改,但必须注明出处并提供原作者链接。 许可协议。转载请注明出处!