ViewfinderView

July 7, 2025 · View on GitHub

MavenCentral JitPack CI Download API License

ViewfinderView 是一个取景视图:主要用于渲染扫描相关的动画效果。其样式主要分为两大类:classic:经典样式(带扫描框)、popular:流行样式(不带扫描框);可任意定制。

如果你之前有使用过 ZXingLiteMLKit,可能会用到其内部的 ViewfinderView。现已将 ViewfinderView 独立出来,便于后续统一维护。

目前ZXingLiteMLKitWeChatQRCode 都已使用了此 ViewfinderView 作为通用的扫描渲染视图。

效果展示

Image

你也可以直接下载 演示App 体验效果

引入

Gradle:

  1. 在Project的 build.gradlesetting.gradle 中添加远程仓库

    repositories {
        //...
        mavenCentral()
    }
    
  2. 在Module的 build.gradle 中添加依赖项

    implementation 'com.github.jenly1314:viewfinderview:1.4.0'
    
    

使用

ViewfinderView属性说明

属性属性类型默认值属性说明
vvViewfinderStyleenumclassic取景框样式;支持classic:经典样式(带扫描框)、popular:流行样式(不带扫描框)
vvMaskColorcolor#60000000扫描区外遮罩的颜色
vvFrameColorcolor#7F1FB3E2扫描框边框的颜色
vvFrameWidthdimension扫描框宽度
vvFrameHeightdimension扫描框高度
vvFrameRatiofloat0.625f扫描框与屏幕占比,当未设置扫描框的宽高时,使用占比来计算宽高
vvFrameLineStrokeWidthdimension1dp边框线宽度
vvFramePaddingLeftdimension0扫描框左边的内间距
vvFramePaddingTopdimension0扫描框上边的内间距
vvFramePaddingRightdimension0扫描框右边的内间距
vvFramePaddingBottomdimension0扫描框下边的内间距
vvFrameGravityenumcenter扫描框对齐方式
vvFrameCornerColorcolor#FF1FB3E2扫描框边角的颜色
vvFrameCornerSizedimension16dp扫描框边角的大小
vvFrameCornerStrokeWidthdimension4dp扫描框边角的描边宽度
vvFrameCornerRadiusdimension0dp扫描框圆角半径
vvFrameDrawablereference扫描框自定义图片
vvLaserLineHeightdimension5dp激光扫描线高度
vvLaserMovementSpeeddimension2dp激光扫描线的移动速度
vvLaserAnimationIntervalinteger20扫描动画延迟间隔时间,单位:毫秒
vvLaserGridColumninteger20网格激光扫描列数
vvLaserGridHeightdimension40dp网格激光扫描高度,为0dp时,表示动态铺满
vvLaserGridStrokeWidthdimension1dp网格线条的宽
vvLaserColorcolor#FF1FB3E2扫描区激光线的颜色
vvLaserStyleenumline激光扫描的样式
vvLaserDrawablereference激光扫描线自定义图片
vvLaserDrawableRatiofloat0.625f激光扫描图片与屏幕占比
vvLabelTextstring扫描提示文本信息
vvLabelTextColorcolor#FFC0C0C0提示文本字体颜色
vvLabelTextSizedimension14sp提示文本字体大小
vvLabelTextPaddingdimension24dp提示文本距离扫描框的间距
vvLabelTextWidthdimension提示文本的宽度,默认为View的宽度
vvLabelTextLocationenumbottom提示文本显示位置
vvPointColorcolor#FF1FB3E2结果点的颜色
vvPointStrokeColorcolor#FFFFFFFF结果点描边的颜色
vvPointRadiusdimension15dp结果点的半径
vvPointStrokeRatiofloat1.2结果点描边半径与结果点半径的比例
vvPointDrawablereference结果点自定义图片
vvPointAnimationbooleantrue是否显示结果点的动画
vvPointAnimationIntervalinteger3000结果点动画间隔时长;单位:毫秒
vvFullRefreshbooleanfalse是否完全刷新;适用于vvViewfinderStyleclassic经典样式(带扫描框)时

ViewfinderView相关的自定义属性统一使用 vv 开头。

示例

布局示例

ViewfinderView 相关的自定义属性可查看上面的 ViewfinderView属性说明

 <com.king.view.viewfinderview.ViewfinderView
     android:id="@+id/viewfinderView"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     app:vvLaserStyle="line" />

更多使用详情,请查看app中的源码使用示例或直接查看 API帮助文档

相关推荐

  • ZXingLite 基于zxing实现的扫码库,优化扫码和生成二维码/条形码功能。
  • MLKit 一个强大易用的工具包。通过ML Kit您可以很轻松的实现文字识别、条码识别、图像标记、人脸检测、对象检测等功能。
  • WeChatQRCode 基于OpenCV开源的微信二维码引擎移植的扫码识别库。
  • CameraScan 一个简化扫描识别流程的通用基础库。
  • LibYuv 基于Google的libyuv编译封装的YUV转换工具库,主要用途是在各种YUV与RGB之间进行相互转换、裁减、旋转、缩放、镜像等。

版本日志

v1.4.0:2025-7-7

  • 迁移发布至 Central Portal 相关公告
  • 更新Gradle至v8.5
  • 优化一些细节

查看更多版本日志


footer