Webview移动时在其他布局上绘制白色描线



我正在将webview移动到嵌套布局中。webview位于视图的其他部分后面(首先绘制)。当我旋转它时,一个角在布局的另一部分(webview的顶部)下,视图的一部分应该覆盖webview变成白色。当我移动webview时,我设法通过重新绘制视图来纠正这个错误。然而,我现在正在尝试使用动画。我无法在动画期间重新绘制整个东西(或者我不知道如何做),所以现在在动画期间,另一个视图上留下了一个丑陋的白色痕迹。我怎么才能摆脱它呢?

这是我的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" />

我设法解决了这个bug。

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

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

最新更新