繁体   English   中英

使用SimpleTarget时的滑行过渡(withCrossFade)

[英]Glide Transition (withCrossFade) when using SimpleTarget

我需要根据当前屏幕方向缩放图像。 如果屏幕为LANDSCAPE并且图像为LANDSCAPE,则将其缩放为FIT_XY。 否则,如果图像为PORTRAIT,则将其缩放为FIT_CENTER。 对于PORTRAIT屏幕方向,反之亦然。

这是我到目前为止所做的:

 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);时动画无法正常工作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)
                    }
                }
            })

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM