Android - 解决软件弹窗遮盖View的问题

页面实现接口

implements IkeyBoardCallback,详细资料见结尾注记。

初始化:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_xx);
    getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
    KeyBoardEventBus.getDefault().register(this);
}

销毁:

@Override
protected void onDestroy() {
    super.onDestroy();
    KeyBoardEventBus.getDefault().unregister(this);
}

以下是实现方式方法:

private static final long ANIM_DURATION = 999;

private void goUp(View view, View view2) {
    ObjectAnimator transYAnim = ObjectAnimator.ofFloat(view, "translationY", 0, -view2.getHeight() * 2);
    transYAnim.setDuration(ANIM_DURATION);
    transYAnim.start();
}

/**
 * 缩小
 */
public void zoomOut(final View view, float scale, float dist) {
    view.setPivotY(0);
    view.setPivotX(view.getWidth() / 2);
    AnimatorSet mAnimatorSet = new AnimatorSet();
    ObjectAnimator mAnimatorScaleX = ObjectAnimator.ofFloat(view, "scaleX", 1.0f, scale);
    ObjectAnimator mAnimatorScaleY = ObjectAnimator.ofFloat(view, "scaleY", 1.0f, scale);
    ObjectAnimator mAnimatorAlpha = ObjectAnimator.ofFloat(view, "alpha", 1.0f, 0.8f, 0.6f, 0.4f, 0.2f, 0.0f);

    mAnimatorSet.playTogether(mAnimatorAlpha, mAnimatorScaleX, mAnimatorScaleY);
    mAnimatorSet.setDuration(ANIM_DURATION);
    mAnimatorSet.start();
}

private void goDown(View view, View view2) {
    ObjectAnimator transYAnim = ObjectAnimator.ofFloat(view, "translationY", -view2.getHeight() * 2, 0);
    transYAnim.setDuration(ANIM_DURATION);
    transYAnim.start();
}

/**
 * 放大
 */
public void zoomIn(final View view, float scale) {
    view.setPivotY(0);
    view.setPivotX(view.getWidth() / 2);
    AnimatorSet mAnimatorSet = new AnimatorSet();

    ObjectAnimator mAnimatorScaleX = ObjectAnimator.ofFloat(view, "scaleX", scale, 1.0f);
    ObjectAnimator mAnimatorScaleY = ObjectAnimator.ofFloat(view, "scaleY", scale, 1.0f);
    ObjectAnimator mAnimatorAlpha = ObjectAnimator.ofFloat(view, "alpha", 0.0f, 0.2f, 0.4f, 0.6f, 0.8f, 1.0f);

    mAnimatorSet.playTogether(mAnimatorAlpha, mAnimatorScaleX, mAnimatorScaleY);
    mAnimatorSet.setDuration(ANIM_DURATION);
    mAnimatorSet.start();
}

@Override
public void onKeyBoardShow() {
    //缩小动画
    zoomOut(mImage, 0f, 0f);
    //上移动画
    goUp(mlinLogin, mImage);
}

@Override
public void onKeyBoardHidden() {
    //放大动画
    zoomIn(mImage, 0f);
    goDown(mlinLogin, mImage);
}

注记:

资源链接:https://download.csdn.net/download/qq_26280383/17180230

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

QY’UniverseSpace

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值