平滑滚动到Android gallery中的指定位置

平滑滚动到Android gallery中的指定位置,android,Android,有没有一种合理的方法可以通过编程滚动来显示图库中的特定组件?相当于setSelection(int),但是可以平滑滚动而不是直接跳转?我想我找到了一种简单的方法!它包括直接调用onFling()方法 MotionEvent e1 = MotionEvent.obtain( SystemClock.uptimeMillis(), SystemClock.uptimeMillis(), MotionEvent.ACTION_DOWN, 89.333336f, 265.3

有没有一种合理的方法可以通过编程滚动来显示图库中的特定组件?相当于setSelection(int),但是可以平滑滚动而不是直接跳转?

我想我找到了一种简单的方法!它包括直接调用onFling()方法

MotionEvent e1 = MotionEvent.obtain(
    SystemClock.uptimeMillis(), 
    SystemClock.uptimeMillis(),  
    MotionEvent.ACTION_DOWN, 89.333336f, 265.33334f, 0);
MotionEvent e2 = MotionEvent.obtain(
    SystemClock.uptimeMillis(), 
    SystemClock.uptimeMillis(), 
    MotionEvent.ACTION_UP, 300.0f, 238.00003f, 0);

gallery.onFling(e1, e2, -800, 0);

应该有更好的办法。当库被抛出时,应该调用onFling(),而不是抛出它。

setSelection()重载,动画采用布尔值。也许这就是你想要的?如果我读对了代码,它就会被忽略。。。您可以尝试使用smoothScrollTo()创建自己的方法。是的,setSelection(int,boolean)不起作用。smoothScrollTo()的问题有两个:第一,确定给定索引需要滚动到的位置;第二,它在Gallery中不可用——它是在scroll视图类中定义的,Gallery不扩展它。我目前的计划是以与smoothScrollTo()类似的方式使用滚动器,但问题仍然是我们必须滚动到的确切位置。此外,scrollTo和scrollBy不适用于Gallery(它们不会连接到私有API以更新视图中显示的组件)。Gallery是一个不错的组件,如果它已经做了你想让它做的事情,但是如果你想扩展它的功能,它绝对是一个猪,显然…这里也是一样。。。我试图理解gallery是如何工作的,在不复制大部分代码的情况下扩展它几乎是不可能的。。。所有的成员都是私有的,公共方法没有多大帮助……我知道这是不推荐的,但是你最终找到了一个很好的解决方案,你可以分享你是如何与你选择的项目配对的吗?操纵fling is确实会产生一种很好复制的效果,但这似乎取决于几个因素。