我在Android应用中使用了幻灯片。这很有效,除了我想滚动到滚动手势上的下一个图像(现在它只是在减速之前滚动过去的几个图像)。如果我使用FrameLayout,我找不到合适的方法来做到这一点?如何在滚动手势上滚动到下一个(或上一个)图像?
答案 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到HorizontalScrollView回到使用Gallery。只是显示我的n00bness。画廊很好地解决了我的问题。我有一个自定义类,它扩展了Gallery并覆盖了onFling(...)。在此重置中,速度X表示-300或300,具体取决于方向,这将导致滚动到下一个“页面”。