繁体   English   中英

从另一个视图后面对视图进行动画处理/翻译

[英]Animate/Translate the View from behind another View

我不知道它是否应该称为translateanimate

我有一个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的可见性设置为走了,以便在翻译这些View时将其设置为可见。

我不知道该怎么做。
请帮忙。

我已经完成了自己的工作,只是分享答案,以便以后任何时候有人想要。 我要做的是一种错觉,我将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);

它给了我我正在寻找的结果:)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM