Android View Animation

 Android View  Animation

利用 view animation 实现组件的动画效果时,需要注意以下几个问题:
- view animation 的动画结束后,真实的组件还是在原来起点的位置(组件就收鼠标事件的区域没用更改),我们所看到的动画效果只是对可视部分的不断重新绘制
- setFillAfter方法的作用是设置一个动画效果执行完毕后,View对象是否保留在终止的位置
- 若我们需要将真实组件最终移动到动画结束的位置,则需要在动画结束的回调函数内,调用组件的 clearAnimation接口,来清除动画过程中对某些属性的修改
- 在调用 clearAnimation接口后,利用layout接口可改变组件的真实位置
- 若调用layout之前不调用 clearAnimation接口: setFillAfter为flase时,会出现跳闪的问题, setFillAfter为true时,会出现组件偏离正确位置的问题
具体可参考以下代码:
 private void createRelayoutAnimator(final View v, final int left, final int top,
            final int width, final int height){
                
        int xDelta = left - v.getLeft();
        int yDelta = top- v.getTop();
        TranslateAnimation tran = new TranslateAnimation(0,xDelta,0,yDelta);
        tran.setDuration(200);
        tran.setFillAfter(true);
        tran.setAnimationListener(new AnimationListener(){

            public void onAnimationEnd(Animation animation) {
                // TODO Auto-generated method stub
                v.clearAnimation();
                v.layout(left, top, left + width, top + height);
            }

            public void onAnimationRepeat(Animation animation) {
                // TODO Auto-generated method stub
                
            }

            public void onAnimationStart(Animation animation) {
                // TODO Auto-generated method stub
                
            }
            
        });
        
        v.startAnimation(tran);

    }
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值