android弹出(缩放)视图焦点

时间:2015-06-20 07:31:19

标签: android animation views

我有一组观点,我想要弹出'聚焦时的屏幕;例如,你可能会在视频游戏的菜单中看到的那种东西。

为了达到这个目的,我在这些视图中添加一个onfocusChaned侦听器,在焦点上运行zoomIn动画,在失去焦点时运行zoomOut动画:

@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    ViewGroup base = (ViewGroup) this.getLayoutInflater().inflate(R.layout.gridtest, null);
    ViewGroup container = (ViewGroup) base.getChildAt(0);

    this.animZoomIn = AnimationUtils.loadAnimation(this, R.anim.zoomin);
    this.animZoomOut = AnimationUtils.loadAnimation(this, R.anim.zoomout);
    int x=0;

    for(View child:this.getViews(container))
    {
        ImageView i = (ImageView) child;
        i.setPadding(10,10,10,10);

        if(x==0) { i.setBackgroundColor(Color.RED); x++; }
        else if(x==1) {i.setBackgroundColor(Color.GREEN); x++; }
        else if(x==2) {i.setBackgroundColor(Color.BLUE); x=0; }

        i.setTag(GridActivity.TAG_EMPTY);
        i.setOnFocusChangeListener(new View.OnFocusChangeListener()
        {
            @Override
            public void onFocusChange(View v, boolean hasFocus)
            {
                if (hasFocus)
                {
                    v.startAnimation(GridActivity.this.animZoomIn);
                }
                else
                {
                    v.startAnimation(GridActivity.this.animZoomOut);
                }
            }
        });
    }

    setContentView(base);
}

zoomin.xml:

<scale
xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:zAdjustment="top"
android:fillEnabled="true"
android:fillAfter="true"
android:fromXScale="1.0"
android:toXScale="1.2"
android:fromYScale="1.0"
android:toYScale="1.1"
android:pivotX="50%"
android:pivotY="50%"
android:duration="200" />

zoomout.xml:

<scale
xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:zAdjustment="bottom"
android:fromXScale="1.2"
android:toXScale="1.0"
android:fromYScale="1.1"
android:toYScale="1.0"
android:duration="50" />

这可以在视图正确放大和缩小的情况下工作,但是视图的z顺序不会改变...所以“弹出”&#39;视图与右侧的(较小)视图重叠。

enter image description here

我尝试过使用v.bringToFront(),但似乎将焦点视图移动到父布局的末尾,而不是实际上按顺序重新排序。

(编辑) 这就是我试图复制的效果 enter image description here

0 个答案:

没有答案