我在两个片段之间有一个完全工作的共享元素转换,比如A到B,它们都共享一个ImageView。除非我在B上替换共享的ImageView,否则一切正常。目前我正在使用以下代码更改它:
Glide.with(getActivity())
.load(getArguments().getString(Constants.APPVIEW_FEATURE_IMAGE_URL)).asBitmap()
.into(new SimpleTarget<Bitmap>() {
@Override
public void onResourceReady(Bitmap resource, GlideAnimation<? super Bitmap> glideAnimation) {
if (getView() != null) {
((ImageView) getView().findViewWithTag(Constants.TAG_FGRAPHIC)).setImageBitmap(resource);
}
}
});
我将从B上的A接收的ImageView替换为更高的定义,因为这是一个将从listView扩展到全宽标题的标题Image。
问题在于当从B返回到A时,动画出错了,因为当我按Back时,图像会立即改变尺寸,而不是使用从B尺寸缩小到A尺寸的动画。它仍然正确地从标题移动到A位置,这只是尺寸问题。
如果我不替换图像,则不会发生任何问题,一切正常。
有什么想法吗?感谢。
答案 0 :(得分:0)
我不知道如何用Glide做到这一点,但这就是我用Picasso做的。
Picasso.with(context)
.load(AppController.getInstance().getThumbor().buildImage(url)
.resize(widthPlaceholder, heightPlaceholder)
.fitIn()
.toUrl())
.placeholder(R.color.light_gray)
.centerCrop()
.noFade()
.config(Bitmap.Config.RGB_565)
.into(target);
Target target = new Target() {
@Override
public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
Drawable d = new BitmapDrawable(context.getResources(), bitmap);
Picasso.with(context)
.load(AppController.getInstance().getThumbor().buildImage(url)
.resize(width, height)
.fitIn()
.toUrl())
.placeholder(d)
.centerCrop()
.noFade()
.config(Bitmap.Config.RGB_565)
.into(imageView);
}
@Override
public void onBitmapFailed(Drawable errorDrawable) {
Picasso.with(context)
.load(AppController.getInstance().getThumbor().buildImage(url)
.resize(width, height)
.fitIn()
.toUrl())
.placeholder(R.color.light_gray)
.config(Bitmap.Config.RGB_565)
.centerCrop()
.noFade()
.into(imageView);
}
@Override
public void onPrepareLoad(Drawable placeHolderDrawable) {
Picasso.with(context)
.load(AppController.getInstance().getThumbor().buildImage(url)
.resize(width, height)
.fitIn()
.toUrl())
.placeholder(placeHolderDrawable)
.config(Bitmap.Config.RGB_565)
.centerCrop()
.noFade()
.into(imageView);
}
};
我正在加载较低分辨率的图片,我将其作为占位符(背景图片),而不是触发更高分辨率的图片加载。