我不知道应该叫translate
还是animate
。
我有一个Framelayout,从Activity的顶部开始,它最终关于屏幕的中心或新中心。
此FrameLayout中有两个图像 但我不打扰他们。
现在我有另一个有两个视图的RelaytiveLayout:一个TextView和一个Button。
我希望在特定时间,它们从FrameLayout的末尾开始向下动画/转换并获得它们的原始高度,该高度应该是TextView和Button的高度。
我不想给出固定大小,因此我不能给出固定的x,y像素坐标来翻译。
这是我的xml布局
<FrameLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:id="@+id/main_frame">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/animationboard"
android:layout_gravity="center"
android:gravity="center"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true" />
<ImageView
android:id="@+id/iv_animation"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:contentDescription="animation"
android:layout_marginTop="350dp"
android:layout_marginLeft="30dp"
/>
</FrameLayout>
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/main_frame"
android:layout_centerHorizontal="true"
android:id="@+id/secondry_frame">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Anggor"
android:gravity="center"
android:textSize="30dp"
android:layout_gravity="center"
android:id="@+id/tv"
android:visibility="gone"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Close"
android:layout_below="@id/tv"
android:visibility="gone"
android:id="@+id/close"/>
</RelativeLayout>
正如您所看到的,我将TextView和Button的可见性设置为已消失,因此当我翻译这些视图时,它们应设置为可见。
我不知道如何做到这一点 请帮忙。
答案 0 :(得分:1)
我已经完成了自己的工作,只是分享答案,以便任何人在以后的任何时候都想要它。我所做的是一个幻觉,我已经将我的Relativelayout(需要移动)设置在Framelayout(包含图像)后面 所以现在我的xml部分看起来像这样,
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:clipChildren="false">
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/main_frame"
android:layout_centerHorizontal="true"
android:id="@+id/secondry_frame"
android:clipChildren="false"
android:background="#ffaaff">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Anor"
android:gravity="center"
android:textSize="30dp"
android:layout_gravity="center"
android:id="@+id/tv"
android:visibility="gone"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Close"
android:layout_below="@id/tv"
android:visibility="gone"
android:id="@+id/close"/>
</RelativeLayout>
<FrameLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:id="@+id/main_frame"
android:clipChildren="false">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/animationboard"
android:layout_gravity="center"
android:gravity="center"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true" />
</FrameLayout>
<ImageView
android:id="@+id/iv_animation"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:contentDescription="animation"
android:layout_marginTop="350dp"
android:layout_marginLeft="30dp"
/>
</RelativeLayout>
通过这样做,我的相对布局被Framelayout图像覆盖。
现在第二个技巧是从屏幕中间开始动画,这样就没有人能看到动画从顶部开始,因为图像已经覆盖了屏幕的中间部分,这就是我所做的动画文件并将其放在动画文件夹中
<强> animfalling 强>
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/linear_interpolator">
<translate
android:fromYDelta="-50%p"
android:toYDelta="0"
android:duration="2000"/>
</set>
因此我在我的java代码中使用了
RelativeLayout rl = (RelativeLayout) findViewById(R.id.secondry_frame);
final Animation animationFalling = AnimationUtils.loadAnimation(c, R.anim.anim_falling);
rl.startAnimation(animationFalling);
它给我的结果我正在寻找:)