如何在Android

时间:2016-01-08 17:02:14

标签: android animation

我有一个前景图片,中间有一个透明空间,所以你可以通过它看到背景颜色,从白色开始。我需要创建一个擦除效果,其中颜色从白色变为蓝色,在屏幕上从左向右移动。不只是从一个褪色到另一个。它需要像一个蓝色的窗帘被拉过屏幕,慢慢地改变出现在图像中间的颜色。

我目前使用ValueAnimator将其设置为基本淡入淡出效果,但要求是此擦除效果。如何创建这种窗帘擦拭效果?

为了澄清我正在寻找的效果,那就是在白色屏幕上慢慢拉出纯色的窗帘,所以最后所有的都是蓝色。

    <FrameLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@color/white"
        android:foreground="@drawable/loading_page_4"
        android:id="@+id/splash_color_layout" >
    </FrameLayout>

1 个答案:

答案 0 :(得分:1)

有几种方法可以解决这个问题,但最简单也是最简单的方法是在框架中添加子视图。

 <FrameLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/white"
    android:foreground="@drawable/loading_page_4"
    android:id="@+id/splash_color_layout" >

    <View
        android:id="@+id/wipe_animation_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@color/blue"
        android:visibility="invisible" />
</FrameLayout>

然后,当您想要开始动画时(必须在布局视图后完成):

wipeAnimationView.setVisibility(View.VISIBLE);
wipeAnimationView.setTranslationX(-wipeAnimationView.getWidth());
wipeAnimationView.animate().translationX(0.0f).start();

重要的是要注意,如果您在布局屏幕之前启动动画,则视图的宽度将为0并且它将无效。你应该view.post(() -> runAnimation());