我们正在使用TouchImageView,并希望实现一个OnDoubleTap缩放…
到现在为止,一直都还不错。
问题是:
如果在animationListener.onAnimationEnd中应用缩放动画并设置setFillAfter(False),则会将正确的矩阵应用到ImageView,所有操作都按预期工作(滚动、其他缩放手势等)。
->但是-你在屏幕上看到一个小的松弛(这是可以理解的-因为动画跳回到开始,然后矩阵的改变将被应用)
另一方面,如果setfillenabled(true),动画看起来很好,没有松弛,但不知怎么的,视图完全混乱了,起初一切看起来都很好,但最大和最小缩放级别完全混乱了-你不能再缩小到初始缩放,而且移动图片也不能按预期工作-边框是假的?类似的东西)
那么我们的问题是什么?
-使用setfillafter(true)的scaleanimation实际做什么?
-它会改变(完整的)imageview的大小吗?
-怎么了:/?
一如既往地感谢您的帮助:=)
干杯,
//btw:这在所有android版本———————————————————---
更新:
所以当前的代码是这样的,工作,(缩放不再有问题)但是在设置矩阵和清除动画之间有一个小的“闪烁”(尽管代码显示,它应该在动画被清除之前应用矩阵,所以我希望能有一个无缝的过渡…
谢谢你的回复!

            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)会假装它是实际缩放的,我建议将它与矩阵缩放一起使用。在动画结束时应用矩阵,并在应用动画的clearAnimation()上调用View。这应该可以修复闪烁。

10-06 10:00