融云 输入法弹出窗口 监听系列问题


记录开发过程


long clickTime = 0;
    private void softInputDealWith() {
        roomLiveRootView = findViewById(R.id.roomLiveRootView);
        //Activity的属性设置为可调整大小android:windowSoftInputMode="adjustResize",否则输入弹出,Activity的global layout没有变化,这种方法就无效
        roomLiveRootView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
            @Override
            public void onGlobalLayout() {
                int heightDiff = roomLiveRootView.getRootView().getHeight() - roomLiveRootView.getHeight();
                Log.e("XXXX",heightDiff+"");
                //输入法弹出或者表情按钮弹窗弹出
		//华为手机有个虚拟底部导航栏,本身占据219的高度,所以高度要大于这个数,还可以适当调大
                if (heightDiff > 298 ) {//高度变小100像素则认为键盘弹出
                    //这里执行需要的处理
                    rightBt.setVisibility(View.GONE);
                    leftBt.setVisibility(View.GONE);
                    isOpenExpandableWindow = true;

                } else if (heightDiff < 297){
                    rightBt.setVisibility(View.VISIBLE);
                    leftBt.setVisibility(View.VISIBLE);
                    isOpenExpandableWindow = false;
                }

                if(mRongExtension != null && mRongExtension.isExtensionExpanded()) {
                    rightBt.setVisibility(View.GONE);
                    leftBt.setVisibility(View.GONE);
                    isOpenExpandableWindow = true;
                }
            }
        });



        //发送后隐藏弹窗
        rc_send_toggle.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                if (event.getAction() == MotionEvent.ACTION_DOWN) {
                    clickTime = System.currentTimeMillis();
                }
                else if (event.getAction() == MotionEvent.ACTION_UP) {
                    long clickTimeDiff = System.currentTimeMillis() - clickTime;
                    //先关闭输入法弹窗
                    if (clickTimeDiff < 800)
                        closeWindows();
                }
                return false;
            }
        });
    }

    private void closeWindows() {
        if(mRongExtension != null && mRongExtension.isExtensionExpanded()) {
            mRongExtension.collapseExtension();
            SystemUtils.closeInputMethodWindows(RoomLiveActivity.this);
        }
    }



@Override
    public void finish() {
        //先关闭输入法弹窗
        if (isOpenExpandableWindow) {
            closeWindows();
            return;
        }

        //TODO 融云测试完成后开启
        try {
            quitRoom();
        } catch (Exception e) {
            e.printStackTrace();
        }
        //先关闭输入法弹窗
        if (isOpenExpandableWindow) {
            closeWindows();
        }
//        mPlayer.stop();
//        isPausePlayer = true;
//        mPlayer.releaseVideoSurface();
//        mPlayer = null;
        super.finish();
    }







另附上一个Gighut 软键盘弹出监听:

https://github.com/yescpu/KeyboardChangeListener






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值