android - 使用 SimpleTarget 时的滑动过渡(withCrossFade)

标签 android android-glide

我需要根据当前屏幕方向缩放图像。如果屏幕是 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);时动画不起作用?知道如何克服这个问题吗?

最佳答案

遇到这个问题,使用 Glide 4.8.0 通过以下方式解决了它(哦,还有 Kotlin,可以轻松翻译为 java):

Glide.with(context)
            .asBitmap()
            .load(Uri.fromFile(bitmapFile))
            .transition(BitmapTransitionOptions.withCrossFade())
            .apply(RequestOptions().diskCacheStrategy(DiskCacheStrategy.ALL).centerCrop())
            .into(object: CustomViewTarget<ImageView, Bitmap>(imageView) {
                override fun onLoadFailed(errorDrawable: Drawable?) {}
                override fun onResourceCleared(placeholder: Drawable?) {
                    imageView.setImageDrawable(placeholder)
                }
                override fun onResourceReady(resource: Bitmap, transition: Transition<in Bitmap>?) {
                    transition?.let {
                        val didSucceedTransition = transition.transition(resource, BitmapImageViewTarget(imageView))
                        if(!didSucceedTransition) imageView.setImageBitmap(resource)
                    }
                }
            })

关于android - 使用 SimpleTarget 时的滑动过渡(withCrossFade),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51168381/

相关文章:

java - 如何在使用 Glide 加载之前解密图像

java - 使用 Glide 从 URL 加载图像但不带扩展名

android - 如何增加 Glide android 中的缓存大小?

android - Glide - 没有来自 firebase 的显示图像

java - 参数的数量取决于之前的 Activity

java - 来自 Java 的提示更改错误

android - 清除ViewHolder的item RecyclerView中的动画

android - 图像未使用 Glide 加载

Android 应用程序在传递 Intent 黑白 Activity 时崩溃

android - onNewPicture() 什么时候被调用?