Closed Zellerpooh closed 6 years ago
给你留了张长图,你可以去试试 "http://share.fanjuer.cn/shiyongshuoming/shiyongshuoming.jpg"
代码没考虑这种情况,我看看吧, 最近比较忙。
这里有个图片缩放系数最大值设定 static final float MAX_SCALE = 3.8f;
你把这个值改大一点,改成10倍之类的。 @Zellerpooh 然后当图片缩放后的宽度超过了 屏幕宽度,就可以快乐的上下滑动了
ImageWatcher
onScroll() ...
if ("horizontal".equals(imageOrientation)) {
float translateXEdge = vsDefault.width * (vsCurrent.scaleX - 1) / 2;
if (vsCurrent.translationX >= translateXEdge && moveX > 0) {
// 图片位于边界,且仍然尝试向边界外拽动。。转化为Slide手势,可以进行viewpager的翻页滑动
mTouchMode = TOUCH_MODE_SLIDE;
} else if (vsCurrent.translationX <= -translateXEdge && moveX < 0) {
// 同上
mTouchMode = TOUCH_MODE_SLIDE;
}
} else if ("vertical".equals(imageOrientation)) {
if (vsDefault.width * vsCurrent.scaleX <= mWidth) {
// 同上
mTouchMode = TOUCH_MODE_SLIDE; 【走这里了】
} else {
float translateXRightEdge = vsDefault.width * vsCurrent.scaleX / 2 - vsDefault.width / 2;
float translateXLeftEdge = mWidth - vsDefault.width * vsCurrent.scaleX / 2 - vsDefault.width / 2;
if (vsCurrent.translationX >= translateXRightEdge && moveX > 0) {
// 同上
mTouchMode = TOUCH_MODE_SLIDE;
} else if (vsCurrent.translationX <= translateXLeftEdge && moveX < 0) {
// 同上
mTouchMode = TOUCH_MODE_SLIDE;
}
}
}
竖直长图正在展现的时刻状态,宽度没有满一屏幕,事件直接都丢给了 ViewPager
。这里进一步要优化的话,应该是左右滑动事件给ViewPager
, 上下事件作用ImageView
本身。 哎,
大图感觉可以把这个结合进去,可惜我太菜了,还不是完全看得懂你的代码 https://github.com/davemorrissey/subsampling-scale-image-view