默认二维码和自定义二维码以及生成二维码
2018-01-29 23:38
344 查看
首先导入ZXing库
自定义二维码布局<FrameLayout android:id="@+id/fl_zxing_container" android:layout_width="match_parent" android:layout_height="match_parent"/> <LinearLayout android:layout_alignParentBottom="true" android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="wrap_content"> <LinearLayout android:id="@+id/flash_light" android:gravity="center_horizontal" android:orientation="vertical" android:layout_width="wrap_content" android:layout_height="wrap_content"> <ImageView android:src="@mipmap/ic_launcher" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:textColor="#ffffff" android:text="闪关灯" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout> <LinearLayout android:id="@+id/pic_scan" android:gravity="center_horizontal" android:orientation="vertical" android:layout_width="wrap_content" android:layout_height="wrap_content"> <ImageView android:src="@mipmap/ic_launcher" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:text="相册" android:textColor="#ffffff" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout> </LinearLayout> 自定义取景框 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" xmlns:app="http://schemas.android.com/apk/res-auto"> <SurfaceView android:id="@+id/preview_view" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <!--取景框--> <com.dash.zxinglibrary.view.ViewfinderView android:id="@+id/viewfinder_view" android:layout_width="wrap_content" android:layout_height="wrap_content" app:inner_corner_color="#ff0000" app:inner_corner_length="30dp" app:inner_corner_width="5dp" app:inner_height="200dp" app:inner_margintop="150dp" app:inner_scan_bitmap="@drawable/scan_image" app:inner_scan_iscircle="true" app:inner_scan_speed="10" app:inner_width="200dp"/> </FrameLayout>
生成二维码的布局
<EditText android:id="@+id/edit_text" android:layout_width="match_parent" android:layout_height="wrap_content" /> <Button android:onClick="normal" android:text="生成默认的" android:layout_width="match_parent" android:layout_height="wrap_content" /> <Button android:onClick="logo" android:text="生成logo" android:layout_width="match_parent" android:layout_height="wrap_content" /> <ImageView android:id="@+id/image_view" android:layout_width="wrap_content" android:layout_height="wrap_content" />
自定义二维码Activity
private LinearLayout flash_light; private boolean flag = false; private LinearLayout pic_scan; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_custom_capatrue); flash_light = findViewById(R.id.flash_light); pic_scan = findViewById(R.id.pic_scan); //ZXing里面的 CaptureFragment captureFragment = new CaptureFragment(); //设置自定义的...扫描布局 //给扫描的fragment定制一个页面 CodeUtils.setFragmentArgs(captureFragment,R.layout.my_camera); //设置一个解析的监听回调 captureFragment.setAnalyzeCallback(analyzeCallback); //使用扫描的fragment替换这个frameLayout getSupportFragmentManager().beginTransaction().replace(R.id.fl_zxing_container,captureFragment).commit(); //闪关灯点击事件 flash_light.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if (flag){ CodeUtils.isLightEnable(false); flag = false; }else { CodeUtils.isLightEnable(true); flag = true; } } }); //相册的点击事件 pic_scan.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { //隐式意图 Intent intent = new Intent(); intent.setAction(Intent.ACTION_PICK); intent.setType("image/*"); startActivityForResult(intent,1002); } }); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == 1002){ //uri路径......需要把uri路径转换为绝对路径!!!!!!!!!!!!!!!!!!!file...new file(绝对路径) Uri uri = data.getData(); //解析图片的方法...ImageUtil.getImageAbsolutePath(this, uri)通过uri路径得到图片在手机中的绝对路径 CodeUtils.analyzeBitmap(ImageUtil.getImageAbsolutePath(this, uri), new CodeUtils.AnalyzeCallback() { @Override public void onAnalyzeSuccess(Bitmap mBitmap, String result) { //Bitmap mBitmap 解析的那张图片, String result解析的结果 Toast.makeText(CustomCapatrueActivity.this,"解析结果:"+result,Toast.LENGTH_SHORT).show(); } @Override public void onAnalyzeFailed() { Toast.makeText(CustomCapatrueActivity.this,"解析二维码失败",Toast.LENGTH_SHORT).show(); } }); } } /** * 二维码解析回调函数 */ CodeUtils.AnalyzeCallback analyzeCallback = new CodeUtils.AnalyzeCallback() { @Override public void onAnalyzeSuccess(Bitmap mBitmap, String result) { Intent resultIntent = new Intent(); Bundle bundle = new Bundle(); bundle.putInt(CodeUtils.RESULT_TYPE,CodeUtils.RESULT_SUCCESS); bundle.putString(CodeUtils.RESULT_STRING,result); resultIntent.putExtras(bundle); setResult(RESULT_OK, resultIntent); finish(); } @Override public void onAnalyzeFailed() { Intent resultIntent = new Intent(); Bundle bundle = new Bundle(); bundle.putInt(CodeUtils.RESULT_TYPE, CodeUtils.RESULT_FAILED); bundle.putString(CodeUtils.RESULT_STRING, ""); resultIntent.putExtras(bundle); setResult(RESULT_OK, resultIntent); finish(); } };
生成二维码Activity
private EditText editText; private ImageView imageView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_generate); editText = findViewById(R.id.edit_text); imageView = findViewById(R.id.image_view); } public void normal(View view) { String s = editText.getText().toString(); //可以判断一下非空 if (s != null) { Bitmap bitmap = CodeUtils.createImage(s, 500, 500, null); imageView.setImageBitmap(bitmap); } } public void logo(View view) { String s = editText.getText().toString(); //可以判断一下非空 if (s != null) { //如何把资源目录下的图片转成bitmap Bitmap logo = BitmapFactory.decodeResource(getResources(),R.mipmap.ic_launcher); Bitmap bitmap = CodeUtils.createImage(s,500,500,logo); imageView.setImageBitmap(bitmap); } }
初始化Application
public class MyApplication extends Application{ @Override public void onCreate() { super.onCreate(); //初始化zxing ZXingLibrary.initDisplayOpinion(this); } }
在主体Activity调用各项二维码
private final int REQUFST_CODE = 101; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void normalScan(View view) { //调用默认界面扫描二维码。。。字符串 Intent intent = new Intent(MainActivity.this, CaptureActivity.class); startActivityForResult(intent,REQUFST_CODE); } @Override //请求码 //结果码 protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == REQUFST_CODE){ //处理扫描结果(在界面上显示) if(null != data){ //拿到传递回来的数据 Bundle bundle = data.getExtras(); if (bundle == null){ return; } if (bundle.getInt(CodeUtils.RESULT_TYPE) == CodeUtils.RESULT_SUCCESS){ //解析得到的结果 String result = bundle.getString(CodeUtils.RESULT_STRING); Toast.makeText(this,"解析结果:"+result,Toast.LENGTH_SHORT).show(); }else if (bundle.getInt(CodeUtils.RESULT_TYPE) == CodeUtils.RESULT_FAILED){ Toast.makeText(this,"解析二维码失败",Toast.LENGTH_SHORT).show(); } } } } /** * 自定义扫描界面 * @param view */ public void customScan(View view) { //调用默认界面扫描二维码。。。字符串 Intent intent = new Intent(MainActivity.this, CustomCapatrueActivity.class); startActivityForResult(intent,REQUFST_CODE); } public void generate(View view) { Intent intent = new Intent(MainActivity.this,GenerateActivity.class); startActivity(intent); }
相关文章推荐
- Andriod Studio debug.keystore(默认)和如何生成自定义的keystore 以及如何生成数字签名
- iOS 二维码的生成,以及自定义弹框Alert,使用及demo
- Andriod Studio debug.keystore(默认)和如何生成自定义的keystore 以及如何生成数字签名
- Andriod Studio debug.keystore(默认)和如何生成自定义的keystore 以及如何生成数字签名
- iOS 简单易用的二维码扫描及生成二维码三方控件LFQRCode,可灵活自定义UI
- 【Android Studio】 默认keystore 以及自定义keystore
- C++生成AI以及AI默认Animation,AI播放Montage,AIController控制移动的实现
- ASP+FSO生成的网页文件默认编码格式以及转换成UTF-8编码方法
- java代码生成二维码以及解析二维码
- 二维码的生成(可设置大小)以及插件下载地址
- 二维码的扫描以及生成
- android 相机的扫码以及生成二维码
- Android之自定义生成彩色二维码
- 二维码的生成(可设置大小)以及插件下载地址
- QRCode-使用Java生成以及解析二维码
- struts2中怎么覆盖默认错误信息以及两种自定义类型转换器的方法
- 使用Zxing生成二维码,以及保存到sdcard,图片变黑的问题
- 自定义动态生成页面打印以及打印预览的一个实现例子
- 使用CIFilter生成二维码并自定义
- Android之ZXing扫描二维码以及生成二维码