如何动画现有android视图的“克隆”,重复版本

时间:2014-08-29 13:44:53

标签: android animation android-animation

我有一个ImageView位于ViewPager的页面中,并且假设我希望将其设置为缩小比例+在屏幕外的某处飞行,而原始视图仍然是在寻呼机中出现,未触及

在Android 4.0.3+上创建此类动画的最佳方法是什么? 我想使用新的动画框架,而不是旧动画框架。

我想到的一种方法是使用活动DecorView:在那里创建一个ImageView的克隆并做一个动画,但我觉得这有点hacky - 装饰视图看起来更像隐藏的功能和实现细节。

还有更好的方法吗?

1 个答案:

答案 0 :(得分:2)

我认为通过DecorView的所有父母将setClipChildren()设置为false,您可以使用ImageView。这样,您甚至可以在布局外部(甚至View)为布局设置Activity动画。我主要使用辅助方法来执行此操作:

public static void setClipView(View view, boolean clip) {
    if (view != null) {
        ViewParent parent = view.getParent();
        if(parent instanceof ViewGroup) {
            ViewGroup viewGroup = (ViewGroup) view.getParent();
            viewGroup.setClipChildren(clip);
            setClipView(viewGroup, clip);
        }
    }
}

所以,只需在ImageView上使用此方法,就像这样:

LayoutHelper.setClipView(imageView, false);

要为View本身设置动画,您应该使用Android 3.0引入的新动画API(Honeycomb - API 11级)。

This DevBytes video也与此有些相关。它会处理自定义Activity动画,并会创建一个重复的ImageView来设置从Activity到下一个Activities的过渡动画。这与你想要做的事情基本相同,只是在两个不同的{{1}}。