Я пытаюсь повернуть свое изображение с помощью 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);
}