位置: 编程技术 - 正文

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删除表中的某一行)

  • 税负率的计算公式举例说明
  • 耕地占用税中的耕地是指什么
  • 实收资本印花税是营业账簿吗
  • 税务检查是什么行政行为
  • 公司给个人分红会计分录
  • 离职补偿金怎么做账
  • 刷卡收手续费吗
  • 资产处置收益对应科目
  • 住宿费电子普票可以抵扣进项税额
  • 企业的成本核算包括
  • 增资款怎么做账
  • 一般纳税人支出的钱没有发票年底怎么处理
  • 纳税申报表多缴了怎么办
  • 制造费用折旧费转入生产成本吗
  • 170平方的房子装修费用
  • 企业营改增后的会计处理有何变化
  • 员工领取产假工资怎么算
  • 公司发给员工的奖金要交税吗
  • 年底增值税专用发票入帐不勾选抵扣帐务处理
  • 维修费增值税怎么开
  • 印花税销售分录
  • 普票和专票的税率分别是多少
  • 注册资本 变更
  • 未弥补完亏损可以计提盈余公积
  • 一般纳税人注销库存需要补交税吗
  • 一般纳税人怎么查询
  • 污水处理服务费用交印花税吗
  • 借老板的现金存入银行怎么做账?
  • c盘满了清理什么
  • macqq怎么查看删除好友
  • php页面之间传值
  • win10怎么设置硬盘为第一启动项
  • 银行对公账户收款码手续费多少
  • auepuc.exe是什么软件
  • kcleaner.exe是什么
  • linux bsub
  • 什么叫非同一控制下
  • 单位未足额缴纳社保可以补交几年
  • 结转本月收入类账户到本年利润
  • 水电费分割单会计分录
  • 统计 α
  • php获取文件内容的方法
  • 离线开票限额怎么办
  • 国税纳税申报表下载
  • 终止经营净利润含义
  • 税务局退还的三种税费
  • 收到稳岗补贴如何入账
  • kafka gui
  • Python中自定义异常
  • mysql中join的用法
  • 个税补缴纳
  • 年金现值和终值的关系
  • 公司注册登记需要多少钱
  • 公司法人的车辆给公司用可以报销费用吗
  • 财务费用减少记借方还是贷方
  • 所得税费用如何计提分录
  • 企业购买二手车计提折旧年限
  • 即期外汇交易有风险吗
  • 收取加盟费的条件
  • 外资企业所得税优惠政策
  • 车船税没有发票可以入账吗
  • 固定资产明细账图片
  • 企业资质证书丢失怎么办
  • sql注入是干嘛的
  • 总结下半年工作计划
  • ubuntu怎么设置开机自启动程序
  • windows没网络是怎么回事
  • 苹果mac系统怎么用
  • linux缓存过大会宕机吗
  • 电脑如何将win10设置为win7
  • javascript数据结构与算法项目计算找零
  • cocos2dx引擎
  • opengl 缓存
  • js判断元素是否显示
  • react基础入门
  • RadioGroup+Fragment实现底部菜单栏
  • 车辆购置税大厅办理流程
  • 税务局追缴社保流程及办理期限
  • 电子口岸无纸化网上签约流程
  • 湖南自然人电子税务局官网
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设