webview 在移动时在其他布局上绘制白色轨迹

webview draw white trace over other layout when moving

我正在嵌套布局中移动网络视图。 webview 位于视图的其他部分后面(首先绘制)。当我旋转它并且一个角进入布局的另一部分(在 webview 顶部)下方时,应该覆盖 webview 的视图部分变为白色。 我在移动 web 视图时通过重绘视图设法纠正了这个错误。但是,我现在正在尝试使用动画。我无法在动画期间重绘整个事物(或者我没有找到如何做),所以现在在动画持续期间另一个视图上留下了丑陋的白色痕迹。我怎样才能搭上它?

这是我的 XML 布局:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"
android:weightSum="1"
android:background="#00000000"
android:id="@+id/root">


<FrameLayout
    android:layout_width="match_parent"
    android:layout_height="fill_parent"
    android:layout_gravity="center_horizontal"
    android:layout_alignParentLeft="false"
    android:layout_marginLeft="0dp"
    android:paddingLeft="0dp"
    android:paddingRight="0dp"
    android:id="@+id/AdContent"
    android:layout_above="@+id/FollowAd"
    android:layout_below="@+id/DateView">

    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:id="@+id/SlideBg"
        android:layout_gravity="center"
        android:visibility="visible">

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:id="@+id/DismissBg"
            android:scaleType="centerInside"
            android:src="@drawable/icon_widget_unlock_ad_a"
            android:background="#ff6eff21" />

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:id="@+id/FollowBg"
            android:scaleType="centerInside"
            android:src="@drawable/icon_widget_unlock_a"
            android:background="#ff6eff21" />
    </LinearLayout>

    <WebView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/webView"
        android:layout_gravity="center"
        android:background="#00000000"
        android:theme="@android:style/Theme.Translucent" />
</FrameLayout>

<TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:text="Large Text"
    android:id="@+id/DateView"
    android:background="#ff000000"
    android:layout_alignParentTop="true"
    android:maxLines="1"
    android:gravity="center_horizontal" />

<SurfaceView
    android:layout_width="match_parent"
    android:layout_height="60dp"
    android:id="@+id/surfaceView"
    android:layout_alignBottom="@+id/NavigLogo"
    android:layout_below="@+id/AdContent"
    android:background="#ff000000"
    android:layout_alignParentBottom="true" />

<ImageView
android:layout_width="50dp"
android:layout_height="40dp"
android:id="@+id/FollowAd"
android:layout_alignParentEnd="false"
android:layout_alignParentRight="false"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="false"
android:layout_alignParentBottom="true"
android:paddingLeft="10dp"
android:layout_marginTop="20dp"
android:layout_marginBottom="20dp"
android:src="@drawable/icon_widget_unlock_w"/>

<ImageView
    android:layout_width="50dp"
    android:layout_height="40dp"
    android:id="@+id/DismissAd"
    android:layout_alignParentEnd="false"
    android:layout_alignParentRight="true"
    android:layout_alignParentLeft="false"
    android:layout_alignParentStart="false"
    android:layout_alignParentBottom="true"
    android:paddingRight="10dp"
    android:layout_marginBottom="20dp"
    android:src="@drawable/icon_widget_unlock_ad_w"/>

<ImageView
    android:layout_width="60dp"
    android:layout_height="60dp"
    android:id="@+id/NavigLogo"
    android:src="@drawable/logo_rond"
    android:layout_alignParentBottom="true"
    android:layout_centerHorizontal="true"
    android:layout_marginBottom="10dp" />

我设法解决了这个错误。

RotateAnimation rotateAnimationWeb = new RotateAnimation([...]){
        @Override
        protected void applyTransformation(float i, Transformation t){
            super.applyTransformation(i, t);
            DateView.invalidate();
        }
    };

我重写了旋转函数的 applyTransformation 函数,这样每次旋转完成时都会重新绘制 Dateview。但这不是真正的解决方案,因为问题仍然存在,这意味着在动画之上添加更多工作,这可能很繁重。