Библиотека Android Glide не работает с переходами общих элементов

Я хочу использовать библиотеку Glide вместо Universal Image Loader, но я столкнулся с проблемой в отношении общих переходов элементов.

В моей простой песочнице я создал следующий переход с использованием UIL: https://dl.dropboxusercontent.com/u/97787025/device-2015-06-18-113333.mp4

Довольно просто, и все отлично. Но когда я использовал Glide, это выглядит не так хорошо: https://dl.dropboxusercontent.com/u/97787025/device-2015-06-18-114508.mp4

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

Первая деятельность:

public class MainActivity extends BaseActivity { @Override public void onCreate(Bundle bundle) { super.onCreate(bundle); setContentView(R.layout.main); final ImageView iv = (ImageView) findViewById(R.id.main_image); displayImageGlide(BaseActivity.IMAGE_URL, iv, true); Button button = (Button) findViewById(R.id.main_button); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(getApplicationContext(), DifferentActivity.class); startActivity(intent, iv); } }); } } 

И второе:

 public class DifferentActivity extends BaseActivity { @Override public void onCreate(Bundle bundle) { super.onCreate(bundle); setContentView(R.layout.different); ImageView imageView = (ImageView) findViewById(R.id.diff_image); displayImageGlide(BaseActivity.IMAGE_URL, imageView, false); } } 

BaseActivity просто содержит displayImageGlide

 public void displayImageGlide(String url, ImageView imageView) { Glide.with(this).load(url) .asBitmap().transform(new CustomTransformation(this)) .skipMemoryCache(true) .diskCacheStrategy(DiskCacheStrategy.SOURCE) .into(imageView); } private static class CustomTransformation extends BitmapTransformation { public CustomTransformation(Context context) { super(context); } @Override protected Bitmap transform(BitmapPool pool, Bitmap toTransform, int outWidth, int outHeight) { return bitmapChanger(toTransform, outWidth, outHeight); } @Override public String getId() { return "some_id_1"; } } private static Bitmap bitmapChanger(Bitmap bitmap, int desiredWidth, int desiredHeight) { float originalWidth = bitmap.getWidth(); float originalHeight = bitmap.getHeight(); float scaleX = desiredWidth / originalWidth; float scaleY = desiredHeight / originalHeight; //Use the larger of the two scales to maintain aspect ratio float scale = Math.max(scaleX, scaleY); Matrix matrix = new Matrix(); matrix.setScale(scale, scale); //If the scaleY is greater, we need to center the image if(scaleX < scaleY) { float tx = (scale * originalWidth - desiredWidth) / 2f; matrix.postTranslate(-tx, 0f); } Bitmap result = Bitmap.createBitmap(desiredWidth, desiredHeight, bitmap.getConfig() != null ? bitmap.getConfig() : Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(result); canvas.drawBitmap(bitmap, matrix, new Paint()); return result; } 

Я попытался удалить строки кэша из Glide Builder (используется для предотвращения кэширования того, что я пытаюсь настроить), но это не помогло. Хотелось бы принять Glide, но это своего рода разрыватель сделок, если это не сработает. Если у кого-то есть какой-то вклад, я был бы признателен, спасибо!

Я попробовал свой код и получил тот же результат, затем я попробовал выполнить следующую реализацию: https://github.com/codepath/android_guides/wiki/Shared-Element-Activity-Transition

И внес некоторые изменения, которые я считаю ключевыми здесь:

CenterCrop должен быть установлен на ImageView, если мы установим его с помощью Glide, он вызывает ту же ошибку. activity_main.xml

  <ImageView android:id="@+id/ImageView" android:layout_width="match_parent" android:layout_height="150dp" android:layout_centerInParent="true" android:transitionName="detail_image" android:scaleType="centerCrop" /> 

BaseActivity.java В MainActivity dontTransform должен быть правдой, а на DifferentActivity false.

  public void displayImageGlide(String url, ImageView imageView, Boolean dontTransform) { if (dontTransform) { Glide.with(this).load(url) .skipMemoryCache(true) .diskCacheStrategy(DiskCacheStrategy.SOURCE) .dontTransform() .into(imageView); return; } Glide.with(this).load(url) .skipMemoryCache(true) .diskCacheStrategy(DiskCacheStrategy.SOURCE) .into(imageView); } 

Изменить, посмотреть, как это выглядит: https://www.dropbox.com/s/30s5l8awxogltls/device-2015-06-23-153153.mp4?dl=0