Class FocusFinder

java.lang.Object
icyllis.modernui.view.FocusFinder

public class FocusFinder extends Object
The algorithm used for finding the next focusable view in a given direction from a view that currently has focus.
  • Method Details

    • getInstance

      public static FocusFinder getInstance()
      Get the focus finder for this thread.
    • findNextFocus

      public final View findNextFocus(@NonNull ViewGroup root, @Nullable View focused, int direction)
      Find the next view to take focus in root's descendants, starting from the view that currently is focused.
      Parameters:
      root - Contains focused. Cannot be null.
      focused - Has focus now.
      direction - Direction to look.
      Returns:
      The next focusable view, or null if none exists.
    • findNextFocusFromRect

      public View findNextFocusFromRect(@NonNull ViewGroup root, @NonNull Rect focusedRect, int direction)
      Find the next view to take focus in root's descendants, searching from a particular rectangle in root's coordinates.
      Parameters:
      root - Contains focusedRect. Cannot be null.
      focusedRect - The starting point of the search.
      direction - Direction to look.
      Returns:
      The next focusable view, or null if none exists.
    • findNextKeyboardNavigationCluster

      public View findNextKeyboardNavigationCluster(@NonNull View root, @Nullable View currentCluster, int direction)
      Find the root of the next keyboard navigation cluster after the current one.
      Parameters:
      root - The view tree to look inside. Cannot be null
      currentCluster - The starting point of the search. Null means the default cluster
      direction - Direction to look
      Returns:
      The next cluster, or null if none exists
    • findNearestTouchable

      public View findNearestTouchable(@NonNull ViewGroup root, int x, int y, int direction, int[] deltas)
      Find the nearest touchable view to the specified view.
      Parameters:
      root - The root of the tree in which to search
      x - X coordinate from which to start the search
      y - Y coordinate from which to start the search
      direction - Direction to look
      deltas - Offset from the invalid input: '<'x, y> to the edge of the nearest view. Note that this array may already be populated with values.
      Returns:
      The nearest touchable view, or null if none exists.
    • sort

      public static void sort(View[] views, int start, int end, ViewGroup root, boolean isRtl)
      Public for testing.