动画时向上推上方视图,向上滑动另一个视图

我的布局内有以下视图

<RelativeLayout
    android:id="@+id/wrapper"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true">

    <LinearLayout
        android:id="@+id/header"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true">

        <!-- some child views here -->

    </LinearLayout>

    <LinearLayout
        android:id="@+id/footer"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/header"
        android:visibility="gone">

        <!-- some other child views here -->

    </LinearLayout>    

</RelativeLayout>

包装器RelativeLayout与其父对象的底部对齐。并且不显示初始页脚视图(View.GONE)。轻击页眉视图时,应向用户显示页脚,并从屏幕底部向上滑动动画;当用户再次轻击时,应将页脚向下滑动至底部。当我在页脚视图上开始向上滑动动画时,它不会与动画同时推送页眉视图。如果我先将页脚视图的可见性设置为View.INVISIBLE,然后开始动画,则立即将页眉视图向上推(不与动画或页脚视图一起),并且页脚视图随动画一起提供。

这是调用动画的代码

footer.setVisibility(View.INVISIBLE);

Animation animation = AnimationUtils.loadAnimation(activity, R.anim.slide_up_from_bottom);
animation.setDuration(animDuration);
footer.startAnimation(animation);
footer.postDelayed(new Runnable() {
    @Override
    public void run()
    {
        footer.setVisibility(View.VISIBLE);
    }
}, animDuration);

这是动画文件的内容:

我如何制作此动画以推动页眉视图,而页脚视图却向上滑动?

希望我能说清楚。我想要的只是两个视图一起向上/向下移动。

如果我将动画应用于包装器视图,则它将从底部(而不是从当前位置)向上滑动。

Harish_N

如果您希望页眉与页脚动画一起推送,可以按以下步骤手动进行

public class MainActivity extends Activity {

private LinearLayout header,footer;
private RelativeLayout wrapper;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    header = (LinearLayout) findViewById(R.id.header);
    footer = (LinearLayout) findViewById(R.id.footer);
    wrapper = (RelativeLayout) findViewById(R.id.wrapper);

    header.setOnClickListener(new View.OnClickListener() {          
        @Override
        public void onClick(View v) {

            if(footer.getVisibility() == View.VISIBLE){             
                int footerHeight = footer.getMeasuredHeight();
                float initialWrapperY = wrapper.getY();                 
                ObjectAnimator oa=ObjectAnimator.ofFloat(wrapper, "y", initialWrapperY,initialWrapperY+footerHeight);
                oa.setDuration(400);
                oa.start();
                oa.addListener(new AnimatorListenerAdapter() {
                    public void onAnimationEnd(android.animation.Animator animation) {
                        footer.setVisibility(View.INVISIBLE);
                    };
                });
            }
            else{                   
                final float initialWrapperY = wrapper.getY();           
                footer.setVisibility(View.VISIBLE);
                wrapper.setY(initialWrapperY);
                ViewTreeObserver vto=wrapper.getViewTreeObserver();
                vto.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {                     
                    @Override
                    public boolean onPreDraw() {
                        wrapper.getViewTreeObserver().removeOnPreDrawListener(this);
                        final int footerHeight = footer.getMeasuredHeight();                            
                        ObjectAnimator oa=ObjectAnimator.ofFloat(wrapper, "y", initialWrapperY,(initialWrapperY-footerHeight));
                        oa.setDuration(400);
                        oa.start();
                        return true;
                    }
                });
            }               
        }
    });
}


}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

向上滑动时,将堆叠的div覆盖在另一个div上方

来自分类Dev

向上滑动时,将堆叠的div覆盖在另一个div上方

来自分类Dev

如何在推上设置另一个视图

来自分类Dev

简单的向上滑动视图动画

来自分类Dev

向上,向下,向左或向右滑动时,如何调用另一个类中的方法?Unity2D

来自分类Dev

在另一个iOS上滑动视图

来自分类Dev

在不同的层次结构中将一个视图动画化为另一个视图

来自分类Dev

嵌入到另一个视图中时,SwiftUI动画不起作用

来自分类Dev

无法在StackLayout-XamarinForms中的另一个视图上方显示视图

来自分类Dev

隐藏在另一个视图后面的视图子视图的动画

来自分类Dev

对多个视图进行动画处理,其中一个视图先于另一个视图完成

来自分类Dev

当访问视图控制器的最后一个组件时,scrollview向上滚动

来自分类Dev

从一个视图移到另一个视图时,不处理后一个视图

来自分类Dev

当另一个被隐藏时拉长视图

来自分类Dev

在用另一个视图替换一个视图时保持约束

来自分类Dev

将变换动画从视图应用到另一个视图

来自分类Dev

Android 向下滑动以向上滑动视图

来自分类Dev

如何在另一个视图上方显示PickerView

来自分类Dev

将地图放置在另一个视图Swift UI上方

来自分类Dev

使Div的子代在html中显示在另一个子视图的上方

来自分类Dev

为什么有时将字符串写在一个方向上,有时又写在另一个方向上?

来自分类Dev

在另一个布局android上从顶部滑动视图

来自分类Dev

在fame.us应用程序上滑动视图的另一个效果是?

来自分类Dev

在另一个布局android上从顶部滑动视图

来自分类Dev

当键盘显示一个文本视图而不显示另一个文本视图时,如何移动视图

来自分类Dev

我怎样才能让我的动画在另一个方向上工作?

来自分类Dev

SWRevealViewController-切换到另一个视图时如何保留前视图

来自分类Dev

从另一个而非父视图获取视图

来自分类Dev

从另一个视图访问视图的功能

Related 相关文章

  1. 1

    向上滑动时,将堆叠的div覆盖在另一个div上方

  2. 2

    向上滑动时,将堆叠的div覆盖在另一个div上方

  3. 3

    如何在推上设置另一个视图

  4. 4

    简单的向上滑动视图动画

  5. 5

    向上,向下,向左或向右滑动时,如何调用另一个类中的方法?Unity2D

  6. 6

    在另一个iOS上滑动视图

  7. 7

    在不同的层次结构中将一个视图动画化为另一个视图

  8. 8

    嵌入到另一个视图中时,SwiftUI动画不起作用

  9. 9

    无法在StackLayout-XamarinForms中的另一个视图上方显示视图

  10. 10

    隐藏在另一个视图后面的视图子视图的动画

  11. 11

    对多个视图进行动画处理,其中一个视图先于另一个视图完成

  12. 12

    当访问视图控制器的最后一个组件时,scrollview向上滚动

  13. 13

    从一个视图移到另一个视图时,不处理后一个视图

  14. 14

    当另一个被隐藏时拉长视图

  15. 15

    在用另一个视图替换一个视图时保持约束

  16. 16

    将变换动画从视图应用到另一个视图

  17. 17

    Android 向下滑动以向上滑动视图

  18. 18

    如何在另一个视图上方显示PickerView

  19. 19

    将地图放置在另一个视图Swift UI上方

  20. 20

    使Div的子代在html中显示在另一个子视图的上方

  21. 21

    为什么有时将字符串写在一个方向上,有时又写在另一个方向上?

  22. 22

    在另一个布局android上从顶部滑动视图

  23. 23

    在fame.us应用程序上滑动视图的另一个效果是?

  24. 24

    在另一个布局android上从顶部滑动视图

  25. 25

    当键盘显示一个文本视图而不显示另一个文本视图时,如何移动视图

  26. 26

    我怎样才能让我的动画在另一个方向上工作?

  27. 27

    SWRevealViewController-切换到另一个视图时如何保留前视图

  28. 28

    从另一个而非父视图获取视图

  29. 29

    从另一个视图访问视图的功能

热门标签

归档