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.就是用属性动画实现,属性动画与控件动画不同,它可以直接移动控件的位置,这样控件获取焦点就很简单了。
本文介绍了当使用View Animation进行控件动画后导致控件失去焦点的问题,提供三种解决方案:1) 动画结束后通过requestFocus()强制获取焦点;2) 修改LayoutParams设置控件的新位置以确保焦点;3) 使用属性动画直接移动控件位置,简化焦点获取流程。
679

被折叠的 条评论
为什么被折叠?



