安卓下拉动画

5

我有一个工具栏位于底部,上面是一个 WebView,填充剩余的高度。现在我想滑动工具栏以隐藏它,在它动画时 WebView 的高度应该扩展。我尝试使用 TranslateAnimation,但不幸的是它没有调整工具栏的实际位置,只移动了它的内容。以下是我尝试过的代码:

<translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromXDelta="0%"
    android:toXDelta="0%"
    android:fromYDelta="0%"
    android:toYDelta="100%"
    android:duration="700"
    android:fillAfter="true" />

实际代码如下:

final View v = findViewById(R.id.browseToolbar);
Animation animation = AnimationUtils.loadAnimation(someContext, R.anim.toolbar_hide);
v.startAnimation(animation);

我该如何做呢?

2个回答

1

我写了一些代码来实现真正的调整大小动画。看一下:

http://www.touchlab.co/blog/resize-animation/

同时也可以看一下我关于Android动画的演示文稿

https://docs.google.com/present/view?id=djqv5kb_187c62jvbf7

通常的动画类仅影响其父视图中的内容,正如上文所述。理解它们的关键在于它们并非“真实的”。将Android动画看作一种幻觉。如果您运行我创建的示例应用程序,并进行缩放动画使按钮变小,那么如果您单击按钮以前存在的位置之外的区域,它仍会被识别为按钮单击事件。Android动画实际上不会影响真实的边界和尺寸。

我的博客文章中的代码本质上是实现了ViewGroup.OnHierarchyChangeListener。当从层次结构中添加/删除元素时,容器会执行物理缩放动画。


0

当您使用Android动画时,只有视图的像素会移动。要实际移动视图,您需要向动画对象添加动画侦听器并覆盖onAnimationEnd方法。在该方法中,您需要编程方式移动视图。

 AnimationListener animListener = new AnimationListener() {
     @Override
     public void onAnimationStart(Animation arg0) {}            
     @Override
     public void onAnimationRepeat(Animation arg0) {}                   
     @Override
     public void onAnimationEnd(Animation arg0) {
        Move the view here          
     }
 };

 animation.setAnimationListener(animListener);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接