【发布时间】:2013-06-28 01:12:53
【问题描述】:
我正在尝试创建一个可缩放的容器,并且我的目标是 API 14+
在我的 onScale 中(我使用 ScaleGestureDetector 来检测捏缩放)我正在做这样的事情:
public boolean onScale (ScaleGestureDetector detector) {
float scaleFactor = detector.getScaleFactor();
setScaleX(getScaleX() * scaleFactor);
setScaleY(getScaleY() * scaleFactor);
return true;
};
它可以工作,但缩放不平滑。事实上,它明显闪烁。
我还尝试了硬件层,认为一旦纹理上传就会在 GPU 上进行缩放,因此速度会非常快。但这并没有什么不同 - 缩放不流畅,有时会奇怪地闪烁。
我做错了什么?
【问题讨论】:
-
我不想发布答案,因为我无法测试解决方案,但你可以,所以在这里笑一下:stackoverflow.com/questions/5790503/…。尝试后请返回此处并告诉我们它是否解决了问题。看看最后的回复。
-
我知道该解决方案,但它存在严重缺陷 - 它仅缩放画布以进行绘图 - 没有任何剪辑和接触点被转换。这就是为什么我使用 setScale 来更改容器中的变换矩阵并调整剪辑矩形并适当地变换触摸坐标(无需您自己进行矩阵数学运算)
-
你能分享更多的代码吗?特别是实际的绘图例程。您是否尝试过任何分析以查看绘图在哪里挣扎?我会考虑在紧密的绘图循环中最小化(可能为零)对象分配的数量。我知道这些是一般(可能很明显)点,但如果没有更多信息,很难说更多。
-
嘿@numansalati,你能解决这个问题吗?不幸的是,我也面临同样的问题。
-
@GautamM。对不起,不得不继续做其他事情。如果你发现了什么,请分享它。
标签: android performance android-ui hardware-acceleration