У меня есть требование масштабировать изображение на основе текущей ориентации экрана. Если экран LANDSCAPE, а изображение LANDSCAPE, то масштабируйте его до FIT_XY. В противном случае, если изображение PORTRAIT, масштабируйте его до FIT_CENTER. И наоборот для ориентации экрана ПОРТРЕТ.
Вот что я сделал до сих пор:
Glide.with(getContext())
.asBitmap()
.load(displayedImageFile)
.transition(BitmapTransitionOptions.withCrossFade(1000))
.into(new SimpleTarget<Bitmap>()
{
@Override
public void onResourceReady(Bitmap bitmap, Transition<? super Bitmap> transition)
{
int imgOrt = (bitmap.getWidth() >= bitmap.getHeight()) ? Configuration.ORIENTATION_LANDSCAPE : Configuration.ORIENTATION_PORTRAIT;
switch (screenOrientation)
{
case Configuration.ORIENTATION_PORTRAIT:
if (imgOrt == Configuration.ORIENTATION_PORTRAIT)
imageview.setScaleType(ImageView.ScaleType.FIT_XY);
else
imageview.setScaleType(ImageView.ScaleType.FIT_CENTER);
break;
case Configuration.ORIENTATION_LANDSCAPE:
if (imgOrt == Configuration.ORIENTATION_LANDSCAPE)
imageview.setScaleType(ImageView.ScaleType.FIT_XY);
else
imageview.setScaleType(ImageView.ScaleType.FIT_CENTER);
break;
}
imageview.setImageBitmap(bitmap);
}
});
Есть идеи, почему withCrossFade()
не работает? Я новичок с Glide. На самом деле, только началось вчера с Glide. Я извиняюсь, если это что-то простое, но я не могу понять, что не так с моим кодом.
Единственное, что я подозреваю, это то, что анимация не работает, когда я использую imageview.setImageBitmap(bitmap);
? Есть идеи, как преодолеть эту проблему?