FileDocCategorySizeDatePackage
DeadZone.javaAPI DocAndroid 5.1 API5456Thu Mar 12 22:22:42 GMT 2015com.android.systemui.statusbar.policy

DeadZone

public class DeadZone extends android.view.View

Fields Summary
public static final String
TAG
public static final boolean
DEBUG
public static final int
HORIZONTAL
public static final int
VERTICAL
private static final boolean
CHATTY
private boolean
mShouldFlash
private float
mFlashFrac
private int
mSizeMax
private int
mSizeMin
private int
mHold
private int
mDecay
private boolean
mVertical
private long
mLastPokeTime
private final Runnable
mDebugFlash
Constructors Summary
public DeadZone(android.content.Context context, android.util.AttributeSet attrs)


         
        this(context, attrs, 0);
    
public DeadZone(android.content.Context context, android.util.AttributeSet attrs, int defStyle)

        super(context, attrs);

        TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.DeadZone,
                defStyle, 0);

        mHold = a.getInteger(R.styleable.DeadZone_holdTime, 0);
        mDecay = a.getInteger(R.styleable.DeadZone_decayTime, 0);

        mSizeMin = a.getDimensionPixelSize(R.styleable.DeadZone_minSize, 0);
        mSizeMax = a.getDimensionPixelSize(R.styleable.DeadZone_maxSize, 0);

        int index = a.getInt(R.styleable.DeadZone_orientation, -1);
        mVertical = (index == VERTICAL);

        if (DEBUG)
            Slog.v(TAG, this + " size=[" + mSizeMin + "-" + mSizeMax + "] hold=" + mHold
                    + (mVertical ? " vertical" : " horizontal"));

        setFlashOnTouchCapture(context.getResources().getBoolean(R.bool.config_dead_zone_flash));
    
Methods Summary
public floatgetFlash()

        return mFlashFrac;
    
private floatgetSize(long now)

        if (mSizeMax == 0)
            return 0;
        long dt = (now - mLastPokeTime);
        if (dt > mHold + mDecay)
            return mSizeMin;
        if (dt < mHold)
            return mSizeMax;
        return (int) lerp(mSizeMax, mSizeMin, (float) (dt - mHold) / mDecay);
    
static floatlerp(float a, float b, float f)

        return (b - a) * f + a;
    
public voidonDraw(android.graphics.Canvas can)

        if (!mShouldFlash || mFlashFrac <= 0f) {
            return;
        }

        final int size = (int) getSize(SystemClock.uptimeMillis());
        can.clipRect(0, 0, mVertical ? size : can.getWidth(), mVertical ? can.getHeight() : size);
        final float frac = DEBUG ? (mFlashFrac - 0.5f) + 0.5f : mFlashFrac;
        can.drawARGB((int) (frac * 0xFF), 0xDD, 0xEE, 0xAA);

        if (DEBUG && size > mSizeMin)
            // crazy aggressive redrawing here, for debugging only
            postInvalidateDelayed(100);
    
public booleanonTouchEvent(android.view.MotionEvent event)

        if (DEBUG) {
            Slog.v(TAG, this + " onTouch: " + MotionEvent.actionToString(event.getAction()));
        }

        final int action = event.getAction();
        if (action == MotionEvent.ACTION_OUTSIDE) {
            poke(event);
        } else if (action == MotionEvent.ACTION_DOWN) {
            if (DEBUG) {
                Slog.v(TAG, this + " ACTION_DOWN: " + event.getX() + "," + event.getY());
            }
            int size = (int) getSize(event.getEventTime());
            if ((mVertical && event.getX() < size) || event.getY() < size) {
                if (CHATTY) {
                    Slog.v(TAG, "consuming errant click: (" + event.getX() + "," + event.getY() + ")");
                }
                if (mShouldFlash) {
                    post(mDebugFlash);
                    postInvalidate();
                }
                return true; // ...but I eated it
            }
        }
        return false;
    
public voidpoke(android.view.MotionEvent event)

        mLastPokeTime = event.getEventTime();
        if (DEBUG)
            Slog.v(TAG, "poked! size=" + getSize(mLastPokeTime));
        if (mShouldFlash) postInvalidate();
    
public voidsetFlash(float f)

        mFlashFrac = f;
        postInvalidate();
    
public voidsetFlashOnTouchCapture(boolean dbg)

        mShouldFlash = dbg;
        mFlashFrac = 0f;
        postInvalidate();