自定义Android视图中的硬件加速部分失效

自定义Android视图中的硬件加速部分失效,第1张

概述我的应用程序中有一个自定义视图,可以填充整个活动.在大多数情况下,当我想刷新控件时,我调用invalidate()而没有任何参数.但是,在某些情况下,我只更改控件的一小块区域,我调用invalidate(Rect)以避免重绘整个屏幕.这很重要,因为在这些情况下我需要更新尽可能快.这似乎工作正常,

我的应用程序中有一个自定义视图,可以填充整个活动.

在大多数情况下,当我想刷新控件时,我调用invalIDate()而没有任何参数.

但是,在某些情况下,我只更改控件的一小块区域,我调用invalIDate(Rect)以避免重绘整个屏幕.这很重要,因为在这些情况下我
需要更新尽可能快.

这似乎工作正常,但是,当我在Honeycomb中启用硬件加速(即在AndroidManifest.xml中设置androID:harDWareAccelerated =“true”)时,部分重绘似乎不起作用.

如果我在onDraw()方法中执行Log.d(“FOO”,canvas.getClipBounds()),则可以看到这一点;输出只显示整个控件正在更新,而禁用硬件加速,我得到正确的输出区域.

使用硬件加速时有没有办法使部分失效工作?

非常感谢,马特

解决方法:

部分重绘工作正常,只有屏幕的指定区域才会被重绘.然而,它不会改变画布上的剪辑边界.将记录所有绘制 *** 作,但实际上只会执行与脏区域相交的绘制 *** 作.

更新:从Lollipop(API 21)开始,部分失效发生在视图级别(即,您不能使整个视图无效).

总结

以上是内存溢出为你收集整理的自定义Android视图中的硬件加速部分失效全部内容,希望文章能够帮你解决自定义Android视图中的硬件加速部分失效所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1103153.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存