Android 下拉式动画

Android 下拉式动画,android,animation,drop-down-menu,Android,Animation,Drop Down Menu,我正在尝试创建一个下拉动画。当用户点击指定按钮@+id/btnToHideView时,我希望视图@+id/relativeLayoutControls向下/向上滑动(可见/消失) 以下是布局文件的外观: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="m

我正在尝试创建一个下拉动画。当用户点击指定按钮
@+id/btnToHideView
时,我希望视图
@+id/relativeLayoutControls
向下/向上滑动(
可见
/
消失

以下是布局文件的外观:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <Button
        android:id="@+id/btnToHideView"
        android:layout_width="25dp"
        android:layout_height="25dp"
        android:layout_marginLeft="5dp"
        android:layout_marginStart="5dp"
        android:layout_marginTop="5dp"
        android:background="@drawable/hide_btn"
        />

    <RelativeLayout
        android:id="@+id/relativeLayoutControls"
        android:layout_width="60dp"
        android:layout_height="fill_parent"
        android:layout_marginRight="6dp"
        android:layout_marginEnd="6dp"
        android:layout_alignParentTop="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true">

        //I have buttons in this layoout

    </RelativeLayout>

</LinearLayout>
向上滑动.xml

    <?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >

    <translate
        android:duration="1000"
        android:fromYDelta="0"
        android:toYDelta="100%" />
</set>
    <?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >

    <translate
        android:duration="1000"
        android:fromYDelta="100%"
        android:toYDelta="0" />
</set>
我跟着,但当我点击按钮时,什么也没发生。在logcat中,它只向下打印
操作

请尝试以下操作:

幻灯片提示:

Animation slideUp = AnimationUtils.loadAnimation(activity, R.anim.slide_up);
view.startAnimation(slideUp);
view.animate().translationY(view.getHeight());
slide\u up.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >

    <translate
        android:duration="500"
        android:fromYDelta="100%"
        android:toYDelta="0" />
</set>
下拉列表:

Animation slideUp = AnimationUtils.loadAnimation(activity, R.anim.slide_up);
view.startAnimation(slideUp);
view.animate().translationY(view.getHeight());

这是我的源代码实现(),您可以使用它们

// Initially hide/show the content view.
redLayout = mView.findViewById(R.id.history_operation);
//Load animation
slide_down = AnimationUtils.loadAnimation(getActivity(), R.anim.slide_down);
slide_up = AnimationUtils.loadAnimation(getActivity(), R.anim.slide_up);
  • 创建用于上下滑动的动画xml。如果愿意,您可以随意设置动画的持续时间。这里我设置了500毫:
最后,调用toggle函数来启动定义的动画

private void toggle1() {
    // Start animation
    if(isFadeOut){
        redLayout.startAnimation(slide_down);
    }else {
        redLayout.startAnimation(slide_up);
    }
    isFadeOut = !isFadeOut;
}

视图
替换为相对布局或按钮或任何要设置动画的视图。然后用你的上下文替换
活动
。原来我的逻辑是错误的,但是你帮我注意到了,谢谢。很高兴听到这个消息
<translate
    android:duration="500"
    android:fromYDelta="0"
    android:toYDelta="-100%" />
  slide_up.setAnimationListener(new Animation.AnimationListener() {
      @Override
      public void onAnimationStart(Animation animation) {

      }

      @Override
      public void onAnimationEnd(Animation animation) {
          //When the animation was finished, set gone to the view
          redLayout.setVisibility(View.GONE);
      }

      @Override
      public void onAnimationRepeat(Animation animation) {

      }
  });
  slide_down.setAnimationListener(new Animation.AnimationListener() {
      @Override
      public void onAnimationStart(Animation animation) {
          //When the animation start, set visible to the view
          redLayout.setVisibility(View.VISIBLE);
      }

      @Override
      public void onAnimationEnd(Animation animation) {
      }

      @Override
      public void onAnimationRepeat(Animation animation) {

      }
  });
private void toggle1() {
    // Start animation
    if(isFadeOut){
        redLayout.startAnimation(slide_down);
    }else {
        redLayout.startAnimation(slide_up);
    }
    isFadeOut = !isFadeOut;
}