public class

ShortTextLayoutHelper

extends LayoutHelper

 java.lang.Object

androidx.wear.watchface.complications.rendering.utils.LayoutHelper

↳androidx.wear.watchface.complications.rendering.utils.ShortTextLayoutHelper

Gradle dependencies

compile group: 'androidx.wear.watchface', name: 'watchface-complications-rendering', version: '1.3.0-alpha03'

  • groupId: androidx.wear.watchface
  • artifactId: watchface-complications-rendering
  • version: 1.3.0-alpha03

Artifact androidx.wear.watchface:watchface-complications-rendering:1.3.0-alpha03 it located at Google repository (https://maven.google.com/)

Overview

Layout helper for TYPE_SHORT_TEXT.

Summary

Constructors
publicShortTextLayoutHelper()

Methods
public voidgetIconBounds(Rect outRect)

public Layout.AlignmentgetShortTextAlignment()

public voidgetShortTextBounds(Rect outRect)

public intgetShortTextGravity()

public Layout.AlignmentgetShortTitleAlignment()

public voidgetShortTitleBounds(Rect outRect)

public intgetShortTitleGravity()

public voidgetSmallImageBounds(Rect outRect)

from LayoutHelpergetBounds, getComplicationData, getLargeImageBounds, getLongTextAlignment, getLongTextBounds, getLongTextGravity, getLongTitleAlignment, getLongTitleBounds, getLongTitleGravity, getRangedValueBounds, hasIcon, hasLongTitle, hasShortText, hasShortTitle, hasSmallImage, setComplicationData, setHeight, setWidth, update
from java.lang.Objectclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Constructors

public ShortTextLayoutHelper()

Methods

public void getIconBounds(Rect outRect)

Parameters:

outRect: that receives the computed bounds for the icon

public void getSmallImageBounds(Rect outRect)

Parameters:

outRect: that receives the computed bounds for the small image

public Layout.Alignment getShortTextAlignment()

Returns:

The to use with short text

public int getShortTextGravity()

Returns:

Gravity to use with short text

public void getShortTextBounds(Rect outRect)

Parameters:

outRect: that receives the computed bounds for the short title text

public Layout.Alignment getShortTitleAlignment()

Returns:

The to use with short title text

public int getShortTitleGravity()

Returns:

Gravity to use with short title text

public void getShortTitleBounds(Rect outRect)

Parameters:

outRect: that receives the computed bounds for the short title text

Source

/*
 * Copyright 2020 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package androidx.wear.watchface.complications.rendering.utils;

import static androidx.wear.watchface.complications.rendering.utils.LayoutUtils.getBottomHalf;
import static androidx.wear.watchface.complications.rendering.utils.LayoutUtils.getCentralSquare;
import static androidx.wear.watchface.complications.rendering.utils.LayoutUtils.getLeftPart;
import static androidx.wear.watchface.complications.rendering.utils.LayoutUtils.getRightPart;
import static androidx.wear.watchface.complications.rendering.utils.LayoutUtils.getTopHalf;
import static androidx.wear.watchface.complications.rendering.utils.LayoutUtils.isWideRectangle;

import android.graphics.Rect;
import android.support.wearable.complications.ComplicationData;
import android.text.Layout;
import android.view.Gravity;

import androidx.annotation.NonNull;
import androidx.annotation.RestrictTo;

/**
 * Layout helper for {@link ComplicationData#TYPE_SHORT_TEXT}.
 *
 */
@RestrictTo(RestrictTo.Scope.LIBRARY)
public class ShortTextLayoutHelper extends LayoutHelper {

    /** Used to avoid allocating a Rect object whenever needed. */
    private final Rect mBounds = new Rect();

    @Override
    public void getIconBounds(@NonNull Rect outRect) {
        if (!hasIcon() || hasSmallImage()) {
            outRect.setEmpty();
        } else {
            getBounds(outRect);
            if (isWideRectangle(outRect)) {
                // Left square part of the inner bounds
                getLeftPart(outRect, outRect);
            } else {
                // Use top half of the central square
                getCentralSquare(outRect, outRect);
                getTopHalf(outRect, outRect);
                getCentralSquare(outRect, outRect);
            }
        }
    }

    @Override
    public void getSmallImageBounds(@NonNull Rect outRect) {
        if (!hasSmallImage()) {
            outRect.setEmpty();
        } else {
            getBounds(outRect);
            if (isWideRectangle(outRect)) {
                // Left square part of the inner bounds
                getLeftPart(outRect, outRect);
            } else {
                // Use top half of the central square
                getCentralSquare(outRect, outRect);
                getTopHalf(outRect, outRect);
                getCentralSquare(outRect, outRect);
            }
        }
    }

    @NonNull
    @Override
    public Layout.Alignment getShortTextAlignment() {
        getBounds(mBounds);
        if (isWideRectangle(mBounds) && hasIcon()) {
            // Wide rectangle with an icon available, align normal
            return Layout.Alignment.ALIGN_NORMAL;
        } else {
            // Otherwise, align center
            return Layout.Alignment.ALIGN_CENTER;
        }
    }

    @Override
    public int getShortTextGravity() {
        if (hasShortTitle() && !hasIcon()) {
            // If title is shown, align to bottom.
            return Gravity.BOTTOM;
        } else {
            // Otherwise, center text vertically
            return Gravity.CENTER_VERTICAL;
        }
    }

    @Override
    public void getShortTextBounds(@NonNull Rect outRect) {
        getBounds(outRect);
        if (hasIcon()) {
            if (isWideRectangle(outRect)) {
                // Text to the right of icon
                getRightPart(outRect, outRect);
            } else {
                // Text on bottom half of central square
                getCentralSquare(outRect, outRect);
                getBottomHalf(outRect, outRect);
            }
        } else if (hasShortTitle()) {
            // Text above title
            getTopHalf(outRect, outRect);
        }
        // Text only, no-op here.
    }

    @NonNull
    @Override
    public Layout.Alignment getShortTitleAlignment() {
        return getShortTextAlignment();
    }

    @Override
    public int getShortTitleGravity() {
        return Gravity.TOP;
    }

    @Override
    public void getShortTitleBounds(@NonNull Rect outRect) {
        if (hasIcon() || !hasShortTitle()) {
            outRect.setEmpty();
        } else {
            // Title is always on bottom half
            getBounds(outRect);
            getBottomHalf(outRect, outRect);
        }
    }
}