最近遇到一个需求,要求在登陆界面上实现点击 EditText弹出输入法之后让登陆的logo(或者标题)动态缩小,一眼看到这个这个需求就是判断软键盘弹出与否+动画实现,软键盘弹出与否在原生没有方法直接去判断,可以根据弹出键盘后布局的高度变化来判断,详情可以参考:android开发中,监听软键盘的状态(收起或者打开)
而动画效果首先想到的就是Animation和ObjectAnimator,但是这样的动画效果对于布局的大小是不会有影响的,即使logo或者title缩小但是布局仍然是一样的大小,这里我们可以用ValueAnimator + LayoutParams来实现:
private void showHideTitle(final View view, final int maxHeight, int duration, boolean isShow) {
ValueAnimator animator;
if (isShow) {
animator = ValueAnimator.ofFloat(0f, 1f);
} else {
animator = ValueAnimator.ofFloat(1f, 0f);
}
animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
float currentValue = (float) animation.getAnimatedValue();
ViewGroup.LayoutParams params = view.getLayoutParams();
params.height = (int) (currentValue * maxHeight);
view.setLayoutParams(params);
}
});
animator.setDuration(duration).start();
}
然后在代码中需要做动画的地方传入title的view,titile的大小,动画持续的时间,还有是展开动画还是缩小动画就好