我使用带有图像的viewPager。我想只更改一个图像以重置缩放功能,如viewPager适配器中的notifyItemChanged
。
我添加了onPageChangeListener
,但我找不到使用onPageSelected
或destroyItem
。我该怎么办?
MyActivity:
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageSelected(int position) {
//I CAN'T FIND HOW TO RESET ZOOMING IMAGE AT POSITION
displayMetaInfo(position);
}
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
MyAdapter:
private class MyViewPagerAdapter extends PagerAdapter {
TouchImageView photoView;
@NonNull
@Override
public Object instantiateItem(@NonNull ViewGroup container, int position) {
LayoutInflater inflater = LayoutInflater.from(getApplicationContext());
View view = inflater.inflate(R.layout.show_images, container, false);
photoView = ViewUtil.findById(view, R.id.photoView);
Image image = allImages.get(position);
if (image != null) {
String path = image.getPath();
if (hasPathControl(path)) {
setImage();
loadImage(path, photoView);
}
container.addView(view);
return view;
}
@Override
public int getCount() {
return allImages.size();
}
@Override
public boolean isViewFromObject(@NonNull View view, @NonNull Object obj) {
return view == (obj);
}
@Override
public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
Mylog.i(TAG, " destroyItem position " + position);
container.removeView((View) object);
}
private void loadImage(String path, TouchImageView imageView) {
glideRequests.load(path)
.diskCacheStrategy(DiskCacheStrategy.NONE)
.dontTransform()
.override(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL)
.transition(withCrossFade())
.into(imageView);
}
}
答案 0 :(得分:0)
这里我重写onPageSelected()并通过调用getChildAt()方法获取视图。
我没有测试代码,但希望这会对你有帮助。 我之前使用过TouchImageView,但没试过。
@Override
public void onPageSelected(int position) {
if (position > 0) {
View view = mPager.getChildAt(position);
if (view != null) {
TouchImageView img = (TouchImageView) view.findViewById(R.id.image);
img.resetZoom();
}
}
}