我们正在使用 TouchImageView 并希望实现 onDoubleTap 缩放......到目前为止一切顺利。
问题是:
如果我们应用缩放动画并设置setFillAfter(false),在 AnimationListener.onAnimationEnd 中,我们将正确的矩阵应用到图像视图,一切都按预期工作(滚动、其他缩放手势等)。-> 但是 - 你会在屏幕上看到一个小的闪烁(这是可以理解的 - 因为动画会跳回到开头,然后会应用矩阵更改)
另一方面,如果setFillEnabled(true),动画看起来很棒,没有闪烁,但不知何故,视图完全搞砸了,起初一切看起来都很好,但最大和最小缩放级别完全搞砸了- 你不能缩小不再进行初始缩放,并且移动图片也无法按预期工作-边框是错误的吗?类似的东西)
所以我们的问题;)?
- 带有 setFillAfter(true) 的 ScaleAnimation 实际上做了什么?
- 它会改变(完整)图像视图的大小吗?
- 出了什么问题:/?
一如既往,非常感谢您的帮助:=) 干杯,
//顺便说一句:这发生在所有android 版本 <= 4中,在 4.1 上,所描述的问题不会发生并且everyhting 按预期工作。
---------------
更新:
所以当前代码是这样的,可以工作,(缩放不再有问题)但在设置矩阵和清除动画之间有一个小的“闪烁”(虽然)代码显示,它应该在动画被清理之前应用矩阵,所以我希望无缝过渡......
谢谢你的回复!
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);