gpt4 book ai didi

android - 将图库滚动到下一页

转载 作者:太空宇宙 更新时间:2023-11-03 13:37:36 25 4
gpt4 key购买 nike

使用 widget.Gallery 显示水平滚动的项目列表。我已经使用似乎是标准技术的方法在图库中实现了分页:子类图库并实现:

@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
if (velocityX>0) {
onKeyDown(KeyEvent.KEYCODE_DPAD_LEFT, null);
} else {
onKeyDown(KeyEvent.KEYCODE_DPAD_RIGHT, null);
}
}

点击图库时,我会淡出下一张和上一张图像按钮。单击这些时,我希望画廊分别动画到下一页/上一页。我试过从我的下一个按钮处理程序调用 onKeyDown,但奇怪的是这没有效果。AbsSpinner 具有 setSelection(int position, boolean animate) 但动画在 Gallery 中被忽略。

最佳答案

正是巨嘴鸟所说的,但要进一步详细说明(评论限制太短):

问题似乎是如果 Gallery 不让用户滚动,如果那个位置还没有 child 的话。 scrollToChild() 是试图注入(inject)事件的罪魁祸首:

private boolean scrollToChild(int childPosition) {
View child = getChildAt(childPosition);

if (child != null) {
int distance = getCenterOfGallery() - getCenterOfView(child);
mFlingRunnable.startUsingDistance(distance);
return true;
}

return false;
}

有趣的是,如果你用手指甩动画廊,它会导致创建 child 。然后,如果您松开手指(回到原来的位置),然后按下激活 onKeyDown 注入(inject)的按钮,它将完美运行 - 因为 child 在那里。

不幸的是,没有真正的解决方案,因为该类中的所有内容都是私有(private)的。唯一的解决方案是使用 setSpacing(-1) 或画廊中的其他东西,因此始终创建并显示左右子级,但仅在当前选定 View 的后面。

作为脚注,我真的很困惑为什么在该类(或与此相关的任何其他 Android 小部件类)中所有内容都是私有(private)的。这是可以通过一些小的代码更改轻松修复的问题之一。

编辑(2012 年 8 月): 供将来引用,而不是尝试将画廊用于这种模式(当您希望用户在不同项目之间滑动而只有其中一个可见时),最好使用 Android 的 compatibility package's ViewPager class .在我看来,兼容包并没有像它应该的那样广为人知(我花了一段时间才注意到它)。对于以 Android 2.x+ 为目标的开发者来说,这是天赐之物。

关于android - 将图库滚动到下一页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5045583/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com