Android图库 - 在滚动停止后在ImageView中替换位图

Android图库 - 在滚动停止后在ImageView中替换位图

问题描述:

我已经用多个图像编程了一个可缩放图库。Android图库 - 在滚动停止后在ImageView中替换位图

  • 图像可以放大。
  • 缩放图像可以被拖动。
  • 如果图像没有放大,图库可以滚动。

布局由一个TextView(画廊的名字)和Gallery本身LinearLayout的。

在画廊的项目由包含在它的ImageView(我读我需要的FrameLayout用于缩放)和TextView一个FrameLayout来显示图像的缩放状态RelativeLayout的。

我已经使用自定义View.OnTouchListener来实现缩放。

现在我试图替换图像ImageView后的画廊已经停止了高分辨率画面滚动,使用户可以放大更好/更。

我做了这个与OnItemSelectedListenersetCallbackDuringFling为false。

即使你快速地扔掉屏幕,这个工作正常。
但是,如果你把你的手指上显示和移动它慢慢到边缘时,OnItemSelectedListener是之前解雇下一个项目达到了中心和滚动动画停止。相反,画廊跳跃,就像它失去了联系联系,并立即在画廊中心的下一个项目。缓慢移动手指时,同一个项目上也会多次调用OnItemSelectedListener(我通过保存最后选定项目的位置来避免此问题)。

所以(长篇故事短片)我正在寻找一个回调/监听器来调用Gallery的“滚动/对齐网格”效果。我也试过AnimationListener,但是当我呼叫getAnimation时,画廊会返回null。

我绝望在这里......任何人都可以帮忙吗?

问题解决了:现在我使用的是android.support.v4.view.ViewPager与自定义回调在OnPageChangeListener

  • onPageSelected
  • onPageScrollStateChanged
  • onPageScrolled

我建议对您的方法稍作修改。对于您的图库,覆盖onScroll(MotionEvent, MotionEvent, float, float)onFling(MotionEvent, MotionEvent, float, float)让他们返回他们的超级但在MotionEvent.ACTION_DOWN || MotionEvent.ACTION_UP将移动标志设置为true ||假分别。

现在在getView(int,View,ViewGroup)方法的BaseAdapter中,当您返回图像视图时,如果移动标志为true,则返回低分辨率ImageView,否则返回高分辨率。

+0

感谢您的小费,但' getView(...)'只要下一个项目变为可见(即滚动)就会被调用。此外,我已经试图让手势依赖于图像。但是,这也不适合我,因为如果您有MotionEvent.ACTION_UP,图库可能仍然在滚动以居中当前项目。我想在**项目居中后替换图片**。 – Christian