首页 > 其他 > 详细

TranslateAnimation动画结束后View的位移

时间:2014-04-03 23:35:39      阅读:707      评论:0      收藏:0      [点我收藏+]

使用TranslateAnimation特效后view会回到原来的位置,使用setFillAfter(true)后view位置不会返回但是view的实际位置还是原来的。

可以设置setAnimationListener在动画效果结束之后再将view进行位移,但是onAnimationEnd是在动画效果执行之后再执行的所以位移

view会造成布局闪一下可以使用clearAnimation()可以解决问题

bubuko.com,布布扣
        TranslateAnimation translateAnimation =  new TranslateAnimation(0.0f, 0.0f,0.0f,-60.0f); 
        translateAnimation.setDuration(500);
        translateAnimation.setAnimationListener(new Animation.AnimationListener() {
            @Override
            public void onAnimationStart(Animation animation) {
            }
            
            @Override
            public void onAnimationRepeat(Animation animation) {
            }
            
            @Override
            public void onAnimationEnd(Animation animation) {
                        view.clearAnimation();
                int left = view.getLeft();
                int top = view.getTop()-60;
                int width = view.getWidth();
                int height = view.getHeight();
                view.layout(left, top, left+width, top+height);

            }
        });    
bubuko.com,布布扣

参考:http://www.cnblogs.com/eoiioe/archive/2012/08/29/2662546.html

http://stackoverflow.com/questions/8411903/android-translateanimation-on-button-flickers

PS:网上有人测出此方法在2.3中可能会异常

http://www.eoeandroid.com/forum.php?mod=redirect&goto=findpost&ptid=63857&pid=642522

另付方法如下

bubuko.com,布布扣
        TranslateAnimation translateAnimation =  new TranslateAnimation(0.0f, 0.0f,0.0f,-60.0f); 
        translateAnimation.setDuration(500);
        translateAnimation.setAnimationListener(new Animation.AnimationListener() {
            @Override
            public void onAnimationStart(Animation animation) {
            }
            
            @Override
            public void onAnimationRepeat(Animation animation) {
            }
            
            @Override
            public void onAnimationEnd(Animation animation) {
                int left = view.getLeft();
                int top = view.getTop()-60;
                int width = view.getWidth();
                int height = view.getHeight();
                view.layout(left, top, left+width, top+height);
                TranslateAnimation anim = new TranslateAnimation(0,0,0,0);
                view.setAnimation(anim);
            }
        });
bubuko.com,布布扣

最后还有其他解决方法,有兴趣的自己看看http://bbs.csdn.net/topics/360035885

 

TranslateAnimation动画结束后View的位移,布布扣,bubuko.com

TranslateAnimation动画结束后View的位移

原文:http://www.cnblogs.com/swenze/p/3643445.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!