android 二维码扫码变形处理
-
添加依赖(谷歌早期推出的新容器布局)
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
-
修改扫码界面布局
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <FrameLayout android:layout_width="match_parent" android:layout_height="match_parent" android:background="#000"> <!--直接指定 SurfaceView 比例,以解决变形问题--> <android.support.constraint.ConstraintLayout android:layout_width="match_parent" android:layout_height="match_parent"> <FrameLayout android:layout_width="0dp" android:layout_height="0dp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintDimensionRatio="H,9:16" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent"> <SurfaceView android:id="@+id/preview_view" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_gravity="center" /> <com.open.qr_lib.zxing.view.ViewfinderView android:id="@+id/viewfinder_content" android:layout_width="wrap_content" android:layout_height="wrap_content" app:corner_color="@color/corner_color" app:frame_color="@color/viewfinder_frame" app:label_text="二维码/条形码扫描" app:label_text_color="@color/colorAccent" app:laser_color="@color/laser_color" app:mask_color="@color/viewfinder_mask" app:result_color="@color/result_view" app:result_point_color="@color/result_point_color" /> </FrameLayout> </android.support.constraint.ConstraintLayout> <Button android:id="@+id/btn_switch_flash" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="bottom|center_horizontal" android:layout_marginBottom="60dp" android:text="闪光灯" /> <ImageView android:id="@+id/iv_finish" android:layout_width="46dp" android:layout_height="46dp" android:layout_marginLeft="10dp" android:layout_marginTop="36dp" android:padding="10dp" android:src="@drawable/ic_arrow_back_white_24dp" /> </FrameLayout> </LinearLayout>
-
修改完成运行看看
-
不足之处:全面屏可能会上下留白,目前用黑色背景顶上,业务上,一般我们只要扫码不变行,实在不行我们动态指定下比例。