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


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

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

Заранее благодарю вас.

2 39

2 ответа:

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

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

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

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

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

Selected-применяется только к флажкам и другим настраиваемым представлениям.

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

    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)