J'ai écrit la fonction suivante afin de faire glisser un ImageView sur l'écran. Semble fonctionner correctement, sauf en faisant glisser l'image saute comme un fou.Valeurs de saut étranges pour onTouchListener utilisant un RelativeLayout dans Android
En regardant le journal le problème semble être que j'obtiens des valeurs incorrectes pour X et Y entre chaque valeur correcte. Je ne suis pas sûr de savoir pourquoi. Quelqu'un peut-il m'aider à résoudre ce problème?
hereOnTouchListener imageListener = new OnTouchListener(){
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
int eventAction = event.getAction();
int X = (int)event.getX();
int Y = (int)event.getY();
if (eventAction == MotionEvent.ACTION_DOWN){
dragging = true;
tempParams = new RelativeLayout.LayoutParams(v.getWidth(), v.getHeight());
Log.i("v width and height", v.getWidth() + " " + v.getHeight());
}
if (eventAction == MotionEvent.ACTION_UP){
Log.i("dragging up","dragging up" + X + " " + Y);
dragging = false;
} else if (eventAction == MotionEvent.ACTION_MOVE){
if (dragging){
Log.i("dragging","dragging " + X + " " + Y);
tempParams.leftMargin = X;
tempParams.topMargin = Y;
v.setLayoutParams(tempParams);
// v.setPadding(X, Y, 0, 0);
v.invalidate();
}
}
return true;
}
};
échantillon
de sortie du journal:
11-27 19:43:34.484: INFO/dragging(3530): dragging 131 131
11-27 19:43:34.504: INFO/dragging(3530): dragging 84 288
11-27 19:43:34.519: INFO/dragging(3530): dragging 132 134
11-27 19:43:34.539: INFO/dragging(3530): dragging 84 292
11-27 19:43:34.554: INFO/dragging(3530): dragging 132 139
11-27 19:43:34.574: INFO/dragging(3530): dragging 84 294
11-27 19:43:34.594: INFO/dragging(3530): dragging 132 142
11-27 19:43:34.609: INFO/dragging(3530): dragging 84 294
Pourriez-pls. reformatez votre question pour la rendre plus lisible. –