Java Code Examples for android.view.View#getFocusedRect()

The following examples show how to use android.view.View#getFocusedRect() . You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: HListView.java    From letv with Apache License 2.0 6 votes vote down vote up
private boolean handleHorizontalFocusWithinListItem(int direction) {
    if (direction == 33 || direction == 130) {
        int numChildren = getChildCount();
        if (this.mItemsCanFocus && numChildren > 0 && this.mSelectedPosition != -1) {
            View selectedView = getSelectedView();
            if (selectedView != null && selectedView.hasFocus() && (selectedView instanceof ViewGroup)) {
                View currentFocus = selectedView.findFocus();
                View nextFocus = FocusFinder.getInstance().findNextFocus((ViewGroup) selectedView, currentFocus, direction);
                if (nextFocus != null) {
                    currentFocus.getFocusedRect(this.mTempRect);
                    offsetDescendantRectToMyCoords(currentFocus, this.mTempRect);
                    offsetRectIntoDescendantCoords(nextFocus, this.mTempRect);
                    if (nextFocus.requestFocus(direction, this.mTempRect)) {
                        return true;
                    }
                }
                View globalNextFocus = FocusFinder.getInstance().findNextFocus((ViewGroup) getRootView(), currentFocus, direction);
                if (globalNextFocus != null) {
                    return isViewAncestorOf(globalNextFocus, this);
                }
            }
        }
        return false;
    }
    throw new IllegalArgumentException("direction must be one of {View.FOCUS_UP, View.FOCUS_DOWN}");
}
 
Example 2
Source File: AbsHListView.java    From letv with Apache License 2.0 5 votes vote down vote up
public void getFocusedRect(Rect r) {
    View view = getSelectedView();
    if (view == null || view.getParent() != this) {
        super.getFocusedRect(r);
        return;
    }
    view.getFocusedRect(r);
    offsetDescendantRectToMyCoords(view, r);
}
 
Example 3
Source File: TwoWayAbsListView.java    From recent-images with MIT License 5 votes vote down vote up
@Override
public void getFocusedRect(Rect r) {
	View view = getSelectedView();
	if (view != null && view.getParent() == this) {
		// the focused rectangle of the selected view offset into the
		// coordinate space of this view.
		view.getFocusedRect(r);
		offsetDescendantRectToMyCoords(view, r);
	} else {
		// otherwise, just the norm
		super.getFocusedRect(r);
	}
}
 
Example 4
Source File: PLAAbsListView.java    From SimplifyReader with Apache License 2.0 5 votes vote down vote up
@Override
public void getFocusedRect(Rect r) {
    View view = getSelectedView();
    if (view != null && view.getParent() == this) {
        // the focused rectangle of the selected view offset into the
        // coordinate space of this view.
        view.getFocusedRect(r);
        offsetDescendantRectToMyCoords(view, r);
    } else {
        // otherwise, just the norm
        super.getFocusedRect(r);
    }
}
 
Example 5
Source File: PLAAbsListView.java    From Lay-s with MIT License 5 votes vote down vote up
@Override
public void getFocusedRect(Rect r) {
    View view = getSelectedView();
    if (view != null && view.getParent() == this) {
        // the focused rectangle of the selected view offset into the
        // coordinate space of this view.
        view.getFocusedRect(r);
        offsetDescendantRectToMyCoords(view, r);
    } else {
        // otherwise, just the norm
        super.getFocusedRect(r);
    }
}
 
Example 6
Source File: FocusedRelativeLayout.java    From android-tv-launcher with MIT License 5 votes vote down vote up
public void getFocusedRect(Rect paramRect) {
	View localView = getSelectedView();
	if (localView != null) {
		localView.getFocusedRect(paramRect);
		offsetDescendantRectToMyCoords(localView, paramRect);
		return;
	}
	super.getFocusedRect(paramRect);
}
 
Example 7
Source File: HListView.java    From Klyph with MIT License 5 votes vote down vote up
/**
 * To avoid horizontal focus searches changing the selected item, we manually focus search within the selected item (as
 * applicable), and prevent focus from jumping to something within another item.
 * 
 * @param direction
 *           one of {View.FOCUS_LEFT, View.FOCUS_RIGHT}
 * @return Whether this consumes the key event.
 */
private boolean handleHorizontalFocusWithinListItem( int direction ) {
	// TODO: implement this
	if ( direction != View.FOCUS_LEFT && direction != View.FOCUS_RIGHT ) {
		throw new IllegalArgumentException( "direction must be one of"
				+ " {View.FOCUS_LEFT, View.FOCUS_RIGHT}" );
	}

	final int numChildren = getChildCount();
	if ( mItemsCanFocus && numChildren > 0 && mSelectedPosition != INVALID_POSITION ) {
		final View selectedView = getSelectedView();
		if ( selectedView != null && selectedView.hasFocus() &&
				selectedView instanceof ViewGroup ) {

			final View currentFocus = selectedView.findFocus();
			final View nextFocus = FocusFinder.getInstance().findNextFocus(
					(ViewGroup) selectedView, currentFocus, direction );
			if ( nextFocus != null ) {
				// do the math to get interesting rect in next focus' coordinates
				currentFocus.getFocusedRect( mTempRect );
				offsetDescendantRectToMyCoords( currentFocus, mTempRect );
				offsetRectIntoDescendantCoords( nextFocus, mTempRect );
				if ( nextFocus.requestFocus( direction, mTempRect ) ) {
					return true;
				}
			}
			// we are blocking the key from being handled (by returning true)
			// if the global result is going to be some other view within this
			// list. this is to acheive the overall goal of having
			// horizontal d-pad navigation remain in the current item.
			final View globalNextFocus = FocusFinder.getInstance().findNextFocus(
					(ViewGroup) getRootView(), currentFocus, direction );
			if ( globalNextFocus != null ) {
				return isViewAncestorOf( globalNextFocus, this );
			}
		}
	}
	return false;
}
 
Example 8
Source File: AbsHListView.java    From Klyph with MIT License 5 votes vote down vote up
@Override
public void getFocusedRect( Rect r ) {
	View view = getSelectedView();
	if ( view != null && view.getParent() == this ) {
		// the focused rectangle of the selected view offset into the
		// coordinate space of this view.
		view.getFocusedRect( r );
		offsetDescendantRectToMyCoords( view, r );
	} else {
		// otherwise, just the norm
		super.getFocusedRect( r );
	}
}
 
Example 9
Source File: PLA_AbsListView.java    From EverMemo with MIT License 5 votes vote down vote up
@Override
public void getFocusedRect(Rect r) {
	View view = getSelectedView();
	if (view != null && view.getParent() == this) {
		// the focused rectangle of the selected view offset into the
		// coordinate space of this view.
		view.getFocusedRect(r);
		offsetDescendantRectToMyCoords(view, r);
	} else {
		// otherwise, just the norm
		super.getFocusedRect(r);
	}
}
 
Example 10
Source File: ListView.java    From android_9.0.0_r45 with Apache License 2.0 4 votes vote down vote up
/**
 * To avoid horizontal focus searches changing the selected item, we
 * manually focus search within the selected item (as applicable), and
 * prevent focus from jumping to something within another item.
 * @param direction one of {View.FOCUS_LEFT, View.FOCUS_RIGHT}
 * @return Whether this consumes the key event.
 */
private boolean handleHorizontalFocusWithinListItem(int direction) {
    if (direction != View.FOCUS_LEFT && direction != View.FOCUS_RIGHT)  {
        throw new IllegalArgumentException("direction must be one of"
                + " {View.FOCUS_LEFT, View.FOCUS_RIGHT}");
    }

    final int numChildren = getChildCount();
    if (mItemsCanFocus && numChildren > 0 && mSelectedPosition != INVALID_POSITION) {
        final View selectedView = getSelectedView();
        if (selectedView != null && selectedView.hasFocus() &&
                selectedView instanceof ViewGroup) {

            final View currentFocus = selectedView.findFocus();
            final View nextFocus = FocusFinder.getInstance().findNextFocus(
                    (ViewGroup) selectedView, currentFocus, direction);
            if (nextFocus != null) {
                // do the math to get interesting rect in next focus' coordinates
                Rect focusedRect = mTempRect;
                if (currentFocus != null) {
                    currentFocus.getFocusedRect(focusedRect);
                    offsetDescendantRectToMyCoords(currentFocus, focusedRect);
                    offsetRectIntoDescendantCoords(nextFocus, focusedRect);
                } else {
                    focusedRect = null;
                }
                if (nextFocus.requestFocus(direction, focusedRect)) {
                    return true;
                }
            }
            // we are blocking the key from being handled (by returning true)
            // if the global result is going to be some other view within this
            // list.  this is to acheive the overall goal of having
            // horizontal d-pad navigation remain in the current item.
            final View globalNextFocus = FocusFinder.getInstance().findNextFocus(
                    (ViewGroup) getRootView(), currentFocus, direction);
            if (globalNextFocus != null) {
                return isViewAncestorOf(globalNextFocus, this);
            }
        }
    }
    return false;
}
 
Example 11
Source File: ViewLayoutUtil.java    From Android-Application-ZJB with Apache License 2.0 4 votes vote down vote up
public static boolean isMotionFocusOnView(View view, MotionEvent event) {
    Rect focusBound = new Rect();
    view.getFocusedRect(focusBound);
    return focusBound.contains((int) event.getX(), (int) event.getY());
}