Jar*_*ith 5 android view android-framelayout
下面的代码是我尝试将mMyView发送到mPivotParent的子集的前面或后面,因此它将呈现在其他人的顶部或后面.隐藏视图将不会在我的情况就足够了.
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();
}
Run Code Online (Sandbox Code Playgroud)
部分解决方案
这是一个有点低效的黑客,但它适用于我的目的,即采取顶部项目并将其发送到后面,使所有其他项目保持相同的顺序.
private void putFrontAtBack()
{
for(int i = 0; i < mPivotParent.getChildCount() - 1; ++i)
{
mPivotParent.getChildAt(0).bringToFront();
}
refreshEverything();
}
Run Code Online (Sandbox Code Playgroud)
注意:这在任意重新排序的一般情况下不起作用.
| 归档时间: |
|
| 查看次数: |
9067 次 |
| 最近记录: |