Android关闭硬件加速对PorterDuffXfermode的影响

Android关闭硬件加速对PorterDuffXfermode的影响

 

跑的版本minSdk=33

编译SDK=34

import android.content.Context
import android.graphics.Bitmap
import android.graphics.Canvas
import android.graphics.Color
import android.graphics.Paint
import android.graphics.PorterDuff
import android.graphics.PorterDuffXfermode
import android.util.AttributeSet
import androidx.appcompat.widget.AppCompatImageViewclass MyView : AppCompatImageView {private var mBmp: Bitmap? = nullprivate val H = 400fprivate val W = 400fprivate var closeGPU = false //true 关闭硬件加速。constructor(ctx: Context, attrs: AttributeSet) : super(ctx, attrs) {if (closeGPU) {setLayerType(LAYER_TYPE_SOFTWARE, null)}mBmp = Bitmap.createBitmap(W.toInt(), H.toInt(), Bitmap.Config.ARGB_8888)setImageBitmap(mBmp)}override fun onDraw(canvas: Canvas) {super.onDraw(canvas)val paint = Paint()circleTarget(canvas, paint)rectSource(canvas, paint)}private fun circleTarget(c: Canvas, paint: Paint) {paint.style = Paint.Style.FILLpaint.isAntiAlias = truepaint.color = Color.REDval radius = W / 2 // 或者 H/2 ,因为是正方形。c.drawCircle(W / 2, H / 2, radius, paint)}private fun rectSource(c: Canvas, paint: Paint) {paint.style = Paint.Style.FILLpaint.isAntiAlias = truepaint.color = Color.BLUEval mode = PorterDuffXfermode(PorterDuff.Mode.SRC_IN)paint.xfermode = modeval left: Float = W / 2val top: Float = H / 2val right: Float = Wval bottom: Float = Hc.drawRect(left, top, right, bottom, paint)}
}

 

 

没有关闭硬件加速,closeGPU=false:

505ee603f49c4a38ae81e5d49657a701.png

 

 

 

关闭硬件加速后,closeGPU=true:

540dc5641ac94116b5d5f52d11738161.png

 

 

具体到PorterDuffXfermode,关闭硬件加速,跑出来的结果符合预期。

 

 

 

 

 

Android图形图像处理:马赛克(Mosaic)效果_android对图片部分区域做马赛克-CSDN博客文章浏览阅读5.8k次。以图形图像界经典的实验例图Lenna为例,当手指在图片上滑过后,形成马赛克的: 写一个MosaicView继承自AppCompatImageView:package com.zhangphil;import android.content.Context;import android.graphics.Bitmap;import android.graphics.Can..._android对图片部分区域做马赛克https://blog.csdn.net/zhangphil/article/details/87812785

Android性能:高版本Android关闭硬件加速GPU渲染滑动卡顿掉帧-CSDN博客文章浏览阅读521次,点赞8次,收藏8次。CPU返回后,会直接将GraphicBuffer提交给SurfaceFlinger,告诉SurfaceFlinger进行合成,但是这个时候GPU可能并未完成之前的图像渲染,这时候就牵扯到一个同步,Android中,用的是Fence机制,SurfaceFlinger合成前会查询Fence,如果GPU渲染没有结束,则等待GPU渲染结束,GPU结束后,会通知SurfaceFlinger进行合成,SF合成后,提交显示,最终完成图像的渲染显示。https://zhangphil.blog.csdn.net/article/details/138614281

 Android硬件加速hardwareAccelerated支持/不支持的绘图接口-CSDN博客文章浏览阅读599次,点赞6次,收藏19次。三Buffer轮转情况下,基本不会有这种情况的发生,渲染线程一般在 dequeueBuffer 时,都可以顺利拿到可用的 Buffer (如果 dequeueBuffer 本身耗时那就也会拉长时间)。在Android早期的版本,由于硬件制造商差异大,增加了这一开关,但随着Android系统版本的迭代,以及硬件技术水平提升,现有的绝大多数Android手机硬件层面均已支持硬件加速(GPU渲染),Android本身也只有有限几个接口不支持硬件加速。https://blog.csdn.net/zhangphil/article/details/138502494

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/20982.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

wgs84 坐标、gcj02坐标相互转换

wgs84 坐标、gcj02坐标相互转换 package com.example.demo.util;import com.example.demo.dto.json.vo.Gps;/**** wgs84 84年提出,大地坐标,也是原始坐标。* gcj02 02年提出,火星坐标,经过加密算法。大多数非百度中国地图厂商基本…

OpenMV学习笔记3——画图函数汇总

画图,即在摄像头对应位置画出图形,对于需要反馈信息的程序来说很直观。就如上一篇文章颜色识别当中的例子一样,我们在识别出的色块上画出矩形方框,并在中间标出十字,可以直观的看到OpenMV现在识别出的色块。 目录 一…

执法装备管理系统DW-S304的概念与特点

执法装备管理系统(DW-S304)适用于多种警务和安保场景,如警察局、特警队、边防检查站、监狱管理系统、生态环境局、执法大队等。它可以帮助这些机构提高对装备的控制能力,确保装备在需要时能够迅速到位,同时也减少了因装…

API开发秘籍:揭秘Swagger与Spring REST Docs的文档自动化神技

在这个数字化时代,如何让你的业务像外卖一样快速送达顾客手中?本文将带你走进Spring Boot的世界,学习如何利用RESTful API构建一个高效、直观的“外卖帝国”。从基础的REST架构风格,到Spring MVC的魔力,再到Swagger和S…

追寻美的指引--纪念西蒙斯

周六早上醒来,James Simons(西蒙斯)辞世的消息刷屏了。多数人知道他,是因为他的财富和量化对冲基金公司-文艺复兴。但他更值得为人纪念的身份,则是数学家和慈善家。 西蒙斯1938年生于麻省,毕业于MIT&#…

探索 Python 的 vars() 函数

大家好,在软件开发的过程中,调试是一个不可或缺的环节。无论你是在解决 bug,优化代码,还是探索代码的执行流程,都需要一些有效的工具来帮助你更好地理解和调试代码。在 Python 编程中,vars() 函数是一个非常…

编程环境资源汇总

目录 前言 正文 虚拟机模块 常用软件模块(同时包含各别好用的小软件) 语言模块 尾声 🔭 Hi,I’m Pleasure1234🌱 I’m currently learning Vue.js,SpringBoot,Computer Security and so on.👯 I’m studying in Univer…

论文阅读笔记(十一)——BioInformatics Agent (BIA)

论文阅读笔记(十一)——BioInformatics Agent (BIA): Unleashing the Power of Large Language Models to Reshape Bioinformatics Workflow 目录 论文阅读笔记(十一)——BioInformatics Agent (BIA): Unleashing the Power of Large Language Models to Reshape Bioinformatic…

【C++奇妙冒险】日期类Date的实现

文章目录 前言日期类Date的接口设计构造函数和打印函数获取日期并判断日期是否合法日期类的大小比较关系<运算符重载 判断小于运算符重载 判断相等<运算符重载 判断小于等于>运算符重载 判断大于> 运算符重载 判断大于等于! 运算符重载 不等于 日期类计算日期天数日…

一维数组基础(题目+答案)

第1题 反向输出 时限&#xff1a;1s 空间&#xff1a;256m 输入n个数&#xff0c;要求程序按输入时的逆序把这n个数打印出来&#xff0c;已知整数不超过100个。也就是说&#xff0c;按输入相反顺序打印这n个数。 输入格式 第一行&#xff1a;一个整数n&#xff0c;代表…

成功解决“IndexError: pop index out of range”错误的全面指南

成功解决“IndexError: pop index out of range”错误的全面指南 引言 在Python编程中&#xff0c;处理列表&#xff08;list&#xff09;、双端队列&#xff08;deque&#xff09;或其他可迭代对象时&#xff0c;我们经常使用pop()方法来移除并返回指定索引处的元素。然而&am…

作文笔记10 复述故事

一、梳理内容&#xff08;用表格&#xff0c;示意图&#xff09; 救白蛇 得宝石 救相亲 变石头 人们纪念海力布 二、按顺序&#xff0c;不遗漏主要情节 &#xff08;猎人海力布热心救人&#xff09;救白蛇 得宝石&#xff08;白蛇强调宝石禁忌&#xff09;&#xff08;海力…

超级幂积【rust题解】

题目内容 对于一个长度为n的十进制整数N(b1,b2....bn)(0<bi<9,b1!0)&#xff0c;定义P(N)b1^1 * b2^2 *....bn^n,当然这个数很大&#xff0c;我们只要你输出P(N)%1000000007的结果 P(123)(1^1 * 2 ^ 2 * 3^3)mod 1000000007108 输入说明 多组输入&#xff0c;每一行一个…

JD手机商品参数对比

前言废话 这不618快到了, 手机又有点问题了; 想换个手机, 但是手机不知道选哪个; 想着能不能对比一下, JD自带的对比只能两个商品不是很够用; 就尝试写一个 首先就是要把需要对比的商品都添加到关注商品里 然后搜索所需的信息, 找哪个接口获取的 然后查看分析html结构, xpa…

赢销侠的秘密武器:如何提升客户满意度?

在竞争激烈的商业战场上&#xff0c;客户满意度是企业能否长盛不衰的关键。它如同一面镜子&#xff0c;映照出企业的服务质量和产品实力。那么&#xff0c;赢销侠们是如何运用秘密武器来提升客户满意度的呢&#xff1f;本文将深入探讨这一课题&#xff0c;并揭示背后的策略与智…

C#面:.Net、ASP.Net、C#、VisualStudio之间的关系是什么

C#是一种编程语言&#xff0c;它是由微软开发的&#xff0c;用于开发各种类型的应用程序&#xff0c;包括桌面应用程序、Web应用程序和移动应用程序等。C#是一种面向对象的语言&#xff0c;它具有强大的类型安全性和丰富的库支持。 .NET是一个软件开发框架&#xff0c;它由微软…

生命在于学习——Python人工智能原理(3.1)

三、深度学习 &#xff08;一&#xff09;深度学习的概念 1、深度学习的来源 深度学习的概念来源于人工神经网络&#xff0c;所以又称深度神经网络。 人工神经网络主要使用计算机的计算单元和存储单元模拟人类大脑神经系统中大量的神经细胞&#xff08;神经元&#xff09;通关…

06.持久化存储

6.持久化存储 pv: persistent volume 全局的资源 pv&#xff0c;node pvc: persistent volume claim 局部的资源&#xff08;namespace&#xff09;pod&#xff0c;rc&#xff0c;svc 6.1:安装nfs服务端(192.168.111.11) yum install nfs-utils.x86_64 -y mkdir /data vim /…

赶紧收藏!2024 年最常见 20道 Kafka面试题(一)

一、Kafka都有哪些特点&#xff1f; Kafka是一个分布式流处理平台&#xff0c;它被设计用于高吞吐量的数据管道和流处理。以下是Kafka的一些主要特点&#xff1a; 高吞吐量、低延迟&#xff1a;Kafka每秒可以处理数十万条消息&#xff0c;延迟可以低至几毫秒。这是通过优化数据…

MyBatis 的在使用上的注意事项及其辨析

1. MyBatis 的在使用上的注意事项及其辨析 文章目录 1. MyBatis 的在使用上的注意事项及其辨析2. 准备工作3. #{ } 与 ${ } 的区别和使用3.1 什么情况下必须使用 ${ }3.1.1 拼接表名3.1.2 批量删除3.1.3 模糊查询3.1.3.1 使用 ${ }的方式3.1.3.2 使用 #{ } 的方式 4. typeAlias…