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