am 01bf82f2
: Merge "Add/refine comments to reflect key event policies" into jb-dev
* commit '01bf82f27297536399f7dcde214d1a082e3613ef': Add/refine comments to reflect key event policies
This commit is contained in:
@ -1892,6 +1892,13 @@ public class InputMethodService extends AbstractInputMethodService {
|
|||||||
* {@link KeyEvent#FLAG_KEEP_TOUCH_MODE KeyEvent.FLAG_KEEP_TOUCH_MODE}, so
|
* {@link KeyEvent#FLAG_KEEP_TOUCH_MODE KeyEvent.FLAG_KEEP_TOUCH_MODE}, so
|
||||||
* that they don't impact the current touch mode of the UI.
|
* that they don't impact the current touch mode of the UI.
|
||||||
*
|
*
|
||||||
|
* <p>Note that it's discouraged to send such key events in normal operation;
|
||||||
|
* this is mainly for use with {@link android.text.InputType#TYPE_NULL} type
|
||||||
|
* text fields, or for non-rich input methods. A reasonably capable software
|
||||||
|
* input method should use the
|
||||||
|
* {@link android.view.inputmethod.InputConnection#commitText} family of methods
|
||||||
|
* to send text to an application, rather than sending key events.</p>
|
||||||
|
*
|
||||||
* @param keyEventCode The raw key code to send, as defined by
|
* @param keyEventCode The raw key code to send, as defined by
|
||||||
* {@link KeyEvent}.
|
* {@link KeyEvent}.
|
||||||
*/
|
*/
|
||||||
@ -1949,7 +1956,11 @@ public class InputMethodService extends AbstractInputMethodService {
|
|||||||
* {@link InputConnection#commitText InputConnection.commitText()} with
|
* {@link InputConnection#commitText InputConnection.commitText()} with
|
||||||
* the character; some, however, may be handled different. In particular,
|
* the character; some, however, may be handled different. In particular,
|
||||||
* the enter character ('\n') will either be delivered as an action code
|
* the enter character ('\n') will either be delivered as an action code
|
||||||
* or a raw key event, as appropriate.
|
* or a raw key event, as appropriate. Consider this as a convenience
|
||||||
|
* method for IMEs that do not have a full implementation of actions; a
|
||||||
|
* fully complying IME will decide of the right action for each event and
|
||||||
|
* will likely never call this method except maybe to handle events coming
|
||||||
|
* from an actual hardware keyboard.
|
||||||
*
|
*
|
||||||
* @param charCode The UTF-16 character code to send.
|
* @param charCode The UTF-16 character code to send.
|
||||||
*/
|
*/
|
||||||
|
@ -28,6 +28,10 @@ import android.widget.TextView;
|
|||||||
* Provides a basic foundation for entering and editing text.
|
* Provides a basic foundation for entering and editing text.
|
||||||
* Subclasses should override {@link #onKeyDown} and {@link #onKeyUp} to insert
|
* Subclasses should override {@link #onKeyDown} and {@link #onKeyUp} to insert
|
||||||
* characters as keys are pressed.
|
* characters as keys are pressed.
|
||||||
|
* <p></p>
|
||||||
|
* As for all implementations of {@link KeyListener}, this class is only concerned
|
||||||
|
* with hardware keyboards. Software input methods have no obligation to trigger
|
||||||
|
* the methods in this class.
|
||||||
*/
|
*/
|
||||||
public abstract class BaseKeyListener extends MetaKeyKeyListener
|
public abstract class BaseKeyListener extends MetaKeyKeyListener
|
||||||
implements KeyListener {
|
implements KeyListener {
|
||||||
|
@ -21,6 +21,10 @@ import android.text.InputType;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* For entering dates in a text field.
|
* For entering dates in a text field.
|
||||||
|
* <p></p>
|
||||||
|
* As for all implementations of {@link KeyListener}, this class is only concerned
|
||||||
|
* with hardware keyboards. Software input methods have no obligation to trigger
|
||||||
|
* the methods in this class.
|
||||||
*/
|
*/
|
||||||
public class DateKeyListener extends NumberKeyListener
|
public class DateKeyListener extends NumberKeyListener
|
||||||
{
|
{
|
||||||
|
@ -21,6 +21,10 @@ import android.view.KeyEvent;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* For entering dates and times in the same text field.
|
* For entering dates and times in the same text field.
|
||||||
|
* <p></p>
|
||||||
|
* As for all implementations of {@link KeyListener}, this class is only concerned
|
||||||
|
* with hardware keyboards. Software input methods have no obligation to trigger
|
||||||
|
* the methods in this class.
|
||||||
*/
|
*/
|
||||||
public class DateTimeKeyListener extends NumberKeyListener
|
public class DateTimeKeyListener extends NumberKeyListener
|
||||||
{
|
{
|
||||||
|
@ -23,6 +23,10 @@ import android.text.Spannable;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* For dialing-only text entry
|
* For dialing-only text entry
|
||||||
|
* <p></p>
|
||||||
|
* As for all implementations of {@link KeyListener}, this class is only concerned
|
||||||
|
* with hardware keyboards. Software input methods have no obligation to trigger
|
||||||
|
* the methods in this class.
|
||||||
*/
|
*/
|
||||||
public class DialerKeyListener extends NumberKeyListener
|
public class DialerKeyListener extends NumberKeyListener
|
||||||
{
|
{
|
||||||
|
@ -24,6 +24,10 @@ import android.view.KeyEvent;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* For digits-only text entry
|
* For digits-only text entry
|
||||||
|
* <p></p>
|
||||||
|
* As for all implementations of {@link KeyListener}, this class is only concerned
|
||||||
|
* with hardware keyboards. Software input methods have no obligation to trigger
|
||||||
|
* the methods in this class.
|
||||||
*/
|
*/
|
||||||
public class DigitsKeyListener extends NumberKeyListener
|
public class DigitsKeyListener extends NumberKeyListener
|
||||||
{
|
{
|
||||||
|
@ -27,6 +27,12 @@ import android.view.View;
|
|||||||
* {@link android.view.inputmethod.InputMethod}; it should only be used
|
* {@link android.view.inputmethod.InputMethod}; it should only be used
|
||||||
* for cases where an application has its own on-screen keypad and also wants
|
* for cases where an application has its own on-screen keypad and also wants
|
||||||
* to process hard keyboard events to match it.
|
* to process hard keyboard events to match it.
|
||||||
|
* <p></p>
|
||||||
|
* Key presses on soft input methods are not required to trigger the methods
|
||||||
|
* in this listener, and are in fact discouraged to do so. The default
|
||||||
|
* android keyboard will not trigger these for any key to any application
|
||||||
|
* targetting Jelly Bean or later, and will only deliver it for some
|
||||||
|
* key presses to applications targetting Ice Cream Sandwich or earlier.
|
||||||
*/
|
*/
|
||||||
public interface KeyListener {
|
public interface KeyListener {
|
||||||
/**
|
/**
|
||||||
|
@ -28,6 +28,10 @@ import android.util.SparseArray;
|
|||||||
* This is the standard key listener for alphabetic input on 12-key
|
* This is the standard key listener for alphabetic input on 12-key
|
||||||
* keyboards. You should generally not need to instantiate this yourself;
|
* keyboards. You should generally not need to instantiate this yourself;
|
||||||
* TextKeyListener will do it for you.
|
* TextKeyListener will do it for you.
|
||||||
|
* <p></p>
|
||||||
|
* As for all implementations of {@link KeyListener}, this class is only concerned
|
||||||
|
* with hardware keyboards. Software input methods have no obligation to trigger
|
||||||
|
* the methods in this class.
|
||||||
*/
|
*/
|
||||||
public class MultiTapKeyListener extends BaseKeyListener
|
public class MultiTapKeyListener extends BaseKeyListener
|
||||||
implements SpanWatcher {
|
implements SpanWatcher {
|
||||||
|
@ -27,6 +27,10 @@ import android.text.Spanned;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* For numeric text entry
|
* For numeric text entry
|
||||||
|
* <p></p>
|
||||||
|
* As for all implementations of {@link KeyListener}, this class is only concerned
|
||||||
|
* with hardware keyboards. Software input methods have no obligation to trigger
|
||||||
|
* the methods in this class.
|
||||||
*/
|
*/
|
||||||
public abstract class NumberKeyListener extends BaseKeyListener
|
public abstract class NumberKeyListener extends BaseKeyListener
|
||||||
implements InputFilter
|
implements InputFilter
|
||||||
|
@ -27,6 +27,10 @@ import android.view.View;
|
|||||||
* This is the standard key listener for alphabetic input on qwerty
|
* This is the standard key listener for alphabetic input on qwerty
|
||||||
* keyboards. You should generally not need to instantiate this yourself;
|
* keyboards. You should generally not need to instantiate this yourself;
|
||||||
* TextKeyListener will do it for you.
|
* TextKeyListener will do it for you.
|
||||||
|
* <p></p>
|
||||||
|
* As for all implementations of {@link KeyListener}, this class is only concerned
|
||||||
|
* with hardware keyboards. Software input methods have no obligation to trigger
|
||||||
|
* the methods in this class.
|
||||||
*/
|
*/
|
||||||
public class QwertyKeyListener extends BaseKeyListener {
|
public class QwertyKeyListener extends BaseKeyListener {
|
||||||
private static QwertyKeyListener[] sInstance =
|
private static QwertyKeyListener[] sInstance =
|
||||||
|
@ -33,6 +33,10 @@ import java.lang.ref.WeakReference;
|
|||||||
/**
|
/**
|
||||||
* This is the key listener for typing normal text. It delegates to
|
* This is the key listener for typing normal text. It delegates to
|
||||||
* other key listeners appropriate to the current keyboard and language.
|
* other key listeners appropriate to the current keyboard and language.
|
||||||
|
* <p></p>
|
||||||
|
* As for all implementations of {@link KeyListener}, this class is only concerned
|
||||||
|
* with hardware keyboards. Software input methods have no obligation to trigger
|
||||||
|
* the methods in this class.
|
||||||
*/
|
*/
|
||||||
public class TextKeyListener extends BaseKeyListener implements SpanWatcher {
|
public class TextKeyListener extends BaseKeyListener implements SpanWatcher {
|
||||||
private static TextKeyListener[] sInstance =
|
private static TextKeyListener[] sInstance =
|
||||||
|
@ -21,6 +21,10 @@ import android.text.InputType;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* For entering times in a text field.
|
* For entering times in a text field.
|
||||||
|
* <p></p>
|
||||||
|
* As for all implementations of {@link KeyListener}, this class is only concerned
|
||||||
|
* with hardware keyboards. Software input methods have no obligation to trigger
|
||||||
|
* the methods in this class.
|
||||||
*/
|
*/
|
||||||
public class TimeKeyListener extends NumberKeyListener
|
public class TimeKeyListener extends NumberKeyListener
|
||||||
{
|
{
|
||||||
|
@ -52,6 +52,19 @@ import android.view.KeyCharacterMap.KeyData;
|
|||||||
* to characters. Be aware that there may be multiple key input devices active
|
* to characters. Be aware that there may be multiple key input devices active
|
||||||
* at the same time and each will have its own key character map.
|
* at the same time and each will have its own key character map.
|
||||||
* </p><p>
|
* </p><p>
|
||||||
|
* As soft input methods can use multiple and inventive ways of inputting text,
|
||||||
|
* there is no guarantee that any key press on a soft keyboard will generate a key
|
||||||
|
* event: this is left to the IME's discretion, and in fact sending such events is
|
||||||
|
* discouraged. You should never rely on receiving KeyEvents for any key on a soft
|
||||||
|
* input method. In particular, the default software keyboard will never send any
|
||||||
|
* key event to any application targetting Jelly Bean or later, and will only send
|
||||||
|
* events for some presses of the delete and return keys to applications targetting
|
||||||
|
* Ice Cream Sandwich or earlier. Be aware that other software input methods may
|
||||||
|
* never send key events regardless of the version. Consider using editor actions
|
||||||
|
* like {@link android.view.inputmethod.EditorInfo#IME_ACTION_DONE} if you need
|
||||||
|
* specific interaction with the software keyboard, as it gives more visibility to
|
||||||
|
* the user as to how your application will react to key presses.
|
||||||
|
* </p><p>
|
||||||
* When interacting with an IME, the framework may deliver key events
|
* When interacting with an IME, the framework may deliver key events
|
||||||
* with the special action {@link #ACTION_MULTIPLE} that either specifies
|
* with the special action {@link #ACTION_MULTIPLE} that either specifies
|
||||||
* that single repeated key code or a sequence of characters to insert.
|
* that single repeated key code or a sequence of characters to insert.
|
||||||
|
@ -204,12 +204,12 @@ import java.util.concurrent.CopyOnWriteArrayList;
|
|||||||
* <tr>
|
* <tr>
|
||||||
* <td rowspan="4">Event processing</td>
|
* <td rowspan="4">Event processing</td>
|
||||||
* <td><code>{@link #onKeyDown(int, KeyEvent)}</code></td>
|
* <td><code>{@link #onKeyDown(int, KeyEvent)}</code></td>
|
||||||
* <td>Called when a new key event occurs.
|
* <td>Called when a new hardware key event occurs.
|
||||||
* </td>
|
* </td>
|
||||||
* </tr>
|
* </tr>
|
||||||
* <tr>
|
* <tr>
|
||||||
* <td><code>{@link #onKeyUp(int, KeyEvent)}</code></td>
|
* <td><code>{@link #onKeyUp(int, KeyEvent)}</code></td>
|
||||||
* <td>Called when a key up event occurs.
|
* <td>Called when a hardware key up event occurs.
|
||||||
* </td>
|
* </td>
|
||||||
* </tr>
|
* </tr>
|
||||||
* <tr>
|
* <tr>
|
||||||
@ -4155,7 +4155,9 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Register a callback to be invoked when a key is pressed in this view.
|
* Register a callback to be invoked when a hardware key is pressed in this view.
|
||||||
|
* Key presses in software input methods will generally not trigger the methods of
|
||||||
|
* this listener.
|
||||||
* @param l the key listener to attach to this view
|
* @param l the key listener to attach to this view
|
||||||
*/
|
*/
|
||||||
public void setOnKeyListener(OnKeyListener l) {
|
public void setOnKeyListener(OnKeyListener l) {
|
||||||
@ -7542,6 +7544,10 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal
|
|||||||
* when {@link KeyEvent#KEYCODE_DPAD_CENTER} or {@link KeyEvent#KEYCODE_ENTER}
|
* when {@link KeyEvent#KEYCODE_DPAD_CENTER} or {@link KeyEvent#KEYCODE_ENTER}
|
||||||
* is released, if the view is enabled and clickable.
|
* is released, if the view is enabled and clickable.
|
||||||
*
|
*
|
||||||
|
* <p>Key presses in software keyboards will generally NOT trigger this listener,
|
||||||
|
* although some may elect to do so in some situations. Do not rely on this to
|
||||||
|
* catch software key presses.
|
||||||
|
*
|
||||||
* @param keyCode A key code that represents the button pressed, from
|
* @param keyCode A key code that represents the button pressed, from
|
||||||
* {@link android.view.KeyEvent}.
|
* {@link android.view.KeyEvent}.
|
||||||
* @param event The KeyEvent object that defines the button action.
|
* @param event The KeyEvent object that defines the button action.
|
||||||
@ -7573,6 +7579,9 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal
|
|||||||
* Default implementation of {@link KeyEvent.Callback#onKeyLongPress(int, KeyEvent)
|
* Default implementation of {@link KeyEvent.Callback#onKeyLongPress(int, KeyEvent)
|
||||||
* KeyEvent.Callback.onKeyLongPress()}: always returns false (doesn't handle
|
* KeyEvent.Callback.onKeyLongPress()}: always returns false (doesn't handle
|
||||||
* the event).
|
* the event).
|
||||||
|
* <p>Key presses in software keyboards will generally NOT trigger this listener,
|
||||||
|
* although some may elect to do so in some situations. Do not rely on this to
|
||||||
|
* catch software key presses.
|
||||||
*/
|
*/
|
||||||
public boolean onKeyLongPress(int keyCode, KeyEvent event) {
|
public boolean onKeyLongPress(int keyCode, KeyEvent event) {
|
||||||
return false;
|
return false;
|
||||||
@ -7583,6 +7592,9 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal
|
|||||||
* KeyEvent.Callback.onKeyUp()}: perform clicking of the view
|
* KeyEvent.Callback.onKeyUp()}: perform clicking of the view
|
||||||
* when {@link KeyEvent#KEYCODE_DPAD_CENTER} or
|
* when {@link KeyEvent#KEYCODE_DPAD_CENTER} or
|
||||||
* {@link KeyEvent#KEYCODE_ENTER} is released.
|
* {@link KeyEvent#KEYCODE_ENTER} is released.
|
||||||
|
* <p>Key presses in software keyboards will generally NOT trigger this listener,
|
||||||
|
* although some may elect to do so in some situations. Do not rely on this to
|
||||||
|
* catch software key presses.
|
||||||
*
|
*
|
||||||
* @param keyCode A key code that represents the button pressed, from
|
* @param keyCode A key code that represents the button pressed, from
|
||||||
* {@link android.view.KeyEvent}.
|
* {@link android.view.KeyEvent}.
|
||||||
@ -7617,6 +7629,9 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal
|
|||||||
* Default implementation of {@link KeyEvent.Callback#onKeyMultiple(int, int, KeyEvent)
|
* Default implementation of {@link KeyEvent.Callback#onKeyMultiple(int, int, KeyEvent)
|
||||||
* KeyEvent.Callback.onKeyMultiple()}: always returns false (doesn't handle
|
* KeyEvent.Callback.onKeyMultiple()}: always returns false (doesn't handle
|
||||||
* the event).
|
* the event).
|
||||||
|
* <p>Key presses in software keyboards will generally NOT trigger this listener,
|
||||||
|
* although some may elect to do so in some situations. Do not rely on this to
|
||||||
|
* catch software key presses.
|
||||||
*
|
*
|
||||||
* @param keyCode A key code that represents the button pressed, from
|
* @param keyCode A key code that represents the button pressed, from
|
||||||
* {@link android.view.KeyEvent}.
|
* {@link android.view.KeyEvent}.
|
||||||
@ -16914,14 +16929,20 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Interface definition for a callback to be invoked when a key event is
|
* Interface definition for a callback to be invoked when a hardware key event is
|
||||||
* dispatched to this view. The callback will be invoked before the key
|
* dispatched to this view. The callback will be invoked before the key event is
|
||||||
* event is given to the view.
|
* given to the view. This is only useful for hardware keyboards; a software input
|
||||||
|
* method has no obligation to trigger this listener.
|
||||||
*/
|
*/
|
||||||
public interface OnKeyListener {
|
public interface OnKeyListener {
|
||||||
/**
|
/**
|
||||||
* Called when a key is dispatched to a view. This allows listeners to
|
* Called when a hardware key is dispatched to a view. This allows listeners to
|
||||||
* get a chance to respond before the target view.
|
* get a chance to respond before the target view.
|
||||||
|
* <p>Key presses in software keyboards will generally NOT trigger this method,
|
||||||
|
* although some may elect to do so in some situations. Do not assume a
|
||||||
|
* software input method has to be key-based; even if it is, it may use key presses
|
||||||
|
* in a different way than you expect, so there is no way to reliably catch soft
|
||||||
|
* input key presses.
|
||||||
*
|
*
|
||||||
* @param v The view the key has been dispatched to.
|
* @param v The view the key has been dispatched to.
|
||||||
* @param keyCode The code for the physical key that was pressed
|
* @param keyCode The code for the physical key that was pressed
|
||||||
|
@ -283,7 +283,7 @@ public interface InputConnection {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Tell the editor that you are done with a batch edit previously
|
* Tell the editor that you are done with a batch edit previously
|
||||||
* initiated with {@link #endBatchEdit}.
|
* initiated with {@link #beginBatchEdit}.
|
||||||
*/
|
*/
|
||||||
public boolean endBatchEdit();
|
public boolean endBatchEdit();
|
||||||
|
|
||||||
@ -308,6 +308,10 @@ public interface InputConnection {
|
|||||||
* key event objects you give to this API; the flag will not be set
|
* key event objects you give to this API; the flag will not be set
|
||||||
* for you.
|
* for you.
|
||||||
*
|
*
|
||||||
|
* <p>Note that it's discouraged to send such key events in normal operation;
|
||||||
|
* this is mainly for use with {@link android.text.InputType#TYPE_NULL} type
|
||||||
|
* text fields. Use the {@link #commitText} family of methods to send text
|
||||||
|
* to the application instead.
|
||||||
* @param event The key event.
|
* @param event The key event.
|
||||||
*
|
*
|
||||||
* @return Returns true on success, false if the input connection is no longer
|
* @return Returns true on success, false if the input connection is no longer
|
||||||
|
@ -148,7 +148,7 @@ this is how you'll listen for events. The View class contains a collection of ne
|
|||||||
On<em><something></em>Listener, each with a callback method called <code>On<em><something></em>()</code>.
|
On<em><something></em>Listener, each with a callback method called <code>On<em><something></em>()</code>.
|
||||||
For example, {@link android.view.View.OnClickListener} (for handling "clicks" on a View),
|
For example, {@link android.view.View.OnClickListener} (for handling "clicks" on a View),
|
||||||
{@link android.view.View.OnTouchListener} (for handling touch screen events in a View), and
|
{@link android.view.View.OnTouchListener} (for handling touch screen events in a View), and
|
||||||
{@link android.view.View.OnKeyListener} (for handling device key presses within a View). So if you want your View
|
{@link android.view.View.OnKeyListener} if you want to handle hardware key presses within a View. So if you want your View
|
||||||
to be notified when it is "clicked" (such as when a button is selected), implement OnClickListener and define
|
to be notified when it is "clicked" (such as when a button is selected), implement OnClickListener and define
|
||||||
its <code>onClick()</code> callback method (where you perform the action upon click), and register it
|
its <code>onClick()</code> callback method (where you perform the action upon click), and register it
|
||||||
to the View with <code>{@link android.view.View#setOnClickListener(View.OnClickListener) setOnClickListener()}</code>.
|
to the View with <code>{@link android.view.View#setOnClickListener(View.OnClickListener) setOnClickListener()}</code>.
|
||||||
@ -158,7 +158,7 @@ what you should do when you've implemented your own View class and want to liste
|
|||||||
that occur within it. Example events you can handle include when the
|
that occur within it. Example events you can handle include when the
|
||||||
screen is touched (<code>{@link android.view.View#onTouchEvent(MotionEvent) onTouchEvent()}</code>), when
|
screen is touched (<code>{@link android.view.View#onTouchEvent(MotionEvent) onTouchEvent()}</code>), when
|
||||||
the trackball is moved (<code>{@link android.view.View#onTrackballEvent(MotionEvent) onTrackballEvent()}</code>),
|
the trackball is moved (<code>{@link android.view.View#onTrackballEvent(MotionEvent) onTrackballEvent()}</code>),
|
||||||
or when a key on the device is pressed (<code>{@link android.view.View#onKeyDown(int, KeyEvent)
|
or when a <em>hardware</em> key on the device is pressed (<code>{@link android.view.View#onKeyDown(int, KeyEvent)
|
||||||
onKeyDown()}</code>). This allows you to define the default behavior for each event inside your custom View and determine
|
onKeyDown()}</code>). This allows you to define the default behavior for each event inside your custom View and determine
|
||||||
whether the event should be passed on to some other child View. Again, these are callbacks to the View class,
|
whether the event should be passed on to some other child View. Again, these are callbacks to the View class,
|
||||||
so your only chance to define them is when you
|
so your only chance to define them is when you
|
||||||
|
@ -64,7 +64,7 @@ been registered is triggered by user interaction with the item in the UI.</p>
|
|||||||
This is called when the user navigates onto or away from the item, using the navigation-keys or trackball.</dd>
|
This is called when the user navigates onto or away from the item, using the navigation-keys or trackball.</dd>
|
||||||
<dt><code>onKey()</code></dt>
|
<dt><code>onKey()</code></dt>
|
||||||
<dd>From {@link android.view.View.OnKeyListener}.
|
<dd>From {@link android.view.View.OnKeyListener}.
|
||||||
This is called when the user is focused on the item and presses or releases a key on the device.</dd>
|
This is called when the user is focused on the item and presses or releases a hardware key on the device.</dd>
|
||||||
<dt><code>onTouch()</code></dt>
|
<dt><code>onTouch()</code></dt>
|
||||||
<dd>From {@link android.view.View.OnTouchListener}.
|
<dd>From {@link android.view.View.OnTouchListener}.
|
||||||
This is called when the user performs an action qualified as a touch event, including a press, a release,
|
This is called when the user performs an action qualified as a touch event, including a press, a release,
|
||||||
@ -143,13 +143,23 @@ depends on the event. For the few that do, here's why:</p>
|
|||||||
within the event, such as a finger gesture, or the eventual up action event.</li>
|
within the event, such as a finger gesture, or the eventual up action event.</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<p>Remember that key events are always delivered to the View currently in focus. They are dispatched starting from the top
|
<p>Remember that hardware key events are always delivered to the View currently in focus. They are dispatched starting from the top
|
||||||
of the View hierarchy, and then down, until they reach the appropriate destination. If your View (or a child of your View)
|
of the View hierarchy, and then down, until they reach the appropriate destination. If your View (or a child of your View)
|
||||||
currently has focus, then you can see the event travel through the <code>{@link android.view.View#dispatchKeyEvent(KeyEvent)
|
currently has focus, then you can see the event travel through the <code>{@link android.view.View#dispatchKeyEvent(KeyEvent)
|
||||||
dispatchKeyEvent()}</code> method. As an alternative to capturing key events through your View, you can also receive
|
dispatchKeyEvent()}</code> method. As an alternative to capturing key events through your View, you can also receive
|
||||||
all of the events inside your Activity with <code>{@link android.app.Activity#onKeyDown(int,KeyEvent) onKeyDown()}</code>
|
all of the events inside your Activity with <code>{@link android.app.Activity#onKeyDown(int,KeyEvent) onKeyDown()}</code>
|
||||||
and <code>{@link android.app.Activity#onKeyUp(int,KeyEvent) onKeyUp()}</code>.</p>
|
and <code>{@link android.app.Activity#onKeyUp(int,KeyEvent) onKeyUp()}</code>.</p>
|
||||||
|
|
||||||
|
<p>Also, when thinking about text input for your application, remember that many devices only have software input
|
||||||
|
methods. Such methods are not required to be key-based; some may use voice input, handwriting, and so on. Even if
|
||||||
|
an input method presents a keyboard-like interface, it will generally <strong>not</strong> trigger the
|
||||||
|
<code>{@link android.app.Activity#onKeyDown(int,KeyEvent) onKeyDown()}</code> family of events. You should never
|
||||||
|
build a UI that requires specific key presses to be controlled unless you want to limit your application to devices
|
||||||
|
with a hardware keyboard. In particular, do not rely on these methods to validate input when the user presses the
|
||||||
|
return key; instead, use actions like {@link android.view.inputmethod.EditorInfo#IME_ACTION_DONE} to signal the
|
||||||
|
input method how your application expects to react, so it may change its UI in a meaningful way. Avoid assumptions
|
||||||
|
about how a software input method should work and just trust it to supply already formatted text to your application.</p>
|
||||||
|
|
||||||
<p class="note"><strong>Note:</strong> Android will call event handlers first and then the appropriate default
|
<p class="note"><strong>Note:</strong> Android will call event handlers first and then the appropriate default
|
||||||
handlers from the class definition second. As such, returning <em>true</em> from these event listeners will stop
|
handlers from the class definition second. As such, returning <em>true</em> from these event listeners will stop
|
||||||
the propagation of the event to other event listeners and will also block the callback to the
|
the propagation of the event to other event listeners and will also block the callback to the
|
||||||
|
Reference in New Issue
Block a user