gpt4 book ai didi

android - 奇怪的行为 ScaleAnimation setFillAfter(true)/false

转载 作者:搜寻专家 更新时间:2023-11-01 07:34:45 24 4
gpt4 key购买 nike

我们正在使用 TouchImageView 并希望实现 onDoubleTap 缩放 ...到目前为止一切顺利。

问题是:

如果我们应用缩放动画并设置setFillAfter(false),在AnimationListener.onAnimationEnd中,我们应用正确的矩阵到imageview,并且一切正常(滚动、其他缩放手势等)。-> 但是 - 您会在屏幕上看到一个小闪烁(这是可以理解的 - 因为动画跳回到开头,之后将应用矩阵更改)

另一方面,如果setFillEnabled(true),动画看起来很棒,没有闪烁,但不知何故 View 完全困惑,一开始一切看起来都不错,但是最大和最小缩放级别完全乱七八糟 - 您不能再缩小到初始缩放,而且移动图片也不起作用正如预期的那样 - 边界是假的?类似的东西)

那么我们的问题 ;)?
- 带 setFillAfter(true) 的 ScaleAnimation 到底做了什么?
- 它会改变(完整的) ImageView 的大小吗?
- 出了什么问题:/?

一如既往地非常感谢您的帮助:=)干杯,

//顺便说一句:这发生在所有 android 版本 <= 4 上,在 4.1 上没有出现所描述的问题并且一切都按预期工作。

----------------
更新:
所以当前代码是这样的,有效,(缩放不再有问题)但是在设置矩阵和清除动画之间有一个小的“闪烁”(尽管)代码显示,它应该应用矩阵 -before - 动画得到清理,所以我希望无缝过渡...
感谢您的回复!

            Log.v("TouchImageView", "Zoom in");
ScaleAnimation zoomIn = new ScaleAnimation(saveScale, SCALE_DOUBLE_TAP, saveScale, SCALE_DOUBLE_TAP, width / 2, height / 2);
zoomIn.setDuration(200);
zoomIn.setFillAfter(true);
zoomIn.setAnimationListener(new AnimationListener() {

@Override
public void onAnimationStart(Animation animation) {
isAnimating = true;
saveScale = SCALE_DOUBLE_TAP;
right = width * saveScale - width - (2 * redundantXSpace * saveScale);
bottom = height * saveScale - height - (2 * redundantYSpace * saveScale);
}

@Override
public void onAnimationRepeat(Animation animation) {

}

@Override
public void onAnimationEnd(Animation animation) {
isAnimating = false;
matrix.postScale(SCALE_DOUBLE_TAP, SCALE_DOUBLE_TAP, width / 2, height / 2);
matrix.getValues(matrixValues);
setImageMatrix(matrix);
clearAnimation();
}
});


startAnimation(zoomIn);

最佳答案

setFillAfter(true) 会假装它实际上是按比例缩放的,我建议将它与矩阵缩放结合使用。在动画端应用矩阵并在应用了动画的 View 上调用 clearAnimation()。这应该可以解决闪烁问题。

关于android - 奇怪的行为 ScaleAnimation setFillAfter(true)/false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13090116/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com