Search in sources :

Example 16 with TouchDelegate

use of android.view.TouchDelegate in project Resurrection_packages_apps_Settings by ResurrectionRemix.

the class TouchDelegateGroup method onTouchEvent.

@Override
public boolean onTouchEvent(@NonNull MotionEvent event) {
    if (!mEnabled)
        return false;
    TouchDelegate delegate = null;
    switch(event.getAction()) {
        case MotionEvent.ACTION_DOWN:
            for (int i = 0; i < mTouchDelegates.size(); i++) {
                TouchDelegate touchDelegate = mTouchDelegates.get(i);
                if (touchDelegate.onTouchEvent(event)) {
                    mCurrentTouchDelegate = touchDelegate;
                    return true;
                }
            }
            break;
        case MotionEvent.ACTION_MOVE:
            delegate = mCurrentTouchDelegate;
            break;
        case MotionEvent.ACTION_CANCEL:
        case MotionEvent.ACTION_UP:
            delegate = mCurrentTouchDelegate;
            mCurrentTouchDelegate = null;
            break;
    }
    return delegate != null && delegate.onTouchEvent(event);
}
Also used : TouchDelegate(android.view.TouchDelegate)

Example 17 with TouchDelegate

use of android.view.TouchDelegate in project uitableview4android by DayS.

the class UITableCellView method getTouchDelegateAction.

/**
 * Adds a touchable padding around a View by constructing a TouchDelegate and adding it to parent View.
 *
 * @param parent
 *            The "outer" parent View
 * @param delegate
 *            The delegate that handles the TouchEvents
 * @param topPadding
 *            Additional touch area in pixels above View
 * @param bootomPadding
 *            Additional touch area in pixels below View
 * @param topPadding
 *            Additional touch area in pixels left to View
 * @param topPadding
 *            Additional touch area in pixels right to View
 * @return A runnable that you can post as action to a Views event queue
 */
private static Runnable getTouchDelegateAction(final View parent, final View delegate, final int topPadding, final int bottomPadding, final int leftPadding, final int rightPadding) {
    return new Runnable() {

        @Override
        public void run() {
            // Construct a new Rectangle and let the Delegate set its values
            Rect touchRect = new Rect();
            delegate.getHitRect(touchRect);
            // Modify the dimensions of the Rectangle
            // Padding values below zero are replaced by zeros
            touchRect.top -= Math.max(0, topPadding);
            touchRect.bottom += Math.max(0, bottomPadding);
            touchRect.left -= Math.max(0, leftPadding);
            touchRect.right += Math.max(0, rightPadding);
            // Now we are going to construct the TouchDelegate
            TouchDelegate touchDelegate = new TouchDelegate(touchRect, delegate);
            // And set it on the parent
            parent.setTouchDelegate(touchDelegate);
        }
    };
}
Also used : Rect(android.graphics.Rect) TouchDelegate(android.view.TouchDelegate)

Example 18 with TouchDelegate

use of android.view.TouchDelegate in project android-floating-action-button by futuresimple.

the class TouchDelegateGroup method onTouchEvent.

@Override
public boolean onTouchEvent(@NonNull MotionEvent event) {
    if (!mEnabled)
        return false;
    TouchDelegate delegate = null;
    switch(event.getAction()) {
        case MotionEvent.ACTION_DOWN:
            for (int i = 0; i < mTouchDelegates.size(); i++) {
                TouchDelegate touchDelegate = mTouchDelegates.get(i);
                if (touchDelegate.onTouchEvent(event)) {
                    mCurrentTouchDelegate = touchDelegate;
                    return true;
                }
            }
            break;
        case MotionEvent.ACTION_MOVE:
            delegate = mCurrentTouchDelegate;
            break;
        case MotionEvent.ACTION_CANCEL:
        case MotionEvent.ACTION_UP:
            delegate = mCurrentTouchDelegate;
            mCurrentTouchDelegate = null;
            break;
    }
    return delegate != null && delegate.onTouchEvent(event);
}
Also used : TouchDelegate(android.view.TouchDelegate)

Example 19 with TouchDelegate

use of android.view.TouchDelegate in project android-floating-action-button by futuresimple.

the class FloatingActionsMenu method onLayout.

@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {
    switch(mExpandDirection) {
        case EXPAND_UP:
        case EXPAND_DOWN:
            boolean expandUp = mExpandDirection == EXPAND_UP;
            if (changed) {
                mTouchDelegateGroup.clearTouchDelegates();
            }
            int addButtonY = expandUp ? b - t - mAddButton.getMeasuredHeight() : 0;
            // Ensure mAddButton is centered on the line where the buttons should be
            int buttonsHorizontalCenter = mLabelsPosition == LABELS_ON_LEFT_SIDE ? r - l - mMaxButtonWidth / 2 : mMaxButtonWidth / 2;
            int addButtonLeft = buttonsHorizontalCenter - mAddButton.getMeasuredWidth() / 2;
            mAddButton.layout(addButtonLeft, addButtonY, addButtonLeft + mAddButton.getMeasuredWidth(), addButtonY + mAddButton.getMeasuredHeight());
            int labelsOffset = mMaxButtonWidth / 2 + mLabelsMargin;
            int labelsXNearButton = mLabelsPosition == LABELS_ON_LEFT_SIDE ? buttonsHorizontalCenter - labelsOffset : buttonsHorizontalCenter + labelsOffset;
            int nextY = expandUp ? addButtonY - mButtonSpacing : addButtonY + mAddButton.getMeasuredHeight() + mButtonSpacing;
            for (int i = mButtonsCount - 1; i >= 0; i--) {
                final View child = getChildAt(i);
                if (child == mAddButton || child.getVisibility() == GONE)
                    continue;
                int childX = buttonsHorizontalCenter - child.getMeasuredWidth() / 2;
                int childY = expandUp ? nextY - child.getMeasuredHeight() : nextY;
                child.layout(childX, childY, childX + child.getMeasuredWidth(), childY + child.getMeasuredHeight());
                float collapsedTranslation = addButtonY - childY;
                float expandedTranslation = 0f;
                child.setTranslationY(mExpanded ? expandedTranslation : collapsedTranslation);
                child.setAlpha(mExpanded ? 1f : 0f);
                LayoutParams params = (LayoutParams) child.getLayoutParams();
                params.mCollapseDir.setFloatValues(expandedTranslation, collapsedTranslation);
                params.mExpandDir.setFloatValues(collapsedTranslation, expandedTranslation);
                params.setAnimationsTarget(child);
                View label = (View) child.getTag(R.id.fab_label);
                if (label != null) {
                    int labelXAwayFromButton = mLabelsPosition == LABELS_ON_LEFT_SIDE ? labelsXNearButton - label.getMeasuredWidth() : labelsXNearButton + label.getMeasuredWidth();
                    int labelLeft = mLabelsPosition == LABELS_ON_LEFT_SIDE ? labelXAwayFromButton : labelsXNearButton;
                    int labelRight = mLabelsPosition == LABELS_ON_LEFT_SIDE ? labelsXNearButton : labelXAwayFromButton;
                    int labelTop = childY - mLabelsVerticalOffset + (child.getMeasuredHeight() - label.getMeasuredHeight()) / 2;
                    label.layout(labelLeft, labelTop, labelRight, labelTop + label.getMeasuredHeight());
                    Rect touchArea = new Rect(Math.min(childX, labelLeft), childY - mButtonSpacing / 2, Math.max(childX + child.getMeasuredWidth(), labelRight), childY + child.getMeasuredHeight() + mButtonSpacing / 2);
                    mTouchDelegateGroup.addTouchDelegate(new TouchDelegate(touchArea, child));
                    label.setTranslationY(mExpanded ? expandedTranslation : collapsedTranslation);
                    label.setAlpha(mExpanded ? 1f : 0f);
                    LayoutParams labelParams = (LayoutParams) label.getLayoutParams();
                    labelParams.mCollapseDir.setFloatValues(expandedTranslation, collapsedTranslation);
                    labelParams.mExpandDir.setFloatValues(collapsedTranslation, expandedTranslation);
                    labelParams.setAnimationsTarget(label);
                }
                nextY = expandUp ? childY - mButtonSpacing : childY + child.getMeasuredHeight() + mButtonSpacing;
            }
            break;
        case EXPAND_LEFT:
        case EXPAND_RIGHT:
            boolean expandLeft = mExpandDirection == EXPAND_LEFT;
            int addButtonX = expandLeft ? r - l - mAddButton.getMeasuredWidth() : 0;
            // Ensure mAddButton is centered on the line where the buttons should be
            int addButtonTop = b - t - mMaxButtonHeight + (mMaxButtonHeight - mAddButton.getMeasuredHeight()) / 2;
            mAddButton.layout(addButtonX, addButtonTop, addButtonX + mAddButton.getMeasuredWidth(), addButtonTop + mAddButton.getMeasuredHeight());
            int nextX = expandLeft ? addButtonX - mButtonSpacing : addButtonX + mAddButton.getMeasuredWidth() + mButtonSpacing;
            for (int i = mButtonsCount - 1; i >= 0; i--) {
                final View child = getChildAt(i);
                if (child == mAddButton || child.getVisibility() == GONE)
                    continue;
                int childX = expandLeft ? nextX - child.getMeasuredWidth() : nextX;
                int childY = addButtonTop + (mAddButton.getMeasuredHeight() - child.getMeasuredHeight()) / 2;
                child.layout(childX, childY, childX + child.getMeasuredWidth(), childY + child.getMeasuredHeight());
                float collapsedTranslation = addButtonX - childX;
                float expandedTranslation = 0f;
                child.setTranslationX(mExpanded ? expandedTranslation : collapsedTranslation);
                child.setAlpha(mExpanded ? 1f : 0f);
                LayoutParams params = (LayoutParams) child.getLayoutParams();
                params.mCollapseDir.setFloatValues(expandedTranslation, collapsedTranslation);
                params.mExpandDir.setFloatValues(collapsedTranslation, expandedTranslation);
                params.setAnimationsTarget(child);
                nextX = expandLeft ? childX - mButtonSpacing : childX + child.getMeasuredWidth() + mButtonSpacing;
            }
            break;
    }
}
Also used : Rect(android.graphics.Rect) TouchDelegate(android.view.TouchDelegate) TextView(android.widget.TextView) View(android.view.View)

Example 20 with TouchDelegate

use of android.view.TouchDelegate in project newsrob by marianokamp.

the class SwipeRelativeLayout method onLayout.

@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {
    super.onLayout(changed, l, t, r, b);
    Rect outRect;
    int width, height;
    CheckBox checkBox = (CheckBox) findViewById(R.id.star_checkbox);
    if (checkBox != null) {
        outRect = new Rect();
        int[] xy = new int[2];
        checkBox.getLocationInWindow(xy);
        checkBox.getDrawingRect(outRect);
        width = outRect.right - outRect.left;
        height = outRect.bottom - outRect.top;
        outRect.left = xy[0];
        // xy[1];
        outRect.top = 0;
        outRect.right = outRect.left + width;
        outRect.bottom = outRect.top + height;
        outRect.left -= width;
        outRect.bottom += height;
        checkBoxDelegate = new TouchDelegate(outRect, checkBox);
    }
}
Also used : Rect(android.graphics.Rect) CheckBox(android.widget.CheckBox) TouchDelegate(android.view.TouchDelegate)

Aggregations

TouchDelegate (android.view.TouchDelegate)28 Rect (android.graphics.Rect)21 View (android.view.View)12 TextView (android.widget.TextView)9 CheckBox (android.widget.CheckBox)4 OnClickListener (android.view.View.OnClickListener)3 ViewGroup (android.view.ViewGroup)2 SuppressLint (android.annotation.SuppressLint)1 Drawable (android.graphics.drawable.Drawable)1 RecyclerView (android.support.v7.widget.RecyclerView)1 AdapterView (android.widget.AdapterView)1 ImageButton (android.widget.ImageButton)1 ImageView (android.widget.ImageView)1 Before (org.junit.Before)1 Test (org.junit.Test)1