android.view.KeyEvent#DispatcherState ( )源码实例Demo

下面列出了android.view.KeyEvent#DispatcherState ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: styT   文件: MaterialTapTargetPrompt.java
@Override
public boolean dispatchKeyEventPreIme(KeyEvent event) {
    if (mPromptOptions.getBackButtonDismissEnabled()
            && event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
        KeyEvent.DispatcherState state = getKeyDispatcherState();
        if (state != null) {
            if (event.getAction() == KeyEvent.ACTION_DOWN
                    && event.getRepeatCount() == 0) {
                state.startTracking(event, this);
                return true;
            } else if (event.getAction() == KeyEvent.ACTION_UP
                    && !event.isCanceled() && state.isTracking(event)) {
                if (mPromptTouchedListener != null) {
                    mPromptTouchedListener.onNonFocalPressed();
                }
                return mPromptOptions.getAutoDismiss()
                        || super.dispatchKeyEventPreIme(event);
            }
        }
    }

    return super.dispatchKeyEventPreIme(event);
}
 
源代码2 项目: delion   文件: BookmarkSearchView.java
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
    // To intercept hardware key, a view must have focus.
    if (mDelegate == null) return super.dispatchKeyEvent(event);

    if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
        KeyEvent.DispatcherState state = getKeyDispatcherState();
        if (state != null) {
            if (event.getAction() == KeyEvent.ACTION_DOWN && event.getRepeatCount() == 0) {
                state.startTracking(event, this);
                return true;
            } else if (event.getAction() == KeyEvent.ACTION_UP && !event.isCanceled()
                    && state.isTracking(event)) {
                onBackPressed();
                return true;
            }
        }
    }

    return super.dispatchKeyEvent(event);
}
 
源代码3 项目: AndroidChromium   文件: BookmarkSearchView.java
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
    // To intercept hardware key, a view must have focus.
    if (mDelegate == null) return super.dispatchKeyEvent(event);

    if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
        KeyEvent.DispatcherState state = getKeyDispatcherState();
        if (state != null) {
            if (event.getAction() == KeyEvent.ACTION_DOWN && event.getRepeatCount() == 0) {
                state.startTracking(event, this);
                return true;
            } else if (event.getAction() == KeyEvent.ACTION_UP && !event.isCanceled()
                    && state.isTracking(event)) {
                onBackPressed();
                return true;
            }
        }
    }

    return super.dispatchKeyEvent(event);
}
 
@Override
public boolean onKeyPreIme(int keyCode, @NonNull KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK && isSheetShowing()) {
        if (event.getAction() == KeyEvent.ACTION_DOWN && event.getRepeatCount() == 0) {
            KeyEvent.DispatcherState state = getKeyDispatcherState();
            if (state != null) {
                state.startTracking(event, this);
            }
            return true;
        } else if (event.getAction() == KeyEvent.ACTION_UP) {
            KeyEvent.DispatcherState dispatcherState = getKeyDispatcherState();
            if (dispatcherState != null) {
                dispatcherState.handleUpEvent(event);
            }
            if (isSheetShowing() && event.isTracking() && !event.isCanceled()) {
                if (state == State.EXPANDED && peekOnDismiss) {
                    peekSheet();
                } else {
                    dismissSheet();
                }
                return true;
            }
        }
    }
    return super.onKeyPreIme(keyCode, event);
}
 
源代码5 项目: hover   文件: HoverView.java
@Override
public boolean dispatchKeyEventPreIme(KeyEvent event) {
    // Intercept the hardware back button press if needed. When it's pressed, we'll collapse.
    if (mState.respondsToBackButton() && KeyEvent.KEYCODE_BACK == event.getKeyCode()) {
        KeyEvent.DispatcherState state = getKeyDispatcherState();
        if (state != null) {
            if (KeyEvent.ACTION_DOWN == event.getAction()) {
                state.startTracking(event, this);
                return true;
            } else if (KeyEvent.ACTION_UP == event.getAction()) {
                onBackPressed();
                return true;
            }
        }
    }
    return super.dispatchKeyEventPreIme(event);
}
 
源代码6 项目: bottomsheet   文件: BottomSheetLayout.java
@Override
public boolean onKeyPreIme(int keyCode, @NonNull KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK && isSheetShowing()) {
        if (event.getAction() == KeyEvent.ACTION_DOWN && event.getRepeatCount() == 0) {
            KeyEvent.DispatcherState state = getKeyDispatcherState();
            if (state != null) {
                state.startTracking(event, this);
            }
            return true;
        } else if (event.getAction() == KeyEvent.ACTION_UP) {
            KeyEvent.DispatcherState dispatcherState = getKeyDispatcherState();
            if (dispatcherState != null) {
                dispatcherState.handleUpEvent(event);
            }
            if (isSheetShowing() && event.isTracking() && !event.isCanceled()) {
                if (state == State.EXPANDED && peekOnDismiss) {
                    peekSheet();
                } else {
                    dismissSheet();
                }
                return true;
            }
        }
    }
    return super.onKeyPreIme(keyCode, event);
}
 
源代码7 项目: android_9.0.0_r45   文件: SoftInputWindow.java
/**
 * Create a SoftInputWindow that uses a custom style.
 * 
 * @param context The Context in which the DockWindow should run. In
 *        particular, it uses the window manager and theme from this context
 *        to present its UI.
 * @param theme A style resource describing the theme to use for the window.
 *        See <a href="{@docRoot}reference/available-resources.html#stylesandthemes">Style
 *        and Theme Resources</a> for more information about defining and
 *        using styles. This theme is applied on top of the current theme in
 *        <var>context</var>. If 0, the default dialog theme will be used.
 */
public SoftInputWindow(Context context, String name, int theme, Callback callback,
        KeyEvent.Callback keyEventCallback, KeyEvent.DispatcherState dispatcherState,
        int windowType, int gravity, boolean takesFocus) {
    super(context, theme);
    mName = name;
    mCallback = callback;
    mKeyEventCallback = keyEventCallback;
    mDispatcherState = dispatcherState;
    mWindowType = windowType;
    mGravity = gravity;
    mTakesFocus = takesFocus;
    initDockWindow();
}
 
源代码8 项目: android_9.0.0_r45   文件: ZoomButtonsController.java
private boolean onContainerKey(KeyEvent event) {
    int keyCode = event.getKeyCode();
    if (isInterestingKey(keyCode)) {

        if (keyCode == KeyEvent.KEYCODE_BACK) {
            if (event.getAction() == KeyEvent.ACTION_DOWN
                    && event.getRepeatCount() == 0) {
                if (mOwnerView != null) {
                    KeyEvent.DispatcherState ds = mOwnerView.getKeyDispatcherState();
                    if (ds != null) {
                        ds.startTracking(event, this);
                    }
                }
                return true;
            } else if (event.getAction() == KeyEvent.ACTION_UP
                    && event.isTracking() && !event.isCanceled()) {
                setVisible(false);
                return true;
            }

        } else {
            dismissControlsDelayed(ZOOM_CONTROLS_TIMEOUT);
        }

        // Let the container handle the key
        return false;

    } else {

        ViewRootImpl viewRoot = mOwnerView.getViewRootImpl();
        if (viewRoot != null) {
            viewRoot.dispatchInputEvent(event);
        }

        // We gave the key to the owner, don't let the container handle this key
        return true;
    }
}
 
@Override
public boolean dispatchKeyEventPreIme(KeyEvent event)
{
    if (mPromptOptions.getBackButtonDismissEnabled()
            && event.getKeyCode() == KeyEvent.KEYCODE_BACK)
    {
        KeyEvent.DispatcherState state = getKeyDispatcherState();
        if (state != null)
        {
            if (event.getAction() == KeyEvent.ACTION_DOWN
                    && event.getRepeatCount() == 0)
            {
                state.startTracking(event, this);
                return true;
            }
            else if (event.getAction() == KeyEvent.ACTION_UP
                    && !event.isCanceled() && state.isTracking(event))
            {
                if (mPromptTouchedListener != null)
                {
                    mPromptTouchedListener.onBackButtonPressed();
                }
                return mPromptOptions.getAutoDismiss()
                        || super.dispatchKeyEventPreIme(event);
            }
        }
    }

    return super.dispatchKeyEventPreIme(event);
}
 
@Test
public void testPromptView_BackButton_NotBackKey()
{
    final MaterialTapTargetPrompt.PromptView promptView = createPromptView();
    promptView.mPromptTouchedListener = new MaterialTapTargetPrompt.PromptView.PromptTouchedListener() {
        @Override
        public void onFocalPressed()
        {
            fail();
        }

        @Override
        public void onNonFocalPressed()
        {
            fail();
        }

        @Override
        public void onBackButtonPressed()
        {
            fail();
        }
    };
    KeyEvent.DispatcherState state = new KeyEvent.DispatcherState();
    when(promptView.getKeyDispatcherState()).thenReturn(state);
    final KeyEvent event = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_BUTTON_1);
    assertFalse(promptView.dispatchKeyEventPreIme(event));
}
 
@Test
public void testPromptView_BackButton_Disabled()
{
    final MaterialTapTargetPrompt.PromptView promptView = createPromptView();
    promptView.mPromptOptions.setBackButtonDismissEnabled(false);
    promptView.mPromptTouchedListener = new MaterialTapTargetPrompt.PromptView.PromptTouchedListener() {
        @Override
        public void onFocalPressed()
        {
            fail();
        }

        @Override
        public void onNonFocalPressed()
        {
            fail();
        }

        @Override
        public void onBackButtonPressed()
        {
            fail();
        }
    };
    KeyEvent.DispatcherState state = new KeyEvent.DispatcherState();
    when(promptView.getKeyDispatcherState()).thenReturn(state);
    final KeyEvent event = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_BACK);
    assertFalse(promptView.dispatchKeyEventPreIme(event));
}
 
/**
 * Return the global {@link KeyEvent.DispatcherState KeyEvent.DispatcherState}
 * for used for processing events from the target application.
 * Normally you will not need to use this directly, but
 * just use the standard high-level event callbacks like {@link #onKeyDown}.
 */
public KeyEvent.DispatcherState getKeyDispatcherState() {
    return mDispatcherState;
}
 
 方法所在类
 同类方法