活动和片段之间的用法略有不同。它们都可以用于显示UI。要使用片段,您需要将活动作为其宿主,因为片段必须始终嵌入到活动中。
documentation
:
活动您可以在单个活动中组合多个片段以
构建多窗格UI并在多个活动中重用片段。你
它自己的生命周期,接收自己的输入事件,您可以
在活动运行时添加或删除(有点像“子
片段必须始终嵌入到活动中
而碎片的
生命周期直接受到主机活动生命周期的影响。
你需要阅读
Building a Dynamic UI with Fragments
掌握片段。创建片段的步骤(注意,这不是一条严格的规则):
-
-
-
通过扩展Fragment类创建片段
-
为片段创建UI布局
-
现在是创建二维码部分。您需要确定需要在二维码中显示哪些信息。不要给出二维码中的所有信息,因为你不能将你的所有用户数据公开给全世界。如果您有一个以上的信息字符串,可以使用“;”或任何其他加入文本信息的内容。
要构建二维码图像,首先需要包括
ZXing library
(使用
latest version
):
compile 'com.google.zxing:core:3.3.0'
private Bitmap textToImage(String text, int width, int height) throws WriterException, NullPointerException {
BitMatrix bitMatrix;
try {
bitMatrix = new MultiFormatWriter().encode(text, BarcodeFormat.DATA_MATRIX.QR_CODE,
width, height, null);
} catch (IllegalArgumentException Illegalargumentexception) {
return null;
}
int bitMatrixWidth = bitMatrix.getWidth();
int bitMatrixHeight = bitMatrix.getHeight();
int[] pixels = new int[bitMatrixWidth * bitMatrixHeight];
int colorWhite = 0xFFFFFFFF;
int colorBlack = 0xFF000000;
for (int y = 0; y < bitMatrixHeight; y++) {
int offset = y * bitMatrixWidth;
for (int x = 0; x < bitMatrixWidth; x++) {
pixels[offset + x] = bitMatrix.get(x, y) ? colorBlack : colorWhite;
}
}
Bitmap bitmap = Bitmap.createBitmap(bitMatrixWidth, bitMatrixHeight, Bitmap.Config.ARGB_4444);
bitmap.setPixels(pixels, 0, width, 0, 0, bitMatrixWidth, bitMatrixHeight);
return bitmap;
}
然后,您可以使用它将生成的图像设置为片段中的ImageView,如下所示:
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.your_fragment_layout, container, false);
ImageView imvQrCode = (ImageView) view.findViewById(R.id.your_image_view);
Bitmap bitmap = textToImage("your_text_info", 500, 500);
imageView.setImageBitmap(bitmap);
return view;
}