位置: 编程技术 - 正文

Android实现矩形区域截屏的方法(android 矩阵运算)

编辑:rootadmin

推荐整理分享Android实现矩形区域截屏的方法(android 矩阵运算),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:android自定义椭圆矩形,android 画矩形,android自定义椭圆矩形,android自定义椭圆矩形,androidstudio矩形输入框,androidstudio矩形输入框,android绘制矩形,android绘制矩形,内容如对您有帮助,希望把文章链接给更多的朋友!

对屏幕进行截屏并裁剪有两种方式:早截图和晚截图。早截图,就是先截取全屏,再让用户对截取到的图片进行修改;与之相对的,晚截图,就是先让用户在屏幕上划好区域,再进行截图和裁剪。其实两者并没有什么太大的区别,这篇就说说怎么实现晚截图。

晚截图可以分成三步:

1. 在屏幕上标出截图的矩形区域

2. 调用系统接口截屏

3. 对截图进行裁剪

效果图如下:

第一步、在屏幕上标识出截图区域

首先确定标识截图区域所需要的功能:

1. 手指拖动形成矩形区域;

2. 可以拖动已经划好的矩形区域进行移动;

3. 可以拖动矩形区域的边框调整大小;

4. 选择完成以后,有“确认”和“取消”功能,“确认”时可以获得选取的区域位置。需要注意的是,按钮的位置应该能够自适应,比如选框几乎占据全屏的情况下,应该把按钮放到选框内部。

Android实现矩形区域截屏的方法(android 矩阵运算)

最简单的方式就是写一个自定义View,根据touch的位置执行不同的功能即可。实现很简单,只要细心把每一种状态就行,代码请看Bigbang项目的MarkSizeView类。

第二步、调用系统接口截屏

截屏必须在Activity中进行,因为需要调用startActivityForResult()。不过也可以把mMediaProjectionManager传到service中进行后续处理。

还要注意的是Activity本身在截屏的时候应该是透明的,不能对要截取得内容有影响。

直接看代码:

第三步、对截图进行裁剪

根据第一步得到的截图区域mRect对第二步中得到的截屏结果bitmap进行裁剪:

需要注意的是,在调用系统截屏功能的时候,如果手机有NavigationBar(虚拟导航栏),windowHeight的取值就是不包括NavigationBar的高度的,如果不进行调整,就会导致截屏被压缩。如何获取屏幕的真实高度,可以参考Android如何判断NavigationBar是否显示(获取屏幕真实的高度)。

而且NavigationBar还会导致截屏的结果出现边框,边框的颜色是透明的,原因是第二步代码中的rowPadding!=0,截屏如下图所示:

那么如果我们想要对截图的结果进行保存或者裁剪,就必须要去除边框,找出真正的内容区域,也就是在第一个不透明的像素和最后一个不透明像素之间的内容,然后才能对得到的区域进行第三步的裁剪,代码如下:

处理后的截图如下:

你可能会觉得既然是rowPadding!=0导致出现边框,而且边框只在右边,为什么不直接把右边rowPadding宽度的内容截掉呢?其实是因为如果不调整windowHeight,就会在左边也产生框,所以才用了上面的方法。

完整代码可以参考Bigbang项目的MarkSizeView类、ScreenCaptureActivity类和ScreenCapture类。

sql 删除表中的重复记录 遇见了表中存在重复的记录的问题,直接写sql删除时最快的,才不要慢慢的复制到excel表中慢慢的人工找呢如下sql,找出重复的记录,和重复记录中ID值

SQL SERVER 表与表之间 字段一对多sql语句写法 表AA1A2A3A表BB1B张三李四王五赵六显示结果A1A2A3A4张三李四王五赵六王五赵六张三李四效果图:sql语句如下SELECT(SELECTB2FROMBWHEREB1=A1)ASA1,(

SQL SERVER 分组求和sql语句 需求:如下图所示实现sql语句SELECTA1,SUM(A2*A3)FROMAGROUPBYA1大家可以自行测试一下,主要需要了解groupby语句的用法

标签: android 矩阵运算

本文链接地址:https://www.jiuchutong.com/biancheng/320246.html 转载请保留说明!

上一篇:SQL Server 2005作业设置定时任务(sqlserver数据库作业)

下一篇:sql 删除表中的重复记录(sql删除表中的某一行)

  • 结构性减税政策的定义
  • 公司有流水不申报会怎么样
  • 本月发生费用未支付会计处理
  • 出口退税进项税额转出怎么申报
  • 社保缴费是当月扣当月的吗
  • 小规模没有税控怎么办
  • 生产型企业出口退税计算公式
  • 小规模企业发生了增值税,如何计提附加税
  • 计提存货跌价准备怎么计算
  • 厨房酒店用品
  • 利润表里的所得税怎么算
  • 销售商品提供劳务收到的现金包括
  • 无形资产日常维护支出会计处理
  • 次年度所得税预缴申报期限怎么执行?
  • 申请生育津贴需要提供什么材料
  • 可供分配利润包含哪些
  • 工程款材料费票怎么开?
  • 增值税没达到起征标准
  • 进项税额转出后企业所得税怎么处理?
  • 学校应该缴纳的税
  • 无票费用如何做凭证分录
  • 结余资金财政收回如何做账
  • 企业购买的土地计入无形资产
  • 重点税源财务指标有哪些
  • 企业房租收入如何申报
  • 桌面图标变成了白色的
  • 如何使用windows10自带杀毒
  • windows11咋样
  • 小规模纳税人个税怎么申报
  • 现代服务业包括哪些
  • 虚拟机中怎么安装ubuntu
  • Linux+Nginx+MySQL下配置论坛程序Discuz的基本教程
  • linux zmodem
  • 资金运动包括哪几个方面
  • 公司清算的补偿方案是不是应该公布了
  • 大群的芒基蝠鲼跃出水面,墨西哥加利福尼亚湾 (© Mark Carwardine/Minden Pictures)
  • 外贸企业进料加工复出口退税政策
  • 厂房改造支出可以计入厂房价值吗
  • php异步处理方案
  • 计算机视觉项目文档
  • php执行命令的函数
  • 已收到货款 还未发货的会计处理
  • 已抵扣的发票冲红会计分录
  • 私车公用维修费用谁出
  • 现金流量表的本期数是本月数还是本年数
  • 个体户开票额度超了
  • 固定资产投资额在财务报表中怎么体现
  • sqlserver2016使用方法
  • 计提租金如何做账务处理
  • 退货发票会作废吗
  • 企业变更地址需要几天
  • 本年利润是不是未分配利润
  • 现金流量比率是什么意思
  • 金蝶多核算项目怎么查一个项目下的其他项目
  • 库存商品可以用多栏式吗
  • 如何设置sqlserver数据库用户名密码
  • mysql5.7安装版下载
  • windows2003怎么样
  • 硬盘安装在机箱内,属于主机的组成部分
  • u极速u盘装系统
  • win7如何彻底关闭135端口 dcom
  • 地图是英语如何改为中文
  • xp系统盘空间不足怎么办
  • ubuntu无法下载
  • win7显示
  • win10周年更新版是什么意思
  • 怎么关闭win10升级
  • 怎么恢复电脑win7系统
  • docker如何部署环境到生产
  • js随机生成数
  • vue项目简介
  • js校验姓名
  • Linux bash Shell中的变量类型详解
  • javascript如何
  • python里的lambda怎么用
  • jquery里面的$是什么意思
  • 小规模纳税人可以开增值税专用发票吗
  • 代理记账公司自查自纠情况报告范文
  • 国家税务总局发票下载
  • 税控软件怎么升级到新版本
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设