下面的代码是我尝试将 mMyView 发送到 mPivotParent 的一组子项的前面或后面,因此它将呈现在其他人的顶部或后面。在我的情况下,隐藏视图是不够的。
mPivotParent 是一个 FrameLayout。
查看mPivotParent.mChildren
显示我下面的代码“有效”,因为顺序设置正确。然而它对 z 顺序没有影响。不仅如此,调用重新定位代码的次数越多,帧速率也会越来越慢。总共有 4 个孩子mPivotParent.mChildrenCount
,如预期的那样始终保持在 4 个。
我的目标是 API Level 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();
}