Я пытаюсь сделать переход android sharedElement для сканирования онлайн-изображения по Glide, пока изображение gif, а изображения отображаются в viewPager.Я обнаружил, что щелчок ImageView просто отображает первый кадр, когда imageView выполняет переход sharedElement.следующий код в моем проекте.
Glide.with(context)
.load(imageUrl)
.diskCacheStrategy(DiskCacheStrategy.SOURCE)
.listener(new RequestListener<String, GlideDrawable>() {
@Override
public boolean onException(Exception e, String model, Target<GlideDrawable> target, boolean isFirstResource) {
return false;
}
@Override
public boolean onResourceReady(GlideDrawable resource, String model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) {
if (imageView == null) {
return false;
}
if (imageView.getScaleType() != ImageView.ScaleType.FIT_XY) {
imageView.setScaleType(ImageView.ScaleType.FIT_XY);
}
ViewGroup.LayoutParams params = imageView.getLayoutParams();
int vw = imageView.windowW;
float scale = (float) vw / resource.getIntrinsicWidth();
final int vh = (int) ((float) resource.getIntrinsicHeight() * scale);
params.height = vh + imageView.getPaddingTop() + imageView.getPaddingBottom();
imageView.setLayoutParams(params);
imageView.setVH(vh);
return false;
}
})
.into(imageView);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
setEnterSharedElementCallback(new SharedElementCallback() {
@Override
public void onMapSharedElements(List<String> names, Map<String, View> sharedElements) {
sharedElements.clear();
View view = mViewPager.getAdapter().getItem(mViewPager.getCurrentItem()).getImg();
sharedElements.put(ViewCompat.getTransitionName(view), view);
}
});
}