[ 
https://issues.apache.org/jira/browse/CB-6289?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14387684#comment-14387684
 ] 

ASF GitHub Bot commented on CB-6289:
------------------------------------

Github user agrieve commented on a diff in the pull request:

    https://github.com/apache/cordova-plugins/pull/15#discussion_r27444435
  
    --- Diff: keyboard/src/android/Keyboard.java ---
    @@ -0,0 +1,124 @@
    +/*
    +       Licensed to the Apache Software Foundation (ASF) under one
    +       or more contributor license agreements.  See the NOTICE file
    +       distributed with this work for additional information
    +       regarding copyright ownership.  The ASF licenses this file
    +       to you under the Apache License, Version 2.0 (the
    +       "License"); you may not use this file except in compliance
    +       with the License.  You may obtain a copy of the License at
    +
    +         http://www.apache.org/licenses/LICENSE-2.0
    +
    +       Unless required by applicable law or agreed to in writing,
    +       software distributed under the License is distributed on an
    +       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    +       KIND, either express or implied.  See the License for the
    +       specific language governing permissions and limitations
    +       under the License.
    +*/
    +package org.apache.cordova.labs.keyboard; 
    +
    +import org.apache.cordova.CallbackContext;
    +import org.apache.cordova.CordovaInterface;
    +import org.apache.cordova.CordovaPlugin;
    +import org.apache.cordova.CordovaWebView;
    +import org.apache.cordova.LOG;
    +import org.json.JSONArray;
    +import org.json.JSONException;
    +
    +import android.app.Activity;
    +import android.content.Context;
    +import android.graphics.Rect;
    +import android.util.DisplayMetrics;
    +import android.view.View;
    +import android.view.ViewTreeObserver.OnGlobalLayoutListener;
    +import android.view.inputmethod.InputMethodManager;
    +
    +public class Keyboard extends CordovaPlugin {
    +    /**
    +    * Delta height of the visible area, to be treated as keyboard opening.
    +    */
    +    private final static int MinHeghtDelta = 100;
    +    private static final String TAG = "Keyboard";
    +
    +    public void initialize(CordovaInterface cordova, CordovaWebView 
webView) {
    +        super.initialize(cordova, webView);
    +        
    +        Activity activity = cordova.getActivity();
    +        DisplayMetrics metrics = new DisplayMetrics();
    +        
activity.getWindowManager().getDefaultDisplay().getMetrics(metrics);
    +        final float density = metrics.density;
    +        
    +        final CordovaWebView appView = webView;
    +        
    +        final View rootView = 
activity.getWindow().getDecorView().findViewById(android.R.id.content).getRootView();
    +        OnGlobalLayoutListener list = new OnGlobalLayoutListener() {
    +            int previousHeightDifference = 0;
    +            
    +            @Override
    +            public void onGlobalLayout() {
    +                LOG.d(TAG, "Entering global layout notification");
    +                
    +                   Rect visibleRect = new Rect();
    +                //r will be populated with the coordinates of your view 
that area still visible.
    +                rootView.getWindowVisibleDisplayFrame(visibleRect);
    +
    +                int visibleHeight = visibleRect.bottom - visibleRect.top;
    +                int viewHeight = rootView.getRootView().getHeight();
    +                int heightDifference = (int)((viewHeight - visibleHeight) 
/ density);
    +                if (heightDifference > MinHeghtDelta 
    +                    && heightDifference != previousHeightDifference) {
    +                    // If the height of the view is bigger then 
    +                    // visible area by delta, then assume that keyboard
    +                    // is shown on the screen.
    +                    appView.sendJavascript("Keyboard.isVisible = true; if 
(Keyboard.onshow) Keyboard.onshow();");
    +                }
    +                else if (heightDifference != previousHeightDifference 
    +                         && (previousHeightDifference - heightDifference) 
> MinHeghtDelta){
    +                    // If the difference between visible and view area 
dropped by the delta
    +                    // then assume that this means that keyboard is hidden.
    +                    appView.sendJavascript("Keyboard.isVisible = false; if 
(Keyboard.onhide) Keyboard.onhide();");
    --- End diff --
    
    ugh, yeah, should be fixed up on iOS as well too I suppose. There's no 
reason to use a single callback rather than an event. Events are much more 
flexible / normal.


> Keyboard for Android
> --------------------
>
>                 Key: CB-6289
>                 URL: https://issues.apache.org/jira/browse/CB-6289
>             Project: Apache Cordova
>          Issue Type: Improvement
>          Components: Plugins
>         Environment: Android
>            Reporter: Andrey Kurdyumov
>            Assignee: Andrey Kurdyumov
>            Priority: Minor
>              Labels: keyboard-plugin
>
> Please extend the Keyboard plugin to support Android platform.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscr...@cordova.apache.org
For additional commands, e-mail: issues-h...@cordova.apache.org

Reply via email to