【问题标题】:Preventing overlapping layout animations on a ListView防止在 ListView 上重叠布局动画
【发布时间】:2015-07-20 21:00:15
【问题描述】:

我有一个listView,它有一个布局动画,每次一个淡入每个项目。

  lac = new LayoutAnimationController(AnimationUtils.loadAnimation(this, R.anim.listview_2), 0.25f);
    listOptions.setLayoutAnimation(lac);
    listOptions.setLayoutAnimationListener(new Animation.AnimationListener() {
        @Override
        public void onAnimationStart(Animation animation) {
        }

        @Override
        public void onAnimationEnd(Animation animation) {
        }

        @Override
        public void onAnimationRepeat(Animation animation) {
        }
    });

当用户选择一个项目时,listView 会显示一组新的项目 - 每个项目一次淡入一个。但是,如果当用户选择一个项目并导致新集合淡入时,项目的淡入动画尚未完成,则这些动画重叠导致并且在新的淡入时可以看到以前的项目。看起来就像ListView 上的闪烁故障一样。

onItemClick(),即使我打电话给listView.getLayoutAnimation.getAnimation().cancel();,我仍然会遇到同样的闪烁问题。 我也试过listView.clearAnimation();,还是不行。 我也试过:listView.setLayoutAnimation(null); 和重置。仍然没有工作。

看来我无法停止或取消动画! 我想要做的就是,onItemclick() 在我的listView 中停止动画或清空/清除listView 然后将新项目重新加载到listView 并使用动画淡入它们,没有重叠 - 因此- 没有闪烁故障。

我不想在动画完成之前禁用listView,然后重新启用,因为它会造成尴尬的长等待时间。

【问题讨论】:

    标签: android listview animation android-listview


    【解决方案1】:

    ListViews 中的动画具有挑战性,这也是 Google 发布 RecyclerView 的原因之一。但是,此视频可能会为您提供一些线索:https://www.youtube.com/watch?v=8MIfSxgsHIs

    【讨论】:

    • 这是一个有用的视频,但不一定适合我的问题。谢谢你的分享
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-24
    相关资源
    最近更新 更多