Zxing框架进行二维码扫描时候会发现,随着分辨率的增加,扫描框会越来越小,SurfaceView扫描窗口就看不见了,我们可以自己定义扫描窗口的大小,以及适配屏幕问题。

Zxing包中有个类CameraManager,它是来设置扫描框的大小

扫描框框初始化数值

  private static  int MIN_FRAME_WIDTH = 240;
private static int MIN_FRAME_HEIGHT = 240;
private static int MAX_FRAME_WIDTH = 480;
private static int MAX_FRAME_HEIGHT = 360;

此类里面有个getFramingRect方法用来设置扫描的框的大小,如果要修改扫描框的大小可以在这个方法里修改

  public Rect getFramingRect() {
Point screenResolution = configManager.getScreenResolution();
if (framingRect == null) {
if (camera == null) {
return null;
}       MIN_FRAME_WIDTH = Dp2Px(context,180);
      MIN_FRAME_HEIGHT =Dp2Px(context,180);
      MAX_FRAME_WIDTH = Dp2Px(context,280);
      MAX_FRAME_HEIGHT =Dp2Px(context,240); int width = screenResolution.x * 3 / 4;
if (width < MIN_FRAME_WIDTH) {
width = MIN_FRAME_WIDTH;
} else if (width > MAX_FRAME_WIDTH) {
width = MAX_FRAME_WIDTH;
}
int height = screenResolution.y * 3 / 4;
if (height < MIN_FRAME_HEIGHT) {
height = MIN_FRAME_HEIGHT;
}
else if (height > MAX_FRAME_HEIGHT) {
height = MAX_FRAME_HEIGHT;
}
int leftOffset = (screenResolution.x - width) / 2;
int topOffset = (screenResolution.y - height) / 2;
framingRect = new Rect(leftOffset, topOffset, leftOffset + width, topOffset + height);
Log.d(TAG, "Calculated framing rect: " + framingRect);
}
return framingRect;
}

要让扫描框适应不同的分辨率,我们需要根据分辨率将扫描框的初始值转化就好。

MIN_FRAME_WIDTH = Dp2Px(context,180);
      MIN_FRAME_HEIGHT =Dp2Px(context,180) ;
      MAX_FRAME_WIDTH = Dp2Px(context,280);
      MAX_FRAME_HEIGHT =Dp2Px(context,240) ;

dp转为px的方法为

  public static  int Dp2Px( Context context,float dp) {
final float scale = context.getResources().getDisplayMetrics().density;
return (int) (dp * scale + 0.5f);
}

最新文章

  1. java基础知识(一)数据类型(下)
  2. Render OpenCascade Geometry Surfaces in OpenSceneGraph
  3. 第二课 less的学习以及移动端需要注意的问题
  4. Mysql查看版本号的五种方式介绍
  5. 数据交互 ajax 初始化省
  6. Xamarin.Forms介绍
  7. 做中学learning by doing——个人感想20155312张竞予
  8. currentRowChanged 的注意事项
  9. [转] 3个学习Socket编程的简单例子:TCP Server/Client, Select
  10. hdoj 5355 Cake(分析+二分)
  11. apache 反向代理配置(ubuntu)
  12. Scala AOP
  13. [Open Source] RabbitMQ 高可用集群方案
  14. ORACLE中死锁的知识点总结
  15. 为什么要学习Java EE
  16. 使用BigQuery分析GitHub上的C#代码
  17. java后台验证码工具
  18. 怎么过滤 &amp;nbsp;
  19. linux下 vi命令编辑/etc/my.cnf
  20. 时间戳time

热门文章

  1. springboot简易上传下载
  2. 基础python规范
  3. 文件 open 方法
  4. k8s之自定义指标API部署prometheus
  5. hdu 2846 字典树变形
  6. eventFlow 系列 &lt;一&gt; 入门
  7. Javascript中的继承与复用
  8. 使用cublas 矩阵库函数实现矩阵相乘
  9. 最简单的一个win32程序
  10. 弹性盒模型display:flex