Android Viewgroup:淡化/混合两个视图在彼此之上



我想在ViewGroup中从一个视图渐变到另一个视图。目前,我正在使用setAlpha做过渡,但问题是,只有一个视图正在渲染,一个是在顶部,正在淡出。

  • ViewGroup内的视图数组是z轴的顺序吗?
  • 只渲染顶视图吗?

我的layout方法是这样的:

@Override
protected void onLayout(final boolean changed, final int l, final int t, final int r, final int b) {
    L.debug("laying out {} children", this.getChildCount());
    for (int i = 0; i < this.getChildCount(); i++) {
        L.debug("layout out {}", i);
        View view = this.getChildAt(0);
        view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight());
    }
}

为什么你不想使用ViewSwitcher?它完全符合你的要求。下面是一个例子。

ViewGroup内的view-array是按z轴排列的吗?

在android中没有z轴顺序这样的东西。视图按照添加到ViewGroup的顺序绘制。先加先抽。

是否只渲染顶视图

不,android会在可视区域内绘制所有视图,即使它们被其他视图完全重叠。

我认为你应该修复这个地方this. getchildat(0)和布局所有的儿童在你的ViewGroup

最新更新