android - 如何为 'cloned' 制作动画,现有 android View 的重复版本

标签 android animation android-animation

我有一个 ImageView 位于 ViewPager 的页面中,假设我想为其设置动画以按比例缩小 + 飞到屏幕外的某个地方,而原始 View 仍然存在于寻呼机中,未改变

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

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

有没有更好的方法?

最佳答案

我认为您可以通过在 ImageView 的所有父级上将 setClipChildren() 设置为 false 来绕过使用 DecorView。这允许您从布局中为 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(Honeycomb - API 级别 11)引入的新动画 API。

This DevBytes video也与此有些关系。它处理自定义 Activity 动画,它们创建一个重复的 ImageView 来动画从一个 Activity 到下一个的过渡。这基本上与您尝试做的相同,只是在两个不同的 Activities 中。

关于android - 如何为 'cloned' 制作动画,现有 android View 的重复版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25569621/

相关文章:

android - 结合移动翻译+ Activity 过渡动画

java - Android 测试 - 无法设置正确的配置

Android - PendingIntent.getActivity 中的上下文参数

android - 具有不同列大小的 GridView

android - ComponentInfo{packgname.LoginActivity} : java. lang.ClassNotFoundException

android - 在自定义 ViewGroup 中为 child 设置动画的正确方法

java - 我如何模仿 Lollipop ( Material 设计)按钮动画?

ios - 带有延迟和持续时间Ios的动画标签

c# - Xamarin - 动画 StackLayout

java - Android - 在 ImageView 中交叉淡化多个图像