【问题标题】:Android: Animation of slide up to below of another view.Android:滑动到另一个视图下方的动画。
【发布时间】:2013-05-28 08:26:28
【问题描述】:

有什么想法或如何实现如下图所示的动画?因为当我按下取消按钮时,我试图在 Linearlayout B 上播放动画,linearlayout B 将从左向右滑出,但是一旦 LinearLayout B 完全消失,LinearLayout C 直接跳到 LinearLayout A 的下方,而不是慢慢滑到下方LinearLayout A. 请帮助...

【问题讨论】:

  • 你只想要折叠动画吗?

标签: android performance android-layout android-listview


【解决方案1】:

android:animateLayoutChanges="true" 设置为线性布局,您将自动实现这一点。

【讨论】:

  • 你提到了哪个 LinearLayout? B 还是 C?
  • 拥有所有线性布局的那个。
  • 这个工作,谢谢.. Listview 项目的工作是否也可以刷出?
  • 请注意,animateLayoutChanges 在 Honeycomb 之前不可用
  • 因为我要处理的是 listview 标题,我尝试让 LinearLayout C 慢慢向上滑动,但实际上整个视图是 Listview 和 LinearLayout A、B、C 在里面listview的标题视图,我遇到的问题是listview的项目直接在LinearLayout C向上滑动之前的位置。我认为它会跟随 LinearLayout C 慢慢滑动。你有解决这个问题的方法吗?这是我的错,因为我没有提到那是 lsitview,谢谢!
【解决方案2】:

首先给视图C添加一个ViewTreeObserver.OnPreDraw监听器:

int bHeight = viewB.getHeight();
viewC.getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
    public boolean onPreDraw() {
        viewC.startAnimation(new TranslateAnimation(0, 0, bHeight, 0));
        viewC.getViewTreeObserver().removeOnPreDrawListener(this);
        return false;
    }
});

然后将 B 的可见性设置为消失。

viewB.setVisibility(View.GONE);

这样做是隐藏视图 B,导致视图 C 向上移动。然而,在 C 被绘制到它的新位置之前,我们将它从过去的位置动画到现在的位置。

【讨论】:

  • 我试过了,好像不适合我,返回类型应该设置为false吧?那对listview有用吗?因为我要做的是在 listview 标题上。根据我提出的问题,博格丹的回答很好。但是对于 listview 项目,它仍然会在 linearlayout C 向上滑动之前直接踩上。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多