在好例子网,分享、交流、成长!
您当前所在位置:首页Java 开发实例Android平台开发 → 二维码扫描(仿微信扫描界面)

二维码扫描(仿微信扫描界面)

Android平台开发

下载此实例
  • 开发语言:Java
  • 实例大小:1.29M
  • 下载次数:35
  • 浏览次数:771
  • 发布时间:2016-02-28
  • 实例类别:Android平台开发
  • 发 布 人:nickyhuang2607
  • 文件格式:.zip
  • 所需积分:1
 相关标签: 二维码扫描

实例介绍

【实例简介】简单的扫码Demo

【实例截图】

【核心代码】

@Override
public void onDraw(Canvas canvas) {
if (cameraManager == null) {
return;
}

Rect frame = cameraManager.getFramingRect();
if (frame == null) {
return;
}

int width = canvas.getWidth();
int height = canvas.getHeight();

// 画扫描框外部的暗色背景
// 设置蒙板颜色
paint.setColor(resultBitmap != null ? resultColor : maskColor);
// 头部
canvas.drawRect(0, 0, width, frame.top, paint);
// 左边
canvas.drawRect(0, frame.top, frame.left, frame.bottom, paint);
// 右边
canvas.drawRect(frame.right, frame.top, width, frame.bottom, paint);
// 底部
canvas.drawRect(0, frame.bottom, width, height, paint);

if (resultBitmap != null) {
// 在扫描框中画出预览图
paint.setAlpha(CURRENT_POINT_OPACITY);
canvas.drawBitmap(resultBitmap, null, frame, paint);
} else {
// 画出四个角
paint.setColor(getResources().getColor(R.color.green));
// // 左上角
// canvas.drawRect(frame.left, frame.top, frame.left 15,
// frame.top 5, paint);
// canvas.drawRect(frame.left, frame.top, frame.left 5,
// frame.top 15, paint);
// // 右上角
// canvas.drawRect(frame.right - 15, frame.top, frame.right,
// frame.top 5, paint);
// canvas.drawRect(frame.right - 5, frame.top, frame.right,
// frame.top 15, paint);
// // 左下角
// canvas.drawRect(frame.left, frame.bottom - 5, frame.left 15,
// frame.bottom, paint);
// canvas.drawRect(frame.left, frame.bottom - 15, frame.left 5,
// frame.bottom, paint);
// // 右下角
// canvas.drawRect(frame.right - 15, frame.bottom - 5, frame.right,
// frame.bottom, paint);
// canvas.drawRect(frame.right - 5, frame.bottom - 15, frame.right,
// frame.bottom, paint);

float v_width = (frame.right-frame.left)/15;
float v_height = (frame.right-frame.left)/45;

paint.setColor(getResources().getColor(R.color.green));
// 左上角
canvas.drawRect(frame.left, frame.top, frame.left v_width,
frame.top v_height, paint);
canvas.drawRect(frame.left, frame.top, frame.left v_height, frame.top
v_width, paint);
// 右上角
canvas.drawRect(frame.right - v_width, frame.top, frame.right,
frame.top v_height, paint);
canvas.drawRect(frame.right - v_height, frame.top, frame.right, frame.top
v_width, paint);
// 左下角
canvas.drawRect(frame.left, frame.bottom - v_height, frame.left v_width,
frame.bottom, paint);
canvas.drawRect(frame.left, frame.bottom - v_width, frame.left v_height,
frame.bottom, paint);
// 右下角
canvas.drawRect(frame.right - v_width, frame.bottom - v_height,
frame.right, frame.bottom, paint);
canvas.drawRect(frame.right - v_height, frame.bottom - v_width,
frame.right, frame.bottom, paint);

// 在扫描框中画出模拟扫描的线条
// 设置扫描线条颜色为绿色
paint.setColor(getResources().getColor(R.color.green));
// 设置绿色线条的透明值
paint.setAlpha(SCANNER_ALPHA[scannerAlpha]);
// 透明度变化
scannerAlpha = (scannerAlpha 1) % SCANNER_ALPHA.length;

// 画出固定在中部的线条
// int middle = frame.height() / 2 frame.top;
// canvas.drawRect(frame.left 2, middle - 1, frame.right - 1,
// middle 2, paint);

// 将扫描线修改为上下走的线
if ((i = 5) < frame.bottom - frame.top) {
/* 以下为用渐变线条作为扫描线 */
// 渐变图为矩形
// mDrawable.setShape(GradientDrawable.RECTANGLE);
// 渐变图为线型
// mDrawable.setGradientType(GradientDrawable.LINEAR_GRADIENT);
// 线型矩形的四个圆角半径
// mDrawable
// .setCornerRadii(new float[] { 8, 8, 8, 8, 8, 8, 8, 8 });
// 位置边界
// mRect.set(frame.left 10, frame.top i, frame.right - 10,
// frame.top 1 i);
// 设置渐变图填充边界
// mDrawable.setBounds(mRect);
// 画出渐变线条
// mDrawable.draw(canvas);

/* 以下为图片作为扫描线 */
mRect.set(frame.left - 6, frame.top i - 6, frame.right 6,
frame.top 6 i);
lineDrawable.setBounds(mRect);
lineDrawable.draw(canvas);

// 刷新
invalidate();
} else {
i = 0;
}

// 重复执行扫描框区域绘制(画四个角及扫描线)
postInvalidateDelayed(ANIMATION_DELAY, frame.left, frame.top,
frame.right, frame.bottom);
}
}


标签: 二维码扫描

实例下载地址

二维码扫描(仿微信扫描界面)

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警