移动

时间:2015-05-26 13:18:04

标签: android android-layout 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" />

1 个答案:

答案 0 :(得分:0)

我设法解决了这个bug。

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

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