[英]Create a viewpager image gallery in android
我正在创建一个简单的viewpager图像库,有一个viewpager,并且每个页面都有一个可以缩放和平移图像的触摸图像视图。
我已成功在其上显示图像。 问题是,当我交换图片时,缩放级别会保留。 例如,当我放大第一页时,我尝试切换到第二页,然后返回到第一页,并且缩放级别未恢复为默认值。
private class CustomPagerAdapter extends PagerAdapter {
Context mContext;
LayoutInflater mLayoutInflater;
public CustomPagerAdapter(Context context) {
mContext = context;
mLayoutInflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public int getCount() {
return show_list.size();
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == ((LinearLayout) object);
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
View itemView = mLayoutInflater.inflate(R.layout.activity_zoom_item, container, false);
final TouchImageView imageView = (TouchImageView) itemView.findViewById(R.id.img);
if (show_list.get(position).contains("http://")) {
ImageRequest ir = new ImageRequest(show_list.get(position),
new Response.Listener<Bitmap>() {
@Override
public void onResponse(Bitmap response) {
imageView.setImageBitmap(response);
imageView.resetZoom();
}
}, 0, 0, null, null);
gs.addToRequestQueue(ir, "get_img");
}
container.addView(itemView);
return itemView;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((LinearLayout) object);
}
}
触摸图像视图本身具有重置缩放级别的功能,唯一的问题是如何获取“页面更改时”状态并获取该页面的视图?
谢谢
pager.setOnPageChangeListener(new OnPageChangeListener(){
@Override
public void onPageScrollStateChanged(int arg0) {
// TODO Auto-generated method stub
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
// TODO Auto-generated method stub
}
@Override
public void onPageSelected(int arg0) {
// TODO Auto-generated method stub
View rootview = pager.findViewWithTag(pager.getCurrentItem());
TouchImageView imageView = (TouchImageView) rootview.findViewById(R.id.img);
imageView.resetZoom();
}
});
和
private class CustomPagerAdapter extends PagerAdapter {
Context mContext;
LayoutInflater mLayoutInflater;
public CustomPagerAdapter(Context context) {
mContext = context;
mLayoutInflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public int getCount() {
return show_list.size();
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == ((LinearLayout) object);
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
View itemView = mLayoutInflater.inflate(R.layout.activity_zoom_item, container, false);
final TouchImageView imageView = (TouchImageView) itemView.findViewById(R.id.img);
if (show_list.get(position).contains("http://")) {
ImageRequest ir = new ImageRequest(show_list.get(position),
new Response.Listener<Bitmap>() {
@Override
public void onResponse(Bitmap response) {
imageView.setImageBitmap(response);
}
}, 0, 0, null, null);
gs.addToRequestQueue(ir, "get_img");
}
itemView.setTag(position);
container.addView(itemView);
return itemView;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((LinearLayout) object);
}
}
只是注意到需要使用set标签在onPageSelected上获取视图,感谢ρяσsρєяK的帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.