在RelativeLayout中向下滑动动画

Yer*_*ray 0 android android-animation android-xml

我需要帮助来设置RelativeLayout的动画.下一张图片说明了我的用法:

在此输入图像描述

现在,当我触摸地图的标记时,它会显示一个RelativeLayout(在图片中调用标记标题),并且向上滑动的动画效果很好,但是,我向下滑动的代码效果不佳,因为它从顶部开始下降的屏幕.我的代码是这样的:

  • 这是它隐藏RelativeLayout的代码:

     public void hideSlideUp() { 
        RelativeLayout slideLayout;
        slideLayout = (RelativeLayout) findViewById(R.id.sliding_up);
    
        if (slideLayout.getVisibility() != View.INVISIBLE) {
            Animation slide = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.slide_down);
            slideLayout.startAnimation(slide);
            slideLayout.setVisibility(View.INVISIBLE);
         }
    }
    
    Run Code Online (Sandbox Code Playgroud)
  • 动画xml文件,现在它的工作有误:

    <set xmlns:android="http://schemas.android.com/apk/res/android">
      <translate 
          android:fromXDelta="0" 
          android:fromYDelta="-1000" 
          android:duration="1000" />
    </set>
    
    Run Code Online (Sandbox Code Playgroud)

Eva*_*hir 5

您必须找到一种方法来计算地图的高度并从动画起始位置减少它.这样,动画从其当前位置开始,而不是屏幕顶部.

另一种方法是,这是一个聪明的布局技巧.

下面是一些示例代码,说明如何使用FrameLayout将LinearLayout层叠在Map视图上.您将透明视图权重设置为1,以便在将TextView切换为GONE时,它会扩展以填充空间.要为此更改设置动画,请添加animateLayoutChanges="true"到封闭视图中.

例:

<FrameLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
    <Map
        ...
    />
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:animateLayoutChanges="true" >
        <View
            android:id="@+id/transparentViewThatExpandsWhenTextIsGone"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1" />
        <TextView
            android:id="@+id/textViewToToggle"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:visibility="gone" />
    </LinearLayout>
</FrameLayout>
Run Code Online (Sandbox Code Playgroud)