Android: в чем разница между сосредоточенными, включенными, нажатыми и выбранными состояниями?

Я посмотрел на http://developer.android.com/reference/android/view/View.html, чтобы понять различия, но не мог понять многое. Я лишь частично понял «выбранное» состояние.

Может кто-нибудь объяснить различия с некоторыми твердыми примерами? Надеюсь, мой вопрос не очень расплывчатый. Если это так, было бы здорово, если бы кто-нибудь помог мне улучшить его, потому что я не знаю, как его спросить более четко.

Заранее спасибо.

Solutions Collecting From Web of "Android: в чем разница между сосредоточенными, включенными, нажатыми и выбранными состояниями?"

Включено -> Возможно взаимодействие с пользователем.

Отключено -> Невозможно взаимодействие с пользователем.

  • Если вы наведите указатель мыши на виджет, он будет сфокусирован
  • Если вы нажмете нажатие (половина клика) на этом виджете, оно будет нажато
  • Если вы нажимаете и нажимаете кнопку, когда мышь находится в том же положении, она выбирается

Focused – (Window, View) – это назначение клавишных событий (да, у некоторых андроидов есть физическая клавиатура), а некоторые из них имеют «дезодорант-мяч», сгенерированный с помощью клавиш со стрелками вверх.

Активировано – виджет (вид), который активирован. Например, во множественном списке выбора активируются выбранные виды. Я считаю, что необходимость этого дополнительного этапа в API 11 объясняется активизацией многоэкранного выбора, который содержит флажки. Таким образом, выбранные и проверенные состояния должны быть разделены.

Выбранный – применим только к флажкам и другим доступным представлениям.

Полный список состояний View (StateSet id слева, флаг справа):

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)