package com.xiaoxuan.demo.tv.widget.view;

import android.view.View;
import android.view.ViewGroup;

public class TvViewBring
{
    
    private int position = 0;
    
    public TvViewBring()
    {
    }
    
    public TvViewBring(ViewGroup vg)
    {
        vg.setClipChildren(false);
        vg.setClipToPadding(false);
    }
    
    public void bringChildToFront(ViewGroup vg, View child)
    {
        position = vg.indexOfChild(child);
        if (position != -1)
        {
            vg.postInvalidate();
        }
    }
    
    /**
     * 此函数 dispatchDraw 中调用. <br>
     * 原理就是和最后一个要绘制的view,交换了位置. <br>
     * 因为dispatchDraw最后一个绘制的view是在最上层的. <br>
     * 这样就避免了使用 bringToFront 导致焦点错乱问题. <br>
     */
    public int getChildDrawingOrder(int childCount, int i)
    {
        if (position < 0)
        {
            return i;
        }
        if (i < (childCount - 1))
        {
            if (position == i)
                i = childCount - 1;
        }
        else
        {
            if (position < childCount)
                i = position;
        }
        return i;
    }
    
}