我需要帮助来设置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);
}
}
动画xml文件,现在它的工作错误了:
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:fromXDelta="0"
android:fromYDelta="-1000"
android:duration="1000" />
</set>
答案 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>