を使用して、Android アプリにスライドショーを実装しました。これは、スクロールジェスチャで次の画像にスクロールしたいことを除いてうまく機能します(減速する前にいくつかの画像をスクロールするだけです)。これを行う適切な方法が見つかりませんでした。代わりに FrameLayout を使用する必要がありますか? スクロール ジェスチャで次の (または前の) 画像にスクロールするにはどうすればよいですか?
6907 次
3 に答える
2
あなたの説明から、スライドショーがスクロールビューの一連の画像として実装されているように聞こえますが、それは正しいですか?
それをスクロールビューに配置してそのビューでスクロールできるようにするのではなく、単一の画像を表示して、画像のフリングまたはスクロール ジェスチャをリッスンすることができます (ドキュメントを参照)。ジェスチャーを検出すると、手動で画像を変更できます。
于 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 から HorizontalScrollView への使用から、Gallery の使用に戻りました。ちょうど私のn00bnessを示しています。ギャラリーは私の問題をうまく解決しました。Gallery を拡張して onFling(...) をオーバーライドするカスタム クラスがあります。これで、速度 X を方向に応じて -300 または 300 にリセットすると、次の「ページ」にスクロールします。
于 2010-02-19T16:37:36.783 に答える