android–applyTransformation用interpolatedTime == 1调用两次

android–applyTransformation用interpolatedTime == 1调用两次,第1张

概述我有一个ListView,其项目需要与动画折叠,然后删除.我使用动画来折叠项目,在完成折叠后,我从ListView中删除项目(通过从数据列表中删除它并调用notifyDataSetChanged).要检测动画是否完成,请检查applyTransformation方法中的interpolatedTime==1.0.问题是applyTransformation被`in

我有一个ListVIEw,其项目需要与动画折叠,然后删除.我使用动画来折叠项目,在完成折叠后,我从ListVIEw中删除项目(通过从数据列表中删除它并调用notifyDataSetChanged).要检测动画是否完成,请检查applytransformation方法中的interpolatedTime == 1.0.问题是applytransformation被`interpolatedTime’== 1调用两次,所以我不能真正依赖它(否则我可以删除两个项而不是一个).为什么会这样?这是我的一些代码:

public static voID collapseAndDelete(final VIEw v, final ArrayList<AlarmClock> alarmClockArrayList,                                     final AlarmsArrayAdapter adapter, final int position) {    final int initialHeight = v.getMeasuredHeight();    Animation a = new Animation() {        @OverrIDe        protected voID applytransformation(float interpolatedTime, transformation t) {            if (interpolatedTime == 1) {                alarmClockArrayList.remove(position);                adapter.notifyDataSetChanged();            } else {                v.getLayoutParams().height = initialHeight - (int) (initialHeight * interpolatedTime);                v.requestLayout();                v.setAlpha(1.0f - interpolatedTime);            }        }        @OverrIDe        public boolean willChangeBounds() {            return true;        }    };    a.setDuration(400);    v.startAnimation(a);}

解决方法:

实现动画侦听器以捕获最终回调

r.setAnimationListener(new OAnimationListener(this));

班级的例子:

public class OAnimationListener implements AnimationListener{    private MyVIEw vv;    public OAnimationListener(MyVIEw vv) {        // Todo auto-generated constructor stub        this.vv = vv;    }    @OverrIDe    public voID onAnimationStart(Animation animation) {        // Todo auto-generated method stub    }    @OverrIDe    public voID onAnimationRepeat(Animation animation) {        // Todo auto-generated method stub    }    @OverrIDe    public voID onAnimationEnd(Animation animation) {        if (vv != null)            vv.stopAnim(2); //or any wanted callback    }}

别忘了设置这个:

r.setRepeatCount(0);                r.setFillAfter(true);
总结

以上是内存溢出为你收集整理的android – applyTransformation用interpolatedTime == 1调用两次全部内容,希望文章能够帮你解决android – applyTransformation用interpolatedTime == 1调用两次所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1117320.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存