以下代码是我尝试将mMyView发送到mPivotParent的子集的前面或后面,以便将其呈现在其他顶部或后面。在我的情况下,隐藏视图而不是就足够了。如何以编程方式调整视图的z顺序
mPivotParent是一个FrameLayout。
看着mPivotParent.mChildren
显示我的代码在“工作”,因为排序设置正确。但它对z顺序没有影响。不仅如此,更重要的是,调用代码被调用的次数越多,越慢,越慢。如预期的那样,总共有4个孩子和mPivotParent.mChildrenCount
保持在4。
我针对API级别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();
}