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。但这不是真正的解决方案,因为问题仍然存在,这意味着在动画之上添加更多工作,这可能很繁重。
我正在嵌套布局中移动网络视图。 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。但这不是真正的解决方案,因为问题仍然存在,这意味着在动画之上添加更多工作,这可能很繁重。