Si vous voulez être en mesure d'activer/désactiver le défilement de la galerie, vous pouvez utiliser la classe comme ceci:
public class ExtendedGallery extends Gallery {
private boolean stuck = false;
public ExtendedGallery(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public ExtendedGallery(Context context, AttributeSet attrs) {
super(context, attrs);
}
public ExtendedGallery(Context context) {
super(context);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
return stuck || super.onTouchEvent(event);
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
switch (keyCode) {
case KeyEvent.KEYCODE_DPAD_LEFT:
case KeyEvent.KEYCODE_DPAD_RIGHT:
return stuck || super.onKeyDown(keyCode, event);
}
return super.onKeyDown(keyCode, event);
}
public void setScrollingEnabled(boolean enabled) {
stuck = !enabled;
}
}
Selon le code source de la galerie, il existe deux types d'événements qui commencent le défilement: touche d'écran et la touche, appuyée sur le D-pad. Vous pouvez donc intercepter ces événements si vous souhaitez désactiver le défilement. Ensuite, utilisez quelque chose comme ceci dans votre mise en page:
<your.package.name.ExtendedGallery
android:id="@+id/gallery"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
Ensuite, vous pouvez activer/désactiver le défilement de cette galerie à tout moment:
ExtendedGallery mGallery = (ExtendedGallery) findViewById(R.id.gallery);
mGallery.setScrollingEnabled(false); // disable scrolling
Je ne pense pas que '[arrêter]' est un très descriptif marque. – Zaz
Salut Josh, merci pour votre réponse. Peut-être qu'il y a un moyen avec onFling()? mais que signifient les paramètres 'MotionEvent' et' velocityX '? – androidfan76