我编写了一个带有多个图像的可缩放图库。
布局包含LinearLayout
TextView
(图库名称)和Gallery
本身。
图库中的项目包含一个RelativeLayout
,其中包含一个FrameLayout
,其中包含ImageView
(我读过我需要使用FrameLayout进行缩放)和一个TextView
来显示图像的缩放状态。
我使用了自定义View.OnTouchListener
来实现缩放。
现在我试图替换ImageView
中的图像后,图库已停止使用高分辨率图片滚动,以便用户可以更好/更远地放大。
我使用OnItemSelectedListener
和setCallbackDuringFling
做错了。
如果你快速推送屏幕,即使这样也能正常工作
但是,如果您将手指放在显示屏上并将其慢慢地移到边缘,则OnItemSelectedListener
会先触发 下一个项目到达中心,滚动动画停止。相反,画廊跳起来就像失去了触摸接触并立即将画廊中的下一个项目居中。当慢慢移动手指时,OnItemSelectedListener
在同一项目上被多次调用(我通过保存最后一个选定项目的位置来避免此问题)。
所以(长话短说)我正在寻找Gallery
的“滚动/捕捉到网格”效果的回调/监听器。我还尝试了AnimationListener
,但当我在其上调用getAnimation
时,图库会返回null。
我在这里绝望......任何人都可以帮忙吗?
答案 0 :(得分:1)
问题已解决:我现在正在android.support.v4.view.ViewPager
使用OnPageChangeListener
自定义回调:
onPageSelected
onPageScrollStateChanged
onPageScrolled
答案 1 :(得分:0)
我建议您稍微改变一下方法。对于您的图库,覆盖onScroll(MotionEvent, MotionEvent, float, float)
和onFling(MotionEvent, MotionEvent, float, float)
让他们返回超级但是在MotionEvent.ACTION_DOWN || MotionEvent.ACTION_UP将移动标志设置为true ||分别是假的。
现在,在返回图像视图时,在getView(int,View,ViewGroup)方法中使用Gallery的BaseAdapter返回低分辨率ImageView,如果移动标志为真,则返回高分辨率。