Использование углового компонента в AngularJS [duplicate]

Использовать путь. Это имеет преимущество, заключающееся в том, что он работает для API менее 21 (поэтому Arc также ограничен, поэтому I quad). Это проблема, потому что не все имеют Lollipop. Однако вы можете указать RectF и установить значения с ним и использовать arc обратно в API 1, но тогда вы не сможете использовать статический (без объявления нового объекта для сборки объекта).

Рисование закругленного прямоугольника:

    path.moveTo(right, top + ry);
    path.rQuadTo(0, -ry, -rx, -ry);
    path.rLineTo(-(width - (2 * rx)), 0);
    path.rQuadTo(-rx, 0, -rx, ry);
    path.rLineTo(0, (height - (2 * ry)));
    path.rQuadTo(0, ry, rx, ry);
    path.rLineTo((width - (2 * rx)), 0);
    path.rQuadTo(rx, 0, rx, -ry);
    path.rLineTo(0, -(height - (2 * ry)));
    path.close();

В качестве полной функции:

static public Path RoundedRect(float left, float top, float right, float bottom, float rx, float ry, boolean conformToOriginalPost) {
    Path path = new Path();
    if (rx < 0) rx = 0;
    if (ry < 0) ry = 0;
    float width = right - left;
    float height = bottom - top;
    if (rx > width/2) rx = width/2;
    if (ry > height/2) ry = height/2;
    float widthMinusCorners = (width - (2 * rx));
    float heightMinusCorners = (height - (2 * ry));

    path.moveTo(right, top + ry);
    path.rQuadTo(0, -ry, -rx, -ry);//top-right corner
    path.rLineTo(-widthMinusCorners, 0);
    path.rQuadTo(-rx, 0, -rx, ry); //top-left corner
    path.rLineTo(0, heightMinusCorners);

    if (conformToOriginalPost) {
        path.rLineTo(0, ry);
        path.rLineTo(width, 0);
        path.rLineTo(0, -ry);
    }
    else {
        path.rQuadTo(0, ry, rx, ry);//bottom-left corner
        path.rLineTo(widthMinusCorners, 0);
        path.rQuadTo(rx, 0, rx, -ry); //bottom-right corner
    }

    path.rLineTo(0, -heightMinusCorners);

    path.close();//Given close, last lineto can be removed.

    return path;
}

Вы хотите полностью привязать эти угловые биты, а не квадраты по ним. Это то, что подходит для соответствия TOOriginalPost. Просто подключитесь к контрольной точке.

Если вы хотите сделать это, но не заботитесь о материалах, предшествующих Lollipop, и настоятельно настаивайте на том, что если ваши rx и ry достаточно высоки, он должен нарисовать круг.

@TargetApi(Build.VERSION_CODES.LOLLIPOP)
static public Path RoundedRect(float left, float top, float right, float bottom, float rx, float ry, boolean conformToOriginalPost) {
    Path path = new Path();
    if (rx < 0) rx = 0;
    if (ry < 0) ry = 0;
    float width = right - left;
    float height = bottom - top;
    if (rx > width/2) rx = width/2;
    if (ry > height/2) ry = height/2;
    float widthMinusCorners = (width - (2 * rx));
    float heightMinusCorners = (height - (2 * ry));

    path.moveTo(right, top + ry);
    path.arcTo(right - 2*rx, top, right, top + 2*ry, 0, -90, false); //top-right-corner
    path.rLineTo(-widthMinusCorners, 0);
    path.arcTo(left, top, left + 2*rx, top + 2*ry, 270, -90, false);//top-left corner.
    path.rLineTo(0, heightMinusCorners);
    if (conformToOriginalPost) {
        path.rLineTo(0, ry);
        path.rLineTo(width, 0);
        path.rLineTo(0, -ry);
    }
    else {
        path.arcTo(left, bottom - 2 * ry, left + 2 * rx, bottom, 180, -90, false); //bottom-left corner
        path.rLineTo(widthMinusCorners, 0);
        path.arcTo(right - 2 * rx, bottom - 2 * ry, right, bottom, 90, -90, false); //bottom-right corner
    }

    path.rLineTo(0, -heightMinusCorners);

    path.close();//Given close, last lineto can be removed.
    return path;
}

Итак, concToOriginalPost на самом деле рисует закругленный прямоугольник без двух нижних битов.

2
задан VladosJS 31 July 2016 в 20:28
поделиться

1 ответ

Угловые документы пишут :

. Один из ключей к успешному обновлению - это сделать это постепенно, запустив две рамки бок о бок в одном и том же приложения и портирования угловых компонентов 1 на угловое 2 по одному. Это позволяет модернизировать даже большие и сложные приложения, не нарушая работу другого бизнеса, потому что работа может быть выполнена совместно и распределена в течение определенного периода времени. Модуль обновления в Angular 2 был спроектирован так, чтобы инкрементная модернизация была бесшовной.

и

Когда мы используем UpgradeAdapter, что мы действительно работаем с обеими версиями Angular в одно и то же время. Весь код Angular 2 работает в ракурсе «Угловое 2» и «Угловой код 1» в ракурсе «Угловой 1». Оба эти являются полностью полнофункциональными версиями фреймворков. Эмуляция отсутствует, поэтому мы можем ожидать, что у вас будут все функции и естественное поведение обеих фреймворков.

Что происходит в дополнение к тому, что компоненты и службы, управляемые одной инфраструктурой, могут взаимодействовать с теми из другой рамки. Это происходит в трех основных областях: инъекции зависимостей, DOM и обнаружении изменений.

То есть модуль обновления выполняет именно то, что вы хотите.

3
ответ дан meriton 19 August 2018 в 19:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: