【问题标题】:listview animation fadeout then adding new rowlistview 动画淡出然后添加新行
【发布时间】:2015-04-04 16:49:55
【问题描述】:

大家好,我正在尝试在我的 android 待办事项列表应用程序中制作淡出动画。我有这个代码

public void removeToDo(){
myItems.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
    @Override
    public boolean onItemLongClick(AdapterView<?> parent,  View view, final int position, long id) {



        ObjectAnimator anim = ObjectAnimator.ofFloat(view, View.ALPHA, 0);

        anim.addListener(new AnimatorListenerAdapter() {
            @Override
            public void onAnimationEnd(Animator animation) {
                items.remove(position);
                itemsAdapter.notifyDataSetChanged();
            }
        });

        anim.start();

        return true;
    }
});

}

是的,它的淡出很漂亮,但问题是当我添加一个新项目时,它会重复使用已经淡出该项目的行,所以结果是我在添加一个新项目时会有一个新行,但上面没有文本。

http://i.stack.imgur.com/o6wPz.jpg

请帮助我只是一个新手:)

【问题讨论】:

    标签: android listview animation


    【解决方案1】:

    试试这个解决方案。 ObjectAnimator 不可靠,请使用 Animation 而不是这个。

    listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
                @Override
                public boolean onItemLongClick(AdapterView<?> parent, final View view, final int position, long id) {
                    final Adapter adapter = (Adapter) parent.getAdapter();
    
                    Animation fadeOut = new AlphaAnimation(1, 0);
                    fadeOut.setInterpolator(new AccelerateInterpolator());
                    fadeOut.setDuration(500);
                    fadeOut.setAnimationListener(new Animation.AnimationListener() {
                        @Override
                        public void onAnimationStart(Animation animation) {
    
                        }
    
                        @Override
                        public void onAnimationEnd(Animation animation) {
                            adapter.pointItems.remove(position);
                            adapter.notifyDataSetChanged();
                        }
    
                        @Override
                        public void onAnimationRepeat(Animation animation) {
    
                        }
                    });
    
                    view.startAnimation(fadeOut);
    
                    return true;
                }
            });
    

    【讨论】:

    • 感谢它的工作原理。我还有一些可以在 RecyclerView 中完成并使用 ObjectAnimator 的 cmets?
    • 我只用过动画,推荐给你。
    猜你喜欢
    • 2022-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-07
    • 2020-12-30
    相关资源
    最近更新 更多