El código siguiente es mi intento de enviar mMyView a la parte delantera o la parte trasera del conjunto de los niños de mPivotParent por lo que se representará en la parte superior o detrás de los otros. Ocultar la vista se no ser suficiente en mi caso.Cómo ajustar mediante programación orden z de Vistas
mPivotParent es un FrameLayout.
En cuanto a mPivotParent.mChildren
muestra que mi código de abajo "funciona" en la que el orden está siendo ajustado correctamente. Sin embargo, no tiene impacto en el orden z. No solo esto, sino que la velocidad de fotogramas se vuelve acumulativamente más lenta y lenta cuanto más veces se llama al código de reposicionamiento. Hay 4 niños en total y mPivotParent.mChildrenCount
permanece en 4 durante todo el tiempo esperado.
estoy focalización API Nivel 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();
}