Android: в чем разница между сфокусированными, включенными, нажатыми и выбранными состояниями?
Я просмотрел http://developer.android.com/reference/android/view/View.html, чтобы понять различия, но не мог понять многое. Я только частично понял "выбранное" состояние.
Может кто-нибудь объяснить различия с некоторыми твердыми примерами? Надеюсь, мой вопрос не очень расплывчатый. Если это так, было бы здорово, если бы кто-нибудь помог мне улучшить его, потому что я не знаю, как его спросить более четко.
Спасибо заранее.
Ответы
Ответ 1
Включено → Возможно взаимодействие с пользователем.
Отключено → Невозможно взаимодействие с пользователем.
- Если вы наведите указатель мыши на виджет, сосредоточен
- Если вы нажмете кнопку "вниз" (половина клика) на этом виджете, нажмите
- Если вы нажимаете и нажимаете кнопку, когда мышь находится в том же положении, она выбрана
Ответ 2
Focused - (Window, View) - это назначение клавишных событий (да, у некоторых андроидов есть физическая клавиатура), а некоторые из них имеют "дезодорант-шарик", создающий клавиши со стрелками вверх по стрелкам вниз.
Активировано - виджет (вид), который активирован. Например. в нескольких списках выбора активируются выбранные виды. Я считаю, что необходимость этого дополнительного этапа в API 11 объясняется активизацией многоэкранного выбора, который содержит флажки. Таким образом, выбранные и проверенные состояния должны быть разделены.
Выбранный - применим только к флажкам и другим доступным представлениям.
Полный список состояний View (идентификатор StateSet слева, флаг справа):
R.attr.state_window_focused, VIEW_STATE_WINDOW_FOCUSED,
R.attr.state_selected, VIEW_STATE_SELECTED,
R.attr.state_focused, VIEW_STATE_FOCUSED,
R.attr.state_enabled, VIEW_STATE_ENABLED,
R.attr.state_pressed, VIEW_STATE_PRESSED,
R.attr.state_activated, VIEW_STATE_ACTIVATED,
R.attr.state_accelerated, VIEW_STATE_ACCELERATED,
R.attr.state_hovered, VIEW_STATE_HOVERED,
R.attr.state_drag_can_accept, VIEW_STATE_DRAG_CAN_ACCEPT,
R.attr.state_drag_hovered, VIEW_STATE_DRAG_HOVERED
Также смотрите:
/**
* Changes the activated state of this view. A view can be activated or not.
* Note that activation is not the same as selection. Selection is
* a transient property, representing the view (hierarchy) the user is
* currently interacting with. Activation is a longer-term state that the
* user can move views in and out of. For example, in a list view with
* single or multiple selection enabled, the views in the current selection
* set are activated. (Um, yeah, we are deeply sorry about the terminology
* here.) The activated state is propagated down to children of the view it
* is set on.
*
* @param activated true if the view must be activated, false otherwise
*/
public void setActivated(boolean activated)
/**
* Dispatch a key event to the next view on the focus path. This path runs
* from the top of the view tree down to the currently focused view. If this
* view has focus, it will dispatch to itself. Otherwise it will dispatch
* the next node down the focus path. This method also fires any key
* listeners.
*
* @param event The key event to be dispatched.
* @return True if the event was handled, false otherwise.
*/
public boolean dispatchKeyEvent(KeyEvent event)