在RelativeLayout中向下滑动动画

时间:2014-01-21 22:46:09

标签: android android-animation android-xml

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

enter image description here

现在,当我触摸地图的标记时,它会显示一个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);
         }
    }
    
  • 动画xml文件,现在它的工作错误了:

    <set xmlns:android="http://schemas.android.com/apk/res/android">
      <translate 
          android:fromXDelta="0" 
          android:fromYDelta="-1000" 
          android:duration="1000" />
    </set>
    

1 个答案:

答案 0 :(得分: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>