将Alpha渐变应用于整个ViewGroup

时间:2016-03-29 11:29:59

标签: android gradient alpha

我试图在ViewGroup上制作渐变alpha。

我知道我可以使用GradientDrawable,但这只适用于背景。

我需要将alpha应用于整个视图,包括子视图。

就像我可以将alpha设置为viewGroup一样:

_relativeLayout.setAlpha(1);

如果我设置了背景渐变alpha,则它不适用于它的子视图。

我怎样才能获得相同的效果但是使用渐变?

提前致谢。

1 个答案:

答案 0 :(得分:1)

您可以实现一个简单的DFS算法来实现它

void setAlphaTransitively(View view, float alpha) {
    if (view == null) {
        return;
    }

    view.setAlpha(alpha);
    if (view instanceof ViewGroup) {
        ViewGroup viewGroup = (ViewGroup) view;
        for (int index = 0; index < viewGroup.getChildCount(); index++) {
            View child = viewGroup.getChildAt(index);
            setAlphaTransitively(child, alpha);
        }
    }
}