以下のコードは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();
}