工具类-虚拟键盘相关大全

工具类-虚拟键盘相关大全

1.监听输入隐藏及其高度。(可用于edittext被遮挡时候滑动调整的距离)
2.显示隐藏软键盘,强制显示软键盘

1.监听虚拟键盘隐藏及其高度

 public static interface OnSoftKeyBoardVisibleListener{
        void onSoftKeyBoardVisible(boolean isVisible,int displayHight,int hight);
    }
 /**监听软键盘状态
     * @param activity
     * @param listener
     */
    public static void addOnSoftKeyBoardVisibleListener(Activity activity, final OnSoftKeyBoardVisibleListener listener) {
        final View decorView = activity.getWindow().getDecorView();
        decorView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
            private boolean sLastVisiable;
            @Override
            public void onGlobalLayout() {
                Rect rect = new Rect();
                decorView.getWindowVisibleDisplayFrame(rect);
                int displayHight = rect.bottom - rect.top;
                int hight = decorView.getHeight();
                boolean visible = (double) displayHight / hight < 0.8;

//                Log.d("rex", "DecorView display hight = " + displayHight);
//                Log.d("rex", "DecorView hight = " + hight);
//                Log.d("rex", "softkeyboard visible = " + visible);

                if(visible != sLastVisiable){
                    listener.onSoftKeyBoardVisible(visible,displayHight,hight);
                }
                sLastVisiable = visible;
            }
        });

2.显示隐藏软键盘,强制显示软键盘

/**
     * 隐藏软键盘
     * @param activity
     */
    public static void hideInput(Activity activity) {
        View view = activity.getWindow().peekDecorView();
        if (view != null) {
            InputMethodManager inputmanger = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE);
            inputmanger.hideSoftInputFromWindow(view.getWindowToken(), 0);
        }
    }



 //强制显示或者关闭系统键盘
    public static void KeyBoard(final EditText txtSearchKey,final String status)
    {

        Timer timer = new Timer();
        timer.schedule(new TimerTask(){
            @Override
            public void run()
            {
                InputMethodManager m = (InputMethodManager)
                        txtSearchKey.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
                if(status.equals("open"))
                {
                    m.showSoftInput(txtSearchKey,InputMethodManager.SHOW_FORCED);
                }
                else
                {
                    m.hideSoftInputFromWindow(txtSearchKey.getWindowToken(), 0);
                }
            }
        }, 300);
    }

    //显示虚拟键盘
    public static void ShowKeyboard(View v)
    {
        InputMethodManager imm = ( InputMethodManager ) v.getContext( ).getSystemService( Context.INPUT_METHOD_SERVICE );

        imm.showSoftInput(v,InputMethodManager.SHOW_FORCED);

    }
 //隐藏虚拟键盘
    public static void HideKeyboard(View v)
    {
        InputMethodManager imm = ( InputMethodManager ) v.getContext( ).getSystemService( Context.INPUT_METHOD_SERVICE );
        if ( imm.isActive( ) ) {
            imm.hideSoftInputFromWindow( v.getApplicationWindowToken( ) , 0 );
        }
    }
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Unity 虚拟键盘可以实现对中文的输入。在Unity中,我们可以使用InputField组件来创建输入框,然后通过设置InputField的keyboardType属性为VirtualKeyboardType.Default来使用虚拟键盘虚拟键盘支持中文输入,当我们点击输入框时,会弹出虚拟键盘虚拟键盘上会有中文输入法的选项,我们可以通过点击选择中文输入法。 在使用中文输入法时,我们可以通过虚拟键盘上的拼音输入中文字符。在输入过程中,虚拟键盘会根据我们输入的拼音自动匹配候选字词,并显示在键盘上供我们选择。当我们点击键盘上的汉字时,选择的汉字就会被输入到输入框中。 虚拟键盘还支持手写输入中文字符。在虚拟键盘上,我们可以切换到手写输入模式,然后使用手指或者触控笔在键盘上书写汉字。虚拟键盘会根据我们书写的轨迹识别出汉字,并将其输入到输入框中。 总之,Unity虚拟键盘中文输入功能相对完善,可以通过拼音输入或者手写输入中文字符。这为开发中需要中文输入的应用程序提供了方便和灵活的输入方式。 ### 回答2: Unity是一款广泛用于开发虚拟键盘的游戏引擎。虚拟键盘是一种软件输入工具,通过屏幕显示出来的键盘来模拟物理键盘的功能。 在Unity中,我们可以使用Unity自带的UI系统来创建虚拟键盘。通过使用UI元素,如按钮、文本框等,可以实现键盘按钮和文本输入框的功能。为了实现中文输入,我们需要进行一些额外的设置和逻辑处理。 首先,我们需要设置虚拟键盘的输入模式为中文。通过使用Unity的Input类,我们可以检测用户在键盘上的输入,并将其转化为中文字符。可以使用Input.GetKey或Input.GetKeyDown等方法来判断用户按下的是哪个键,并根据需要来实现相应的输入处理方式。 其次,我们还需要考虑到中文输入法的特性,如拼音输入和候选词选择。通过使用Unity的文本处理方法,我们可以将用户的拼音输入转化为候选词,并在键盘上显示这些候选词供用户选择。可以使用Text组件来显示文本,并根据需要在键盘上创建相应的按钮。 最后,为了提升用户体验,我们可以添加一些额外的功能,如输入法切换、九宫格输入法等。通过自定义虚拟键盘的外观和布局,我们可以根据不同的设备和平台来适配不同的屏幕尺寸和分辨率。 总之,Unity虚拟键盘中文输入的实现需要考虑到输入模式、文本处理、候选词选择以及用户体验等因素。通过合理的设计和编码,我们可以开发出功能完善、操作便捷的中文虚拟键盘应用。 ### 回答3: Unity 虚拟键盘可以用于支持中文输入。在 Unity 中,可以使用 InputField 组件来创建一个可输入文本的区域。要实现中文输入,需要使用 Unity 提供的中文输入法系统。 在创建 InputField 组件后,通过设置 InputField 的 Content Type 为 Custom,并在 Input Field 组件上添加一个 Input Field OnEndEdit 的事件监听器。在事件监听器中,可以使用 Unity 提供的输入管理器 Input 来获取用户输入的文本。 在中文输入时,用户可以通过在虚拟键盘上输入拼音来进行输入。当输入完成后,用户可以选择候选字词中的一个作为最终输入结果。为了实现这一功能,可以使用 Unity 提供的 IME 控制接口,通过调用函数 Input.compositionString 来获取用户输入的拼音,然后使用中文输入法系统进行候选字词的获取和选择。 获取到最终输入的结果后,可以将其显示在 InputField 组件中展示给用户。如果需要对输入进行进一步的处理,比如进行输入验证或处理特殊字符,可以在事件监听器中添加相应的逻辑。 总之,要实现 Unity 虚拟键盘的中文输入,需要使用 InputField 组件、输入管理器 Input 和中文输入法系统,通过相应的接口和函数来处理用户的拼音输入和候选字词的选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值