viewpager嵌套开源组件gesture-imageview实现图片浏览和缩放

gesture-imageview的github地址

下载后将包com.polites.android放入src中,如图:



直接可以在代码中构建gestureImageView的类实例并使用,在viewPager的adapter中重写:

		@Override
		public Object instantiateItem(ViewGroup container, int position) {
			GestureImageView iv = new GestureImageView(mContext);
			iv.setImageBitmap(your-bitmap-here);
			((ViewPager) container).addView(iv, 0);
			return iv;
		}

可以说,当这个imageView单独使用时,它的功能是挺完美的。

但当前版本的imageview被外层滑动组件嵌套时会有问题,不能直接嵌套使用,当左右滑动时,会默认应用viewpager的滑动(即使你并不想滑动viewpager,只是想拖动放大了之后的图片而已)。

viewPager的应用详见issue#30

找到com.polites.android.GestureImageViewTouchListener,我们要做的,就是判断当前imageview是否是被放大的状态,如果当前imageview被放大了,就禁止父组件消费触摸事件。

新加变量:

	private boolean zoomed;
新加方法:
	public boolean isZoomed(){
		return zoomed;
	}
	public void setZoomed(boolean zoomed){
		this.zoomed = zoomed;
	}

新加一句代码,在每次改变lastScale之后,判断是否恢复到原始或者进行了缩放:

(你可以在文件中搜索lastScale以找到它)

		lastScale = currentScale;
		/**
		 * recalculate zoomed after lastScale changed.
		 */
		zoomed = !(Math.abs(lastScale - startingScale) < 0.01);

在onTouch方法的开头,补充:

	@Override
	public boolean onTouch(View v, MotionEvent event) {
		if (isZoomed())
			image.getParent().requestDisallowInterceptTouchEvent(true);
如果被缩放,就禁止父组件消费。


修改之后,当且仅当 gesture-imageview被缩小到原始规模时,才可以进行viewpager的换页。

效果图:


PS:之后的其他#issue中也提到了,如果能更好地支持viewpager,比如当图片的边界顶到屏幕边界时变可以切换图片等等就好了。







  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值