我有一个ImageView
位于ViewPager
的页面中,并且假设我希望将其设置为缩小比例+在屏幕外的某处飞行,而原始视图仍然是在寻呼机中出现,未触及。
在Android 4.0.3+上创建此类动画的最佳方法是什么? 我想使用新的动画框架,而不是旧动画框架。
我想到的一种方法是使用活动DecorView
:在那里创建一个ImageView
的克隆并做一个动画,但我觉得这有点hacky - 装饰视图看起来更像隐藏的功能和实现细节。
还有更好的方法吗?
答案 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}}。