滚动视图时出现闪烁问题

问题描述:

我在尝试将基于Marc Reichelt的工作转换为使用ListAdapter备份的RealViewSwitcher。包含多个视图的可水平滚动的ViewGroup,其中一个视图一次可见。滚动视图时出现闪烁问题

我目前的解决方案一次最多添加3个视图到ViewGroup。一个(在中间)是可见的和两个缓冲视图,每边一个。当用户向右滚动时,最左边的视图被移除,并且新的视图被添加到右边。为了使ViewGroup可以左右滚动,我需要始终关注中间的视图。所以,当切换视图时,我会正确安排视图,并将焦点放在中间的视图上。这种方法的问题是,当视图排列时,它会产生闪烁效果。让我说明与图片,我画的问题: problem scenario

A,B和C都在我的ViewGroup中三种不同的视图(在ListAdapter备份ViewGroup中含有较多的元素,虽然,但只有三个在同一时间被加载)。较大的矩形代表目前焦点所在的位置。我滚动到左边,并在(3)我对齐最左边视图的目的地。然后我重新安排视图。即在左侧添加一个新的视图X,并将右侧的视图C移除,将A置于中间。最后,我以中间的视图为中心(A),这是我从一开始就滚动的视图。因此,当我在最后重新安排视图并居中放置A时,之前位于中间的视图(本例中为B)的内容闪烁几毫秒,从而引起闪烁效应,是不需要的。任何想法,我怎么可以解决这个问题?

问题已解决。这个问题似乎与更换ViewGroup中的孩子然后致电scrollTo方法有关。如果我使用Scroller移动到正确的视图/子,则闪烁问题会消失。