2011-06-17 3 views
2

Je développe une petite application dans Android dans laquelle j'ai peu d'image dans mon application je veux quand l'utilisateur touche avec un doigt les images peuvent se déplacer à gauche ou à droite et quand l'utilisateur peut toucher avec deux doigts il pourrait être zoom comment puis-je faire cela s'il vous plaît se référer à un code tutoriel pour moi. ici est mon code et moi Flipper vue dans xml v FDJFComment définir la fonctionnalité tactile au toucher dans Android?

public class Jaap extends Activity implements OnTouchListener{ 

float downXValue; 
int counter = 0; 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
this.requestWindowFeature(Window.FEATURE_NO_TITLE); 

// Set main.XML as the layout for this Activity 
setContentView(R.layout.jaap); 

// Add these two lines 
LinearLayout layMain = (LinearLayout) findViewById(R.id.layout_main); 
layMain.setOnTouchListener((OnTouchListener) this); 

// Add a few countries to the spinner 

} 

public boolean onTouch(View arg0, MotionEvent arg1) { 

// Get the action that was done on this touch event 
switch (arg1.getAction()) 
{ 
case MotionEvent.ACTION_DOWN: 
{ 
// store the X value when the user's finger was pressed down 
downXValue = arg1.getX(); 
break; 
} 

case MotionEvent.ACTION_UP: 
{ 
// Get the X value when the user released his/her finger 
float currentX = arg1.getX(); 

// going backwards: pushing stuff to the right 
if (downXValue < currentX) 
{ 
// Get a reference to the ViewFlipper 
ViewFlipper vf = (ViewFlipper) findViewById(R.id.details); 
// Set the animation 
// vf.setAnimation(AnimationUtils.loadAnimation(this, R.anim.push_left_out)); 
// Flip! 
if(counter > 0){ 
vf.showPrevious(); 
counter--; 
} 
} 
// going forwards: pushing stuff to the left 
if (downXValue > currentX) 
{ 
// Get a reference to the ViewFlipper 
ViewFlipper vf = (ViewFlipper) findViewById(R.id.details); 
// Set the animation 
// vf.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.push_left_in)); 
// Flip! 
if(counter < 131){ 
vf.showNext(); 
counter++; 
} 
} 
break; 
} 
} 

// if you return false, these actions will not be recorded 
return true; 
} 
} 

Répondre

1

Gérez le MotionEvent dans l'onTouchEvent (MotionEvent) de l'activité. Dans cette vérification pour MotionEvent.getAction().

switch(MotionEvent.GetAction()) { 
case ACTION_DOWN: 
//handle the finger down functionality here 
break; 

case ACTION_POINTER_DOWN: 
//handle the second finger down functionality here 
break; 
} 

serait émis une séquence d'événements, la plupart du temps avec les actions comme suit:

  • ACTION_DOWN - une touche de doigt vers le bas
  • ACTION_MOVE -> le doigt est déplacé
  • ACTION_UP - un la touche tactile est supprimée
  • ACTION_POINTER_DOWN - deuxième doigt touchez
  • ACTION_POINTER_UP - deuxième doigt r retouchez

Vous devez vérifier les positions X, Y en cas et de déterminer ce qui devrait être donw ... va voir s'il y a des bons tutoriels/échantillons pour expliquer ces mieux ...

+0

j'ai essayé de mettre en œuvre ce code, mais il y a un problème que si l'image zoomons et je glisser aussi, mais je ne peux pas passer à l'image suivante –

+0

@Avi, oui je ont vu une telle fonctionnalité dans certains des téléphones aussi. Lorsque l'image est agrandie, le glisser (ou le film) ne passe pas à l'image suivante. Ce n'est que lorsque l'image est restaurée à la taille d'origine que le film fonctionne./n Pouvez-vous s'il vous plaît nous faire savoir où se trouve l'image agrandie? Et dans cette situation, où est l'événement tactile à venir et comment est-il géré? ... il pourrait y avoir une possibilité que lorsque l'image est zoomée le drag (ou le film) est ignoré ... – iLikeAndroid

+0

ont placé mon code dans ma question a regardé regarder mon code –

3

Découvrez this tutoriel étape par étape, il contient des exemples de code comment zoomer/dézoomer une photo et la déplacer.

1

getPointerCount() de motionEvent vous indique combien de doigts sont en contact. En donne nombre de contact

Merci

Questions connexes