实现android端的类似二维码的扫描窗口(中间亮,四周暗,扫描线循环)
来源:互联网 发布:软通动力java试题2016 编辑:程序博客网 时间:2024/05/16 19:11
实现android端的类似二维码的扫描窗口(中间亮,四周暗,扫描线循环),效果图:
要实现android端的类似二维码的扫描窗口(中间亮,四周暗,扫描线循环)
主要用到paint类,drawRect()以及drawLine()函数,参数分别是左上点x,左下点y,右上点x,右下点y,画布paint
drawRect(float left, float top, float right, float bottom, Paint paint)drawLine(float startX, float startY, float stopX, float stopY, Paint paint)
主要流程是:首先,新建一个类继承于ImageView类,重写onDraw函数。
使用用法:在你需要的.xml布局文件添加上该类
例如: 新建的扫描窗口类为cameraWindows,在activity_camera.xml上添加该类:
<com.hongh.camera.cameraWindows
android:scaleType="fitXY"
android:adjustViewBounds="true"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
部分核心代码:
//设置三个Paint画布,分别用于画阴影矩形,蓝色矩形(四个角),蓝色直线(扫描线)</span>
private Paint mAreaPaint,paint,paint2;
mAreaPaint = new Paint(Paint.ANTI_ALIAS_FLAG); paint = new Paint();
paint2 = new Paint();
mAreaPaint.setColor(Color.BLACK); mAreaPaint.setStyle(Paint.Style.FILL); mAreaPaint.setAlpha(110);//设置画布为蓝色,用于设置扫描窗口边缘的四个角 paint.setColor(Color.BLUE); paint.setStyle(Paint.Style.STROKE); paint.setStrokeWidth(7f);//设置画布为蓝色,用于设置扫描线 paint2.setColor(Color.BLUE); paint2.setStrokeWidth(2f);
<p><span style="font-size: 18px;"> //参数分别是左上点x,左下点y,右上点x,右下点y,画布paint</span></p><span style="font-size: 18px;"> //drawRect(float left, float top, float right, float bottom, Paint paint)</span> /***画阴影部分的矩形框****/ canvas.drawRect(0,0,screenWidth,(screenHeight - Y)/2,mAreaPaint); canvas.drawRect(0,(screenHeight - Y)/2,(screenWidth-X)/2,screenHeight,mAreaPaint); canvas.drawRect((screenWidth-X)/2+X,(screenHeight - Y)/2,screenWidth,screenHeight,mAreaPaint); canvas.drawRect((screenWidth-X)/2,(screenHeight - Y)/2+Y,(screenWidth-X)/2+X,screenHeight,mAreaPaint); /***四个角***/ canvas.drawLine((screenWidth-X)/2,(screenHeight - Y)/2,(screenWidth-X)/2+XX,(screenHeight - Y)/2,paint); canvas.drawLine((screenWidth-X)/2,(screenHeight - Y)/2,(screenWidth-X)/2,(screenHeight - Y)/2+XX,paint); canvas.drawLine((screenWidth-X)/2+X-XX,(screenHeight - Y)/2,(screenWidth-X)/2+X,(screenHeight - Y)/2,paint); canvas.drawLine((screenWidth-X)/2+X,(screenHeight - Y)/2,(screenWidth-X)/2+X,(screenHeight - Y)/2+XX,paint); canvas.drawLine((screenWidth-X)/2,(screenHeight - Y)/2+Y-XX,(screenWidth-X)/2,(screenHeight - Y)/2+Y,paint); canvas.drawLine((screenWidth-X)/2,(screenHeight - Y)/2+Y,(screenWidth-X)/2+XX,(screenHeight - Y)/2+Y,paint); canvas.drawLine((screenWidth-X)/2+X,(screenHeight - Y)/2+Y-XX,(screenWidth-X)/2+X,(screenHeight - Y)/2+Y,paint); canvas.drawLine((screenWidth-X)/2+X-XX,(screenHeight - Y)/2+Y,(screenWidth-X)/2+X,(screenHeight - Y)/2+Y,paint); /*******扫描线*********/ if(count >Y-20) count = 0; canvas.drawLine((screenWidth-X)/2+20,(screenHeight - Y)/2+10+count,(screenWidth-X)/2+X-20,(screenHeight - Y)/2+10+count,paint2); count+=2; invalidate(); //刷新canvas,目的是更新扫描线
源码下载:
http://download.csdn.net/detail/chenmohousuiyue/9643338
0 0
- 实现android端的类似二维码的扫描窗口(中间亮,四周暗,扫描线循环)
- android二维码的扫描
- android 二维码的简单扫描的实现
- Android实现二维码的生成和扫描
- Android实现二维码的生成和扫描
- Android ZXing(二维码扫描)必须远距离扫描的解决方案
- Android实现二维码扫描
- android 二维码 helloworld (二维码的生成与扫描)
- 【Android】Android实现扫描、生成二维码的功能
- Android 二维码扫描怎样实现第二次(重复)扫描
- Android项目phonegap实现barcodescanner 二维码扫描的例子
- Android 使用Zxing实现二维码的生成,扫描
- Android 使用Zxing实现二维码的生成,扫描
- Android 使用Zxing实现二维码的生成,扫描
- Android开发之利用ZXing库实现二维码的扫描
- Android 基于Zxing二维码扫描的光速实现
- Android 使用Zxing实现二维码的生成,扫描
- 二维码的扫描
- 深度学习BP算法 BackPropagation以及详细例子解析
- oracle中常用到的一些函数
- SQL那些事儿(四)--oracle创建表空间、用户创建
- Python中try,except,else,finally用法
- 菜单UI点击隐藏与显示(滑动)
- 实现android端的类似二维码的扫描窗口(中间亮,四周暗,扫描线循环)
- HDU Problem 2571 命运【基础dp】
- IDEA 快速入门
- 【复习代码】双向链表
- 16.git使用总结
- 《Asp.Net Web Api 》-----路由机制
- 深度学习BP算法 BackPropagation
- 二叉树插入算法的非递归版本
- Shader学习笔记2