翻译动画隐藏在其他视图后面

时间:2015-05-20 13:43:14

标签: android android-layout animation android-linearlayout translate-animation

我在相对布局中有两个线性布局。每个线性布局都有三个图片。形成一个图片网格,三个图片水平放置在第一个线性布局中,三个放在第二个上面的下面。如下图所示

images 1,2,3 are in top linear layout and 4,5,6 in bottom linear layout

我的网格xml代码是:

<RelativeLayout
    android:id="@+id/picturesLayout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_below="@+id/titleCaption"
    android:layout_marginLeft="20dp"
    android:layout_marginRight="20dp"
    android:layout_marginTop="10dp" >


    <LinearLayout
        android:id="@+id/llimages"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:layout_alignLeft="@+id/ivPrimaryProfile"
        android:layout_alignRight="@+id/ivPrimaryProfile"
        android:layout_below="@+id/ivPrimaryProfile"
         android:layout_marginTop="5dp"

        >

        <RelativeLayout 
android:layout_width="60dp"
android:layout_height="60dp"
android:id="@+id/rl2" 
android:gravity="center"
>

         <ImageView
        android:id="@+id/ivProfile2"
        android:layout_width="60dp"
        android:layout_height="60dp"

        android:layout_gravity="center"

        android:scaleType="centerCrop"
        android:src="@drawable/addphoto" />

         <ImageView
        android:id="@+id/ivCross2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignTop="@+id/ivProfile2"
        android:src="@drawable/cross_white"
        android:visibility="gone" />

         </RelativeLayout>
         <View 
android:layout_width="wrap_content"
android:layout_height="60dp"
android:layout_weight="1"
             />
          <RelativeLayout 
android:layout_width="60dp"
android:layout_height="60dp"
android:id="@+id/rl3" 
android:gravity="center"
>
    <ImageView
        android:id="@+id/ivProfile3"
        android:layout_width="60dp"
        android:layout_height="60dp"

        android:layout_gravity="center"



        android:scaleType="centerCrop"
        android:src="@drawable/addphoto" />
    <ImageView
        android:id="@+id/ivCross3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/ivProfile3"
        android:layout_alignTop="@+id/ivProfile3"
        android:src="@drawable/cross_white"
        android:visibility="gone" />
    </RelativeLayout>
    <View 
android:layout_width="wrap_content"
android:layout_height="60dp"
android:layout_weight="1"
             />
<RelativeLayout 
android:layout_width="60dp"
android:layout_height="60dp"
 android:id="@+id/rl4" 
android:gravity="center"
>
    <ImageView
        android:id="@+id/ivProfile4"
        android:layout_width="60dp"
        android:layout_height="60dp"

        android:layout_gravity="center"



        android:scaleType="centerCrop"
        android:src="@drawable/addphoto" />
    <ImageView
        android:id="@+id/ivCross4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/ivProfile4"
        android:layout_alignTop="@+id/ivProfile4"
        android:src="@drawable/cross_white"
        android:visibility="gone" />
        </RelativeLayout>


    </LinearLayout>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:layout_alignLeft="@+id/ivPrimaryProfile"
        android:layout_alignRight="@+id/ivPrimaryProfile"
        android:layout_below="@+id/llimages"
         android:layout_marginTop="5dp"

        >

        <RelativeLayout 
android:layout_width="60dp"
android:layout_height="60dp"
 android:id="@+id/rl5" 
android:gravity="center"
>
         <ImageView
        android:id="@+id/ivProfile5"
        android:layout_width="60dp"
        android:layout_height="60dp"

        android:layout_gravity="center"

        android:scaleType="centerCrop"
        android:src="@drawable/addphoto" />

         <ImageView
        android:id="@+id/ivCross5"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/ivProfile5"
        android:layout_alignTop="@+id/ivProfile5"
        android:src="@drawable/cross_white"
        android:visibility="gone" />
         <View 
android:layout_width="wrap_content"
android:layout_height="60dp"
android:layout_weight="1"
             />
                    </RelativeLayout>

<RelativeLayout 
android:layout_width="60dp"
android:layout_height="60dp"
 android:id="@+id/rl6" 
android:gravity="center"
>
    <ImageView
        android:id="@+id/ivProfile6"
        android:layout_width="60dp"
        android:layout_height="60dp"

        android:layout_gravity="center"



        android:scaleType="centerCrop"
        android:src="@drawable/addphoto" />
    <ImageView
        android:id="@+id/ivCross6"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/ivProfile6"
        android:layout_alignTop="@+id/ivProfile6"
        android:src="@drawable/cross_white"
        android:visibility="gone" />
    </RelativeLayout>
    <View 
android:layout_width="wrap_content"
android:layout_height="60dp"
android:layout_weight="1"
             />
<RelativeLayout 
android:layout_width="60dp"
android:layout_height="60dp"
 android:id="@+id/rl7" 
android:gravity="center"
>
    <ImageView
        android:id="@+id/ivProfile7"
        android:layout_width="60dp"
        android:layout_height="60dp"

        android:layout_gravity="center"



        android:scaleType="centerCrop"
        android:src="@drawable/addphoto" />
    <ImageView
        android:id="@+id/ivCross7"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/ivProfile7"
        android:layout_alignTop="@+id/ivProfile7"
        android:src="@drawable/cross_white"
        android:visibility="gone" />
        </RelativeLayout>

    </LinearLayout>


</RelativeLayout>

问题:

我希望图像4,5,6转换为image1位置。这正在发生但问题是,当我翻译4,5,6图像中的任何一个时,它们会在image1后面翻译(翻译动画隐藏在顶部线性布局后面)

我的翻译动画是:

TranslateAnimation anim = new TranslateAnimation( 0, toX - fromX , 0, toY -        fromY );

    anim.setDuration(500);
    anim.setFillAfter( true );

    view.startAnimation(anim);

我确定翻译动画代码没有问题。我的布局有问题

3 个答案:

答案 0 :(得分:1)

看看setZAdjustment

Constant    Value   Description
normal      0       The content being animated be kept in its current Z order.
top         1       The content being animated is forced on top of all other content for the duration of the animation.
bottom     -1       The content being animated is forced under all other content for the duration of the animation.

答案 1 :(得分:0)

error: open("nohup.out"): Permission denied error: unable to index file nohup.out fatal: adding files failed setZAdjustmentandroid:translationZ仅适用于API 21(Lollipop)及更高版本。因此,最好将动画视图放在<{1}}内的XML中的顶视图下面。

然后将顶视图背景设置为与窗口相同的颜色。使用android:elevation设置默认颜色。然后将动画视图转换为顶视图,它将创建一个动画视图在顶视图后面消失的效果。我希望这是有道理的。

答案 2 :(得分:0)

android:zAdjustment works only with window animations(自开始以来,API 1)

android:translationZandroid:elevation自API 21开始起作用

View&#34;排名靠前&#34;是最后绘制的,所以最后是XML(特定ViewGroup的最后一个孩子),即使是动画/翻译。

RelativeLayout内定位/排序很容易 - 使用父级边框和其他视图对齐。

对于LinearLayout,您应该子类化并覆盖方法getChildDrawingOrder,这也适用于所有其他ViewGroup子类(如果您更喜欢而不是对齐,则均为RelativeLayout):< / p>

@Override
protected int getChildDrawingOrder(int childCount, int i) {
    return (childCount - 1) - i; //reversed drawing order
}
不要忘记在构造函数中添加这一行:

setChildrenDrawingOrderEnabled(true); //required!

对于i=0,您应该返回第一个孩子View的位置来绘制,i=childCount-1返回位置View最后绘制(将在其他位置之上)。默认情况下,方法返回i,因此首先绘制XML中的第一个View

请注意,您无法使用translationX(或Y)并移动&#34;在&#34;之外ViewGroup(父)界限