Search in sources :

Example 1 with Insets

use of android.graphics.Insets in project android_frameworks_base by ParanoidAndroid.

the class ViewGroup method computeOpticalInsets.

Insets computeOpticalInsets() {
    if (isLayoutModeOptical()) {
        int left = 0;
        int top = 0;
        int right = 0;
        int bottom = 0;
        for (int i = 0; i < mChildrenCount; i++) {
            View child = getChildAt(i);
            if (child.getVisibility() == VISIBLE) {
                Insets insets = child.getOpticalInsets();
                left = Math.max(left, insets.left);
                top = Math.max(top, insets.top);
                right = Math.max(right, insets.right);
                bottom = Math.max(bottom, insets.bottom);
            }
        }
        return Insets.of(left, top, right, bottom);
    } else {
        return Insets.NONE;
    }
}
Also used : Insets(android.graphics.Insets) Paint(android.graphics.Paint)

Example 2 with Insets

use of android.graphics.Insets in project android_frameworks_base by ParanoidAndroid.

the class View method setOpticalFrame.

private boolean setOpticalFrame(int left, int top, int right, int bottom) {
    Insets parentInsets = mParent instanceof View ? ((View) mParent).getOpticalInsets() : Insets.NONE;
    Insets childInsets = getOpticalInsets();
    return setFrame(left + parentInsets.left - childInsets.left, top + parentInsets.top - childInsets.top, right + parentInsets.left + childInsets.right, bottom + parentInsets.top + childInsets.bottom);
}
Also used : Insets(android.graphics.Insets)

Example 3 with Insets

use of android.graphics.Insets in project android_frameworks_base by ParanoidAndroid.

the class View method measure.

/**
     * <p>
     * This is called to find out how big a view should be. The parent
     * supplies constraint information in the width and height parameters.
     * </p>
     *
     * <p>
     * The actual measurement work of a view is performed in
     * {@link #onMeasure(int, int)}, called by this method. Therefore, only
     * {@link #onMeasure(int, int)} can and must be overridden by subclasses.
     * </p>
     *
     *
     * @param widthMeasureSpec Horizontal space requirements as imposed by the
     *        parent
     * @param heightMeasureSpec Vertical space requirements as imposed by the
     *        parent
     *
     * @see #onMeasure(int, int)
     */
public final void measure(int widthMeasureSpec, int heightMeasureSpec) {
    boolean optical = isLayoutModeOptical(this);
    if (optical != isLayoutModeOptical(mParent)) {
        Insets insets = getOpticalInsets();
        int oWidth = insets.left + insets.right;
        int oHeight = insets.top + insets.bottom;
        widthMeasureSpec = MeasureSpec.adjust(widthMeasureSpec, optical ? -oWidth : oWidth);
        heightMeasureSpec = MeasureSpec.adjust(heightMeasureSpec, optical ? -oHeight : oHeight);
    }
    if ((mPrivateFlags & PFLAG_FORCE_LAYOUT) == PFLAG_FORCE_LAYOUT || widthMeasureSpec != mOldWidthMeasureSpec || heightMeasureSpec != mOldHeightMeasureSpec) {
        // first clears the measured dimension flag
        mPrivateFlags &= ~PFLAG_MEASURED_DIMENSION_SET;
        resolveRtlPropertiesIfNeeded();
        // measure ourselves, this should set the measured dimension flag back
        onMeasure(widthMeasureSpec, heightMeasureSpec);
        // an exception to warn the developer
        if ((mPrivateFlags & PFLAG_MEASURED_DIMENSION_SET) != PFLAG_MEASURED_DIMENSION_SET) {
            throw new IllegalStateException("onMeasure() did not set the" + " measured dimension by calling" + " setMeasuredDimension()");
        }
        mPrivateFlags |= PFLAG_LAYOUT_REQUIRED;
    }
    mOldWidthMeasureSpec = widthMeasureSpec;
    mOldHeightMeasureSpec = heightMeasureSpec;
}
Also used : Insets(android.graphics.Insets) Paint(android.graphics.Paint) Point(android.graphics.Point)

Example 4 with Insets

use of android.graphics.Insets in project android_frameworks_base by ParanoidAndroid.

the class GridLayout method onDebugDraw.

/**
     * @hide
     */
@Override
protected void onDebugDraw(Canvas canvas) {
    Paint paint = new Paint();
    paint.setStyle(Paint.Style.STROKE);
    paint.setColor(Color.argb(50, 255, 255, 255));
    Insets insets = getOpticalInsets();
    int top = getPaddingTop() + insets.top;
    int left = getPaddingLeft() + insets.left;
    int right = getWidth() - getPaddingRight() - insets.right;
    int bottom = getHeight() - getPaddingBottom() - insets.bottom;
    int[] xs = horizontalAxis.locations;
    if (xs != null) {
        for (int i = 0, length = xs.length; i < length; i++) {
            int x = left + xs[i];
            drawLine(canvas, x, top, x, bottom, paint);
        }
    }
    int[] ys = verticalAxis.locations;
    if (ys != null) {
        for (int i = 0, length = ys.length; i < length; i++) {
            int y = top + ys[i];
            drawLine(canvas, left, y, right, y, paint);
        }
    }
    super.onDebugDraw(canvas);
}
Also used : Insets(android.graphics.Insets) Paint(android.graphics.Paint) Paint(android.graphics.Paint)

Example 5 with Insets

use of android.graphics.Insets in project platform_frameworks_base by android.

the class NinePatchDrawable method computeBitmapSize.

private void computeBitmapSize() {
    final NinePatch ninePatch = mNinePatchState.mNinePatch;
    if (ninePatch == null) {
        return;
    }
    final int sourceDensity = ninePatch.getDensity();
    final int targetDensity = mTargetDensity;
    final Insets sourceOpticalInsets = mNinePatchState.mOpticalInsets;
    if (sourceOpticalInsets != Insets.NONE) {
        final int left = Drawable.scaleFromDensity(sourceOpticalInsets.left, sourceDensity, targetDensity, true);
        final int top = Drawable.scaleFromDensity(sourceOpticalInsets.top, sourceDensity, targetDensity, true);
        final int right = Drawable.scaleFromDensity(sourceOpticalInsets.right, sourceDensity, targetDensity, true);
        final int bottom = Drawable.scaleFromDensity(sourceOpticalInsets.bottom, sourceDensity, targetDensity, true);
        mOpticalInsets = Insets.of(left, top, right, bottom);
    } else {
        mOpticalInsets = Insets.NONE;
    }
    final Rect sourcePadding = mNinePatchState.mPadding;
    if (sourcePadding != null) {
        if (mPadding == null) {
            mPadding = new Rect();
        }
        mPadding.left = Drawable.scaleFromDensity(sourcePadding.left, sourceDensity, targetDensity, false);
        mPadding.top = Drawable.scaleFromDensity(sourcePadding.top, sourceDensity, targetDensity, false);
        mPadding.right = Drawable.scaleFromDensity(sourcePadding.right, sourceDensity, targetDensity, false);
        mPadding.bottom = Drawable.scaleFromDensity(sourcePadding.bottom, sourceDensity, targetDensity, false);
    } else {
        mPadding = null;
    }
    mBitmapHeight = Drawable.scaleFromDensity(ninePatch.getHeight(), sourceDensity, targetDensity, true);
    mBitmapWidth = Drawable.scaleFromDensity(ninePatch.getWidth(), sourceDensity, targetDensity, true);
    final NinePatch.InsetStruct insets = ninePatch.getBitmap().getNinePatchInsets();
    if (insets != null) {
        Rect outlineRect = insets.outlineRect;
        mOutlineInsets = NinePatch.InsetStruct.scaleInsets(outlineRect.left, outlineRect.top, outlineRect.right, outlineRect.bottom, targetDensity / (float) sourceDensity);
        mOutlineRadius = Drawable.scaleFromDensity(insets.outlineRadius, sourceDensity, targetDensity);
    } else {
        mOutlineInsets = null;
    }
}
Also used : Rect(android.graphics.Rect) Insets(android.graphics.Insets) NinePatch(android.graphics.NinePatch) Paint(android.graphics.Paint)

Aggregations

Insets (android.graphics.Insets)73 Paint (android.graphics.Paint)53 Rect (android.graphics.Rect)35 TextPaint (android.text.TextPaint)26 Drawable (android.graphics.drawable.Drawable)15 Point (android.graphics.Point)10 NinePatch (android.graphics.NinePatch)5 Layout (android.text.Layout)5 StaticLayout (android.text.StaticLayout)5 LongSparseLongArray (android.util.LongSparseLongArray)4