Как я могу центрировать значок на Stickerview? - PullRequest
0 голосов
/ 08 марта 2020

Я хочу центрировать значки на виде стикера, когда стикер поворачивается, но его положение искажено, как на рисунке, как я могу это исправить?

введите описание изображения здесь

Это то, что я хочу сделать;

введите описание изображения здесь

Код, который я использую;

getStickerPoints(handlingSticker, bitmapPoints);
            float x1 = bitmapPoints[0];
            float y1 = bitmapPoints[1];
            float x2 = bitmapPoints[2];
            float y2 = bitmapPoints[3];
            float x3 = bitmapPoints[4];
            float y3 = bitmapPoints[5];
            float x4 = bitmapPoints[6];
            float y4 = bitmapPoints[7];

            if (showBorder) {
                canvas.drawLine(x1, y1, x2, y2, borderPaint);
                canvas.drawLine(x1, y1, x3, y3, borderPaint);
                canvas.drawLine(x2, y2, x4, y4, borderPaint);
                canvas.drawLine(x4, y4, x3, y3, borderPaint);
            }

            if (showIcons) {
                float rotation = calculateRotation(x4, y4, x3, y3);
                if (handlingSticker.isDrawableSticker()) {
                    for (int i = 0; i < drawable_sticker_icons.size(); i++) {
                        BitmapStickerIcon icon = drawable_sticker_icons.get(i);
                        switch (icon.getPosition()) {
                            case BitmapStickerIcon.LEFT_TOP:
                            configIconMatrix(icon, x1, y1, rotation);
                            break;
                        case BitmapStickerIcon.RIGHT_TOP:
                            configIconMatrix(icon, x2, y2, rotation);
                            break;
                        case BitmapStickerIcon.LEFT_BOTTOM:
                            configIconMatrix(icon, x3, y3, rotation);
                            break;
                        case BitmapStickerIcon.RIGHT_BOTOM:
                            configIconMatrix(icon, x4, y4, rotation);
                            break;
                        case BitmapStickerIcon.TOP_CENTER:
                            configIconMatrix(icon, (x1 + x2) / 2, y2, rotation);
                            break;
                        case BitmapStickerIcon.BOTTOM_CENTER:
                            configIconMatrix(icon, (x3 + x4) / 2, y4, rotation);
                            break;
                        case BitmapStickerIcon.LEFT_CENTER:
                            configIconMatrix(icon, x3, (y1 + y3) / 2, rotation);
                            break;
                        case BitmapStickerIcon.RIGHT_CENTER:
                            configIconMatrix(icon, x4, (y2 + y4) / 2, rotation);
                            break;
                    }
                    icon.draw(canvas, borderPaint);
                }
            }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...