Glide transform () из BitmapTransformation не вызывается - PullRequest
0 голосов
/ 07 июня 2018

Я пытаюсь повернуть свое изображение с помощью Glide.Думаю, проблема в том, что метод transform () не вызывается.Поэтому System.out.print никогда не отображается, но в то же время изображение корректно поворачивается на телефоне, но на эмуляторе Android Studio ничего не поворачивается (оба Android 3.0.0, API 26).Я использую Glide 4.7.1

Надеюсь, вы мне поможете:

BitmapTransformation:

public class RotateTransformation extends BitmapTransformation {

private static final String ID = "com.example.app.aim_app.RotateTransformation";
private static final byte[] ID_BYTES = ID.getBytes(Charset.forName("UTF-8"));
private final float rotateRotationAngle;

public RotateTransformation(final float rotateRotationAngle) {
    this.rotateRotationAngle = rotateRotationAngle;
}

@Override
public Bitmap transform(BitmapPool pool, Bitmap toTransform, int outWidth, int outHeight) {
    if (toTransform.getWidth() == outWidth && toTransform.getHeight() == outHeight) {
        System.out.print("notTransform: " + outWidth + " " + outHeight + " " + toTransform.getWidth() + " " + toTransform.getHeight());
        return toTransform;
    }
    System.out.print("transform: " + outWidth + " " + outHeight + " " + toTransform.getWidth() + " " + toTransform.getHeight());
    Matrix matrix = new Matrix();
    matrix.postRotate(rotateRotationAngle);

    return Bitmap.createBitmap(toTransform, 0, 0, toTransform.getWidth(), toTransform.getHeight(), matrix, true);
}

@Override
public boolean equals(Object o) {
    if (o instanceof RotateTransformation) {
        RotateTransformation other = (RotateTransformation) o;
        return rotateRotationAngle == other.rotateRotationAngle;
    }
    return false;
}

@Override
public int hashCode() {
    return Util.hashCode(ID.hashCode(), Util.hashCode(rotateRotationAngle));
}

@Override
public void updateDiskCacheKey(MessageDigest messageDigest) {
    messageDigest.update(ID_BYTES);

    byte[] radiusData = ByteBuffer.allocate(4).putFloat(rotateRotationAngle).array();
    messageDigest.update(radiusData);
}

Использование RotateTransformation

if (....) {
   GlideApp.with(ActivityManager.getCurrentActivity()).load(resource).transform(new RotateTransformation(180)).into(imageView);
} else {
   GlideApp.with(ActivityManager.getCurrentActivity()).load(resource).transform(new RotateTransformation(90)).into(imageView);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...