当出现新片段时,我想部分隐藏片段。
我在 GitHub 上的 ScienceGuy 代码上构建,如 Gmail Honeycomb App 之类的片段动画中所引用
我从三个片段开始。最左边的权重为 6,中间的权重为 4,最右边的权重为 4。将 weightSum 设置为 10 会使左侧和中间的片段出现,而最右侧则在屏幕外。这就是我要的。
当用户在中间片段中选择一个项目时,我想转换左侧片段,使其三分之二离开屏幕左侧。由于权重,我将有效地拥有 2、4、4。此时,右侧片段已完全移动到屏幕上。
使用 ScienceGuy 的代码,当左侧片段滚动关闭时,我可以让右侧片段出现,但左侧片段完全消失。
我尝试使用以下代码:
final float middleFragmentWidth = getMiddleFragment().getView().getWidth();
ObjectAnimator animIn = ObjectAnimator.ofFloat(null, "x",
-middleFragmentWidth/2, 0).setDuration(
trans.getDuration(LayoutTransition.APPEARING));
trans.setAnimator(LayoutTransition.APPEARING, animIn);
ObjectAnimator animOut = ObjectAnimator.ofFloat(null, "x", -middleFragmentWidth,
-middleFragmentWidth/2).setDuration(
trans.getDuration(LayoutTransition.CHANGE_DISAPPEARING));
trans.setAnimator(LayoutTransition.DISAPPEARING, animOut);
我怀疑Android期望一个片段在“隐藏”时完全隐藏。有没有办法为片段设置动画,使它们实际上不是隐藏的,而是部分在屏幕外?
或者,我可以将三个片段放入一个 HorizontalScrollView 中,然后尝试对其进行动画处理。但是,我没有这样做,因为最中间和最右边的片段包含列表视图,并且根据文档要避免在 HorizontalScrollView 中使用列表视图。