Увеличение и уменьшение высоты объекта изображения с помощью кнопок или панели поиска - PullRequest
0 голосов
/ 17 октября 2018

Я сделал этот проект из этого открытого источника https://github.com/uptechteam/MotionViews-Android

Я на самом деле создаю приложение Memegenerator, проблема в том, когда я изменяю высоту / ширину одного из растрового изображения внутри холста Растровое изображение также перемещаетсяв сторону, но на самом деле он не должен двигаться от оси xy, пока я прокручиваю панель поиска, вот в чем проблема.

Demo of the issue

Это класс ImageEntity

public ImageEntity(@NonNull Layer layer,
                   @NonNull Bitmap bitmap,
                   @IntRange(from = 1) int canvasWidth,
                   @IntRange(from = 1) int canvasHeight) {
    super(layer, canvasWidth, canvasHeight);

    this.bitmap = bitmap;


    layer.widthSize(bitmap.getWidth());
    layer.heightSize(bitmap.getHeight());

    updateIMGEntity(false);
}


public void updateIMGEntity() {
    updateIMGEntity(true);
}

private void updateIMGEntity(boolean moveToPreviousCenter) {

    // save previous center
    PointF oldCenter = absoluteCenter();

    Bitmap newBitmap = Bitmap.createScaledBitmap(bitmap, layer.getWidth(),
            layer.getHeight(), false);

    // recycle previous bitmap (if not reused) as soon as possible
    if (bitmap != null && bitmap != newBitmap && !bitmap.isRecycled()) {
        bitmap.recycle();
    }

    this.bitmap = newBitmap;

    float width = bitmap.getWidth();
    float height = bitmap.getHeight();

    @SuppressWarnings("UnnecessaryLocalVariable")
    float widthAspect = 1.0F * canvasWidth / height;

    // for text we always match text width with parent width
    this.holyScale = widthAspect;

    // initial position of the entity
    srcPoints[0] = 0; srcPoints[1] = 0;
    srcPoints[2] = width; srcPoints[3] = 0;
    srcPoints[4] = width; srcPoints[5] = height;
    srcPoints[6] = 0; srcPoints[7] = height;
    srcPoints[8] = 0; srcPoints[8] = 0;

    if (moveToPreviousCenter) {
        // move to previous center
        moveCenterTo(oldCenter);

    }
}


@Override
public void drawContent(@NonNull Canvas canvas, @Nullable Paint drawingPaint) {

    //updateMatrix();
    canvas.drawBitmap(bitmap, matrix, drawingPaint);
    //release();
}

Пожалуйста, кто-нибудь, помогите мне.

...