我實現了使用ImageViewTouch畫廊:https://github.com/sephiroth74/ImageViewZoom 這使得使用DoupleTap和其他不錯的東西,它的偉大工程放大。
這些圖像被添加到PagerAdapter中,以啓用圖像之間的滑動操作。
但是,我目前在放大圖像時遇到了x軸滾動問題。 如果用戶放大圖像,我想禁用PageAdapters觸摸監聽器。
但是,如果沒有縮放,或者圖像放大並且位於圖像的最遠端,我想再打開它。延伸FragmentActivity
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.gallery_layout);
GalleryAdapter galleryAdapter = new GalleryAdapter(GalleryActivity.this, images);
// create view pager using the fragment adapter
final ViewPager viewPager = (ViewPager) findViewById(R.id.pager);
viewPager.setAdapter(galleryAdapter);
viewPager.setOnPageChangeListener(new PageChangeListener());
}
我的適配器
public class GalleryAdapter extends PagerAdapter {
Matrix imageMatrix;
private Activity activity;
private ArrayList<Bitmap> images;
private LayoutInflater inflater;
// constructor
public GalleryAdapter(Activity activity, ArrayList<Bitmap> images) {
this.activity = activity;
this.images = images;
}
@Override
public int getCount() {
return this.images.size();
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == ((RelativeLayout) object);
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
final ImageViewTouch imgDisplay;
final Bitmap image;
inflater = (LayoutInflater) activity
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
final View viewLayout = inflater.inflate(R.layout.gallery_image,
container, false);
imgDisplay = (ImageViewTouch) viewLayout.findViewById(R.id.image);
imgDisplay.setDisplayType(DisplayType.FIT_IF_BIGGER);
imgDisplay.setVisibility(View.GONE);
image = images.get(position);
imgDisplay.setDoubleTapEnabled(true);
if (null == GalleryAdapter.this.imageMatrix) {
GalleryAdapter.this.imageMatrix = new Matrix();
} else {
// get the current image matrix, if we want restore the
// previous matrix once the bitmap is changed
imageMatrix = imgDisplay.getDisplayMatrix();
}
imgDisplay.setImageBitmap(image, GalleryAdapter.this.imageMatrix
.isIdentity() ? null : GalleryAdapter.this.imageMatrix,
ImageViewTouchBase.ZOOM_INVALID,
ImageViewTouchBase.ZOOM_INVALID);
imgDisplay.setVisibility(View.VISIBLE);
viewLayout.setTag(imgDisplay);
((ViewPager) container).addView(viewLayout);
return viewLayout;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
((ViewPager) container).removeView((RelativeLayout) object);
}
GalleryActivity這是不是有人已經實現?
最好的問候, Henric
很好用!這種解決所有問題的簡單解決方案,爲什麼我之前沒有看到這一點:P – Henric