android:如何在动画后永久移动RelativeLayout

时间:2016-06-17 14:28:13

标签: java android-layout animation relativelayout android-coordinatorlayout

这是activity.xml,content_my.xml是RelativeLayout,menu.xml是LinearLayout。顶部和菜单布局(LinearLayout)下的内容布局(RelativeLayout)我想移动屏幕左侧的相对布局(内容布局)并访问它下面的菜单布局。内容布局位于动画菜单布局的顶部,无法访问菜单。在contentlayout中,我添加了ListView。请帮我告诉我如何在动画后永久移动RelativeLayout。

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:context="com.bwd.demo.mybrand.My">

<include layout="@layout/menu" />
<include layout="@layout/content_my" />
</android.support.design.widget.CoordinatorLayout>

1 个答案:

答案 0 :(得分:0)

在content_my.xml中,您必须为RelativeLayout指定一个ID:

android:id="@+id/rl_content"

然后在您的Activity中使用Java代码转换xml,以便您可以使用它:

RelativeLayout rl_content = (RelativeLayout) findViewById(R.id.rl_content); 

现在有多种选项可以为它设置动画。 由于你想访问布局下面的东西,我建议 使用ViewPropertyAnimator,然后您可以使用一行。

最小的实现看起来像这样:

rl_content.animate().translationX(0); // -> animates **TO** 0 on the X axis

会将布局的左边框移动到屏幕的左侧。如果你想要更进一步,那么你需要一个负值。

或者你可以使用translationXBy()方法f.e. :

rl_content.animate().translationXBy(-50);  // -> animates **BY** -50 on the X axis
//(negative values are to the left)

同样有趣:

TranslateAnimation - &gt;在你的情况下不推荐,因为它没有真正移动布局,只是让它看起来像移动,所以你将无法访问RelativeLayout下的菜单。

ObjectAnimator