Đoạn mã dưới đây là nỗ lực của tôi để gửi mMyView tới mặt trước hoặc mặt sau của tập con của mPivotParent để nó sẽ được hiển thị trên đầu hoặc sau những người khác. Ẩn chế độ xem sẽ không phải đủ trong trường hợp của tôi.Cách điều chỉnh thứ tự z theo dõi theo chương trình
mPivotParent là FrameLayout.
Nhìn vào mPivotParent.mChildren
cho thấy mã của tôi bên dưới "hoạt động" ở chỗ thứ tự đang được đặt chính xác. Tuy nhiên, nó không có tác động đến thứ tự z. Không chỉ điều này, nhưng tốc độ khung hình được tích lũy chậm hơn và chậm hơn nhiều lần mã định vị lại được gọi. Có tổng cộng 4 trẻ em và mPivotParent.mChildrenCount
vẫn ở mức 4 trong suốt như mong đợi.
Tôi đang nhắm mục tiêu API Cấp 7.
@Override
public boolean onTouchEvent(MotionEvent event) {
Display display = getWindowManager().getDefaultDisplay();
float x = event.getRawX();
float sWidth = (int)display.getWidth();
float xLerpFromCenter = ((x/sWidth) - .5f) * 2.f; // [-1, 1]
mRotateAnimation.mfLerp = xLerpFromCenter;
if(xLerpFromCenter < -0.2f && mPivotParent.getChildAt(0) != mMyView)
{
mPivotParent.removeView(mMyView);
mPivotParent.addView(mMyView, 0);
refreshEverything();
}
else if(xLerpFromCenter > 0.2f && mPivotParent.getChildAt(0) == mMyView)
{
mPivotParent.removeView(mMyView);
mPivotParent.addView(mMyView, mPivotParent.getChildCount() - 1);
refreshEverything();
}
return super.onTouchEvent(event);
}
private void refreshEverything()
{
for(int i = 0; i < mPivotParent.getChildCount(); ++i)
{
mPivotParent.getChildAt(i).invalidate();
mPivotParent.getChildAt(i).requestLayout();
}
mPivotParent.invalidate();
mPivotParent.requestLayout();
}