我在相对布局中有两个线性布局。每个线性布局都有三个图片。形成一个图片网格,三个图片水平放置在第一个线性布局中,三个放在第二个上面的下面。如下图所示
我的网格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);
我确定翻译动画代码没有问题。我的布局有问题
答案 0 :(得分:1)
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
或setZAdjustment
和android:translationZ
仅适用于API 21(Lollipop)及更高版本。因此,最好将动画视图放在<{1}}内的XML中的顶视图下面。
然后将顶视图背景设置为与窗口相同的颜色。使用android:elevation
设置默认颜色。然后将动画视图转换为顶视图,它将创建一个动画视图在顶视图后面消失的效果。我希望这是有道理的。
答案 2 :(得分:0)
android:zAdjustment
works only with window animations(自开始以来,API 1)
android:translationZ
和android: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
(父)界限