实现扫描布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="30dp"
android:id="@+id/sao_txt"
android:textSize="24sp"
android:text="扫码及结果"/>
<cn.bingoogolapple.qrcode.zxing.ZXingView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/z_xing"></cn.bingoogolapple.qrcode.zxing.ZXingView>
</LinearLayout>
扫描实现类
public class SaoFragment extends Fragment { private View view; /** * 扫码及结果 */ private TextView mSaoTxt; private ZXingView mZXing; @Nullable @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { view = inflater.inflate(R.layout.fragment_sao, container, false); initView(view); return view; } @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); //开启相机 mZXing.startCamera(); mZXing.startSpot(); //展示 mZXing.showScanRect(); mZXing.setDelegate(new QRCodeView.Delegate() { @Override public void onScanQRCodeSuccess(String result) { mSaoTxt.setText("扫码结果" + result); } @Override public void onCameraAmbientBrightnessChanged(boolean isDark) { } @Override public void onScanQRCodeOpenCameraError() { } }); } @Override public void onStop() { super.onStop(); mZXing.startSpot(); mZXing.startCamera(); } private void initView(View view) { mSaoTxt = (TextView) view.findViewById(R.id.sao_txt); mZXing = (ZXingView) view.findViewById(R.id.z_xing); } }
带有Logo图标的布局
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="生成带有Logo的二维码" android:textSize="24sp" android:id="@+id/btn_logo"/> <ImageView android:layout_width="150dp" android:layout_height="150dp" android:id="@+id/img_icon" android:src="@drawable/a"/> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/ed_txt" android:textSize="24sp"/> <ImageView android:layout_width="150dp" android:layout_height="150dp" android:id="@+id/img_icons" android:src="@drawable/tt" /> <Button android:id="@+id/btn_logos" android:text="生成二维码" android:layout_gravity="center" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <Button android:id="@+id/tuichu" android:text="退出登录" android:layout_gravity="center" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout>
带有Logo的实现类
public class LogoFragment extends Fragment implements QRCodeView.Delegate,View.OnClickListener { private View view; /** * 生成带有Logo的二维码 */ private Button mBtnLogo; private ImageView mImgIcon; private EditText mEdTxt; private ImageView mImgIcons; /** * 生成二维码 */ private Button mBtnLogos; /** * 退出登录 */ private Button mTuichu; @Nullable @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { view = inflater.inflate(R.layout.fragment_logo, container, false); initView(view); return view; } @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); } private void initView(View view) { mBtnLogo = (Button) view.findViewById(R.id.btn_logo); mBtnLogo.setOnClickListener(this); mImgIcon = (ImageView) view.findViewById(R.id.img_icon); mEdTxt = (EditText) view.findViewById(R.id.ed_txt); mImgIcons = (ImageView) view.findViewById(R.id.img_icons); mBtnLogos = (Button) view.findViewById(R.id.btn_logos); mBtnLogos.setOnClickListener(this); mTuichu = (Button) view.findViewById(R.id.tuichu); mTuichu.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.btn_logo: new AsyncTask<String,Void,Bitmap>(){ @Override protected Bitmap doInBackground(String... strings) { Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.a); return QRCodeEncoder.syncEncodeQRCode("优秀",200,Color.GRAY,bitmap); } @Override protected void onPostExecute(Bitmap bitmap) { super.onPostExecute(bitmap); if (bitmap != null){ mImgIcon.setImageBitmap(bitmap); }else { Toast.makeText(getActivity(), "解析失败", Toast.LENGTH_SHORT).show(); } } }.execute(); break; case R.id.btn_logos: final String trim = mEdTxt.getText().toString().trim(); new AsyncTask<Void,Void,Bitmap>(){ @Override protected Bitmap doInBackground(Void... voids) { Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.tt); return QRCodeEncoder.syncEncodeQRCode(trim,BGAQRCodeUtil.dp2px(getContext(),200),Color.GREEN,bitmap); } @Override protected void onPostExecute(Bitmap bitmap) { super.onPostExecute(bitmap); if (bitmap != null){ mImgIcons.setImageBitmap(bitmap); }else { Toast.makeText(getActivity(), "解析失败", Toast.LENGTH_SHORT).show(); } } }.execute(); break; case R.id.tuichu: startActivity(new Intent(getActivity(),MainActivity.class)); getActivity().finish(); break; } } @Override public void onScanQRCodeSuccess(String result) { } @Override public void onCameraAmbientBrightnessChanged(boolean isDark) { } @Override public void onScanQRCodeOpenCameraError() { } }