控件进行Animation动画后失去焦点的几个解决办法

本文介绍了当使用View Animation进行控件动画后导致控件失去焦点的问题,提供三种解决方案:1) 动画结束后通过requestFocus()强制获取焦点;2) 修改LayoutParams设置控件的新位置以确保焦点;3) 使用属性动画直接移动控件位置,简化焦点获取流程。

     View Animation及控件动画就是我们常用的平移,旋转,渐变,缩放,这种动画只能实现了控件动画效果,而控件的位置不变,这样动画后的控件就无法获取焦点。

      1.我们可以在动画后强制给控件焦点:

mHiddenAction.setAnimationListener(new AnimationListener() {
@Override
public void onAnimationStart(Animation arg0) {
// TODO Auto-generated method stub

动画开始时执行的方法
}
@Override
public void onAnimationRepeat(Animation arg0) {
// TODO Auto-generated method stub
}
@Override
public void onAnimationEnd(Animation arg0) {
// TODO Auto-generated method stub
动画结束时执行的方法,我们可以在这通过  控件.requestFocus();来强制获取焦点。
}
});


      2.也是在上面那个方法中,在动画结束时可以通过下面的方法将控件移动后动画后的位置,这样就可以设置焦点了。

          RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams)xxxx.getLayoutParams();
          params.setMargins(left, top, right, bottom));// 自定义坐标来放置你的控件
          mTextView .setLayoutParams(params);//mTextView 为你移动的控件


      3.就是用属性动画实现,属性动画与控件动画不同,它可以直接移动控件的位置,这样控件获取焦点就很简单了。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值