TranslateAnimation动画结束后控件移动位置

TranslateAnimation仅提供视觉上的移动效果,不改变控件实际位置。通过setFillBefore和setFillAfter控制动画结束状态。在示例中,点击按钮btn,控件ll_all将沿Y轴平移height,并在动画结束时通过修改LayoutParams使其停留在新位置。同时提到可通过设置View.GONE和View.VISIBLE来控制控件的可见性以改变布局。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用TranslateAnimation并不会让控件的位置真正变化,只是视觉效果。
使用setFillBefore,setFillAfter控制动画结束时是否停留在第一帧/最后一帧。

使用动画效果,点击按钮btn,控件ll_all上下平移height并最终移到该位置。 注意,这里ll_all控件是放在Framelayout中的。
<pre class="java" name="code">TranslateAnimation ta = new Trandlateanimation(0,0,0,height);// 原来X坐标不动,Y坐标从0处平移height。

ta.setDuration(500);动画持续0.5秒


ta.setAnimationListener(new AnimationListener() {//动画开始/重复/结束的监听事件
   @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) {
    // TODO Auto-generated method stub
    
    btn.clearAnimation();
	FrameLayout.LayoutParams params = (FrameLayout.LayoutParams) ll_all.getLayoutParams();
    params.setMargins(ll_all.getLeft(), ll_all.getTop() + height,
      0, 0);// 改变位置,这里是左右不变,上下平移height高度
    ll_all.setLayoutParams(params);
   }
  });
btn.startAnimation(ta);



还可以使用view.Gone,view.VISIABLE来控制控件的位置,参考移动pad项目,设置图片为GONE/VISIBLE时,两个按钮自动就变换到指定位置了.

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值