我必须扩展基于当前屏幕方向的图像的要求。如果屏幕是景观和形象景观,然后它扩展到FIT_XY。否则,如果图像是肖像,然后确定其比例来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()
不起作用?我与滑翔一个新手。其实,只要用滑翔昨天开始。我很抱歉,如果是简单的东西,但我不能锻炼什么是错我的代码。
我怀疑的唯一的事情是,当我使用imageview.setImageBitmap(bitmap);
动画不能正常工作?任何想法如何解决这个问题?
有这个问题,解决它以如下方式,使用滑翔4.8.0(哦,并与科特林,容易意译到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)
}
}
})