2

を使用して、Android アプリにスライドショーを実装しました。これは、スクロールジェスチャで次の画像にスクロールしたいことを除いてうまく機能します(減速する前にいくつかの画像をスクロールするだけです)。これを行う適切な方法が見つかりませんでした。代わりに FrameLayout を使用する必要がありますか? スクロール ジェスチャで次の (または前の) 画像にスクロールするにはどうすればよいですか?

4

3 に答える 3

2

あなたの説明から、スライドショーがスクロールビューの一連の画像として実装されているように聞こえますが、それは正しいですか?

それをスクロールビューに配置してそのビューでスクロールできるようにするのではなく、単一の画像を表示して、画像のフリングまたはスクロール ジェスチャをリッスンすることができます (ドキュメントを参照)。ジェスチャーを検出すると、手動で画像を変更できます。

画面に表示される画像をアニメーション化する場合は、 animationを使用できます。

于 2010-02-18T17:14:00.283 に答える
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;
}
于 2010-06-15T02:11:28.143 に答える
0

質問を投稿した瞬間に答えがわかります!Gallery から Horizo​​ntalScrollView への使用から、Gallery の使用に戻りました。ちょうど私のn00bnessを示しています。ギャラリーは私の問題をうまく解決しました。Gallery を拡張して onFling(...) をオーバーライドするカスタム クラスがあります。これで、速度 X を方向に応じて -300 または 300 にリセットすると、次の「ページ」にスクロールします。

于 2010-02-19T16:37:36.783 に答える