0

У меня есть две линейные макеты внутри относительной компоновки. Каждая линейная компоновка имеет три изображения в ней. Она образует сетку изображений с тремя картинками, размещенными горизонтально в первой линейной компоновке, а три во втором ниже .Как нижеПеревести Анимация прячется за другим видом

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 изображений, они переводится за изображение1 (перевод анимации скрывается за верхней линейной компоновкой)

Моя перевод анимация дано:

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

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

    view.startAnimation(anim); 

Я уверен, перевод анимации код не имеет issue.something неправильно с моей макет

ответ

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. 
0

setZAdjustment или android:translationZ и android:elevation предназначены только для API 21 (Lollipop) и выше. Поэтому лучше разместить анимированный вид ниже вид сверху в XML внутри LinearLayout.

Затем установите верхний вид фона того же цвета, что и окно. Используйте android:background="?android:attr/windowBackground", чтобы установить цвет по умолчанию. Затем переведите анимированный вид в верхний вид и создайте эффект, который анимированное представление исчезнет за верхним видом. Я надеюсь в этом есть смысл.

0

android:zAdjustmentworks only with window animations (присутствует с beggining, API 1)

android:translationZ и android:elevation работает с API 21

View "сверху" последний обращается, так последний в XML (последний потомок конкретного ViewGroup) , даже при анимации/переводе.

Позиционирование/заказ внутри RelativeLayout Это легко - используйте выравнивание по родительским краям и другим представлениям внутри родителя.

Для LinearLayout следует подкласс и метод коррекции getChildDrawingOrder, который применим и для всех других ViewGroup подклассов (даже RelativeLayout если вы предпочитаете вместо выравнивания):

@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, поэтому первый View в XML является первым обращается

к сведению, что вы не можете использовать translationX (или Y) и двигаться «за пределами» ViewGroup (родитель) ограничивает