/************************** 正方形笼罩层(调用相机用) ***************************/
public class myViewfinderView extends View {private Paint mPaint1;private Paint mPaint2;private Bitmap maskBM;private Bitmap recBM;private int mScreenWidth;   // 屏幕的宽private int mScreenHeight; //屏幕的高private Bitmap mSrcRect;private Bitmap mDstRect;public myViewfinderView(Context context){this(context,null);}public myViewfinderView(Context context,AttributeSet attrs){super(context,attrs);ViewGroup.LayoutParams layoutParams=new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.MATCH_PARENT);setLayoutParams(layoutParams);if (mScreenWidth==0){DisplayMetrics dm=getResources().getDisplayMetrics();mScreenHeight=dm.heightPixels;mScreenWidth=dm.widthPixels;  } }private Bitmap makeSrcRect(){maskBM=Bitmap.createBitmap(mScreenWidth,mScreenHeight,Bitmap.Config.ARGB_8888);Canvas mCanvas=new Canvas(maskBM);mPaint1=new Paint(Paint.ANTI_ALIAS_FLAG);mPaint1.setColor(Color.BLACK);mCanvas.drawRect(new RectF(0,0,mScreenWidth,mScreenHeight), mPaint1);return  maskBM; }private Bitmap makeDstRct(){recBM=Bitmap.createBitmap(mScreenWidth,mScreenHeight,Bitmap.Config.ARGB_8888);Canvas mCanvas2=new Canvas(recBM);mPaint2=new Paint(Paint.ANTI_ALIAS_FLAG);mPaint2.setColor(Color.WHITE);mCanvas2.drawRect(new RectF(mScreenWidth/4,mScreenHeight/4,mScreenWidth/4*3,mScreenHeight/4+mScreenWidth/2),mPaint2);protected void onDraw(Canvas canvas){mSrcRect=makeSrcRect();mDstRect=makeDstRct();Paint paint=new Paint();paint.setFilterBitmap(false);canvas.saveLayer(0, 0,mScreenWidth,mScreenHeight,null,Canvas.ALL_SAVE_FLAG);canvas.drawBitmap(mDstRect,0,0,paint);paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_OUT));paint.setAlpha(160);canvas.drawBitmap(mSrcRect, 0, 0,paint);paint.setXfermode(null);canvas.saveLayer(0,0,mScreenWidth,mScreenHeight,null,Canvas.ALL_SAVE_FLAG );paint.setAlpha(255);}}

效果待补,可参照各app扫一扫二维码上的笼罩层,实际没用上所以没有优化,距离边框上可能有一定的问题,仅供思路参考。
使用方法是直接在界面布局上引用,因为这是一个自定义的View

Android 画面自定义正方形笼罩层相关推荐

  1. android 自定义正方形 绕中心点旋转

    android 自定义正方形 绕中心点旋转 这篇文章主要介绍rotateAnimation 的部分属性含义及使用,讲得比较简单一点 运行结果如下:      定义正方形view参见:http://bl ...

  2. Android中自定义视图View

    标签: 前言 好长时间没写blog了,心里感觉有点空荡荡的,今天有时间就来写一个关于自定义视图的的blog吧.关于这篇blog,网上已经有很多案例了,其实没什么难度的.但是我们在开发的过程中有时候会用 ...

  3. Android中自定义视图View之---前奏篇

    前言 好长时间没写blog了,心里感觉有点空荡荡的,今天有时间就来写一个关于自定义视图的的blog吧.关于这篇blog,网上已经有很多案例了,其实没什么难度的.但是我们在开发的过程中有时候会用到一些自 ...

  4. 在Ubuntu上为Android系统的Application Frameworks层增加硬件访问服务(老罗学习笔记5)...

    在数字科技日新月异的今天,软件和硬件的完美结合,造就了智能移动设备的流行.今天大家对iOS和Android系统的趋之若鹜,一定程度上是由于这两个系统上有着丰富多彩的各种应用软件.因此,软件和硬件的关系 ...

  5. android企业自定义桌面

    android企业自定义专业桌面 替换掉android设备的桌面系统 功能说明 替换掉android设备的桌面系统 有些工业和企业使用的android设备希望替换掉原有桌面系统,使用自己开发的定制桌面 ...

  6. C#实现Winform自定义半透明遮罩层

    在网页中通过div+css实现半透明效果不难,今天我们看看一种在winfrom中实现的方法: 效果图如下,正常时: 显示遮罩层时: 自定义遮罩层控件的源码如下: View Code using Sys ...

  7. Android ListView 自定义背景后 滚动时的背景变黑问题

    ListView是常用的显示控件,默认背景是和系统窗口一样的透明色,如果给ListView加上背景图片,或者背景颜色时,滚动时listView会黑掉,原因是,滚动时,列表里面的view重绘时,用的依旧 ...

  8. android 实现自定义监听接口,Android在自定义类中实现自定义监听器方式

    Android在自定义类中实现自定义监听器方式 发布时间:2020-08-31 06:19:39 来源:脚本之家 阅读:203 作者:Simon_Qi 监听器可以说是Android开发中最常用的东西之 ...

  9. android sqlite自定义函数,Android中自定义一个View的方法详解

    本文实例讲述了Android中自定义一个View的方法.分享给大家供大家参考,具体如下: Android中自定义View的实现比较简单,无非就是继承父类,然后重载方法,即便如此,在实际编码中难免会遇到 ...

最新文章

  1. enumerate在python中的意思_Python中enumerate用法详解
  2. vb 搜索指定目录下的指定类型文件
  3. 虚拟机非法关机不能重启了
  4. 添加Graphic Drivers PPA
  5. win7任务栏计算机图标,Win7系统任务栏怎么添加显示桌面图标 显示桌面图标如何放到win7任务栏...
  6. 通过项目逐步深入了解Mybatis二
  7. SAP UI5 Logon Handler of Frame
  8. 不服OceanBase跑分?今天起可到阿里云上一战
  9. 公司行政的未来在哪里?要不要转行?
  10. Day_2_Python_str_list_dict的使用
  11. Linux软件安装到指定目录方法
  12. 至强E5系列CPU后面的数字含义
  13. 第1课:郭盛华课程_零基础学Linux操作系统
  14. Phython学习—— 基础语法
  15. 基于jquery fly插件实现加入购物车抛物线动画效果
  16. 6.2_[Java 数组]-利用二重循环打印各种图形
  17. Python爬取天气数据及可视化分析(附源码)
  18. Flex框架-甘特图开发
  19. 通过自定义csl文件解决Mendeley使用GB/T 7714-2005时出现“等”而不是et al的问题
  20. 人工智能时代的幼儿教育软件

热门文章

  1. iphone11 sim卡故障_iPhone11.3更新后如何解决手机卡顿问题?
  2. 设计题目:基于CPLD/FPGA的出租车计费器
  3. 【网页实战】html+css+js超简易书籍购买网站实现(FindMyBook)
  4. 凤凰OS卡在x86_64的解决办法
  5. 任意进制数之间的转换
  6. 出现ClassNotFoundException问题
  7. dm-crypt——多功能 Linux 磁盘加密工具
  8. 一台服务器上如何创建多个网站
  9. mac环境下安装drozer
  10. matlab—多行注释