Android Horizo​​ntalScrollView逐页滚动

时间:2010-02-18 17:04:18

标签: android android-widget slideshow

我在Android应用中使用了幻灯片。这很有效,除了我想滚动到滚动手势上的下一个图像(现在它只是在减速之前滚动过去的几个图像)。如果我使用FrameLayout,我找不到合适的方法来做到这一点?如何在滚动手势上滚动到下一个(或上一个)图像?

3 个答案:

答案 0 :(得分:2)

从您的描述中可以看出,您现在将幻灯片显示为滚动视图中的一系列图像,这是正确的吗?

不是将其放在滚动视图中并允许该视图进行滚动,而是可以显示单个图像并在图像上侦听拖动或滚动手势(请参阅documentation)。当您检测到手势时,您可以手动更改图像。

如果您希望它为屏幕上的图像设置动画,您可以使用animation

答案 1 :(得分:1)

这就是我最终使用的

    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
        float velocityY) {
    // TODO Auto-generated method stub

    if (velocityX <= 0 ){
        // hack - send event to simulate right key press
        KeyEvent rightKey  = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_DPAD_RIGHT);
        this.onKeyDown(KeyEvent.KEYCODE_DPAD_RIGHT, rightKey);

        rightKey = new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_DPAD_RIGHT);
        this.onKeyUp(KeyEvent.KEYCODE_DPAD_RIGHT, rightKey);            

    }else{
        // hack - send event to simulate left key press
        KeyEvent leftKey = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_DPAD_LEFT);
        this.onKeyDown(KeyEvent.KEYCODE_DPAD_LEFT, leftKey);

        leftKey = new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_DPAD_LEFT);
        this.onKeyUp(KeyEvent.KEYCODE_DPAD_LEFT, leftKey);
    }


    // your callback activity if you have one:
    if( callbackActivity != null ){
        callbackActivity.didFlingGallery();
    }

    return true;
}

答案 2 :(得分:0)

您发布问题的那一刻您就会意识到答案!我从使用Gallery到Horizo​​ntalScrollView回到使用Gallery。只是显示我的n00bness。画廊很好地解决了我的问题。我有一个自定义类,它扩展了Gallery并覆盖了onFling(...)。在此重置中,速度X表示-300或300,具体取决于方向,这将导致滚动到下一个“页面”。