从视图中心创建缩放动画以进行自定义缩放

时间:2015-04-10 14:01:21

标签: android android-animation

我正在尝试为视图创建缩放动画。我希望从视图中心的动画自定义比例。 试过以下三种方法,但似乎没有工作

(1)从http://developer.android.com/training/animation/zoom.html获得了一些想法并尝试创建动画

AnimatorSet set = new AnimatorSet();
set.play(ObjectAnimator.ofFloat(mContentLayer, View.SCALE_X, currentScaleX, newScaleX))
    .with(ObjectAnimator.ofFloat(mContentLayer, View.SCALE_Y, currentScaleY, newScaleY));
// various ways to animate PivotX/PivotY or set pivots did not help
set.setDuration(500);
set.addListener(new AnimatorListenerAdapter() {
    @Override
    public void onAnimationEnd(Animator animation) {
        adjustScale();
    }

    @Override
    public void onAnimationCancel(Animator animation) {
        adjustScale();
    }
});

动画确实发生但不是从视角开始,设置枢轴的各种方法没有帮助

(2)尝试基于xml的方法来创建动画,但找不到从代码中指定自定义比例值的方法 zoom in and zoom out animation in android zoom.xml

<scale
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="500"
    android:fromXScale="1"
    android:fromYScale="1"
    android:pivotX="50%"
    android:pivotY="50%"
    android:toXScale="1"
    android:toYScale="1" >
</scale>

//动画类不支持更改和缩放,

(3) 尝试使用比例和透视http://developer.android.com/reference/android/view/animation/ScaleAnimation.html直接创建ScaleAnimation 同样看了这个How to create zoom animation effect for custom view 但动画甚至没有发生

有人可以建议适用于此案例的解决方案enter code here

1 个答案:

答案 0 :(得分:0)

通过编写自定义动画解决了这个问题。问题是我们自己处理所有视图更新而不使用android的布局功能。因此,当我们使用Android动画师时,枢轴总是0,0