Android Déplacer ImageView
J'ai cherché sur le web pour une solution simple pour se déplacer librement d'un ImageView
. J'ai enfin trouvé un peu de code qui produit un résultat parfait:
public class MainActivity extends Activity implements View.OnTouchListener {
private int _xDelta;
private int _yDelta;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ImageView j = (ImageView)findViewById(R.id.j);
j.setOnTouchListener(this);
}
public boolean onTouch(View view, MotionEvent event) {
final int X = (int) event.getRawX();
final int Y = (int) event.getRawY();
ImageView j = (ImageView)findViewById(R.id.j);
switch (event.getAction() & MotionEvent.ACTION_MASK) {
case MotionEvent.ACTION_DOWN:
RelativeLayout.LayoutParams lParams = (RelativeLayout.LayoutParams) view.getLayoutParams();
_xDelta = (int) (X - j.getTranslationX());
_yDelta = (int) (Y - j.getTranslationY());
break;
case MotionEvent.ACTION_UP:
break;
case MotionEvent.ACTION_POINTER_DOWN:
break;
case MotionEvent.ACTION_POINTER_UP:
break;
case MotionEvent.ACTION_MOVE:
RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) view.getLayoutParams();
j.setTranslationX(X - _xDelta);
j.setTranslationY(Y - _yDelta);
break;
}
return true;
}}
Depuis je ne sais pas vraiment comment mon code fonctionne, je voulais voir si il y avait de meilleures solutions.
OriginalL'auteur ueen | 2013-12-20
Vous devez vous connecter pour publier un commentaire.
Que Google suggère, si vous ciblez les versions d'Android 3.0 et au-dessus, vous pouvez utiliser une DragListener.
Pour le pré-Nid d'abeille versions vous pouvez utiliser quelque chose comme:
comme de nouveau suggéré par Google ici.
OriginalL'auteur Thomas Kaliakos
Voici la solution que j'ai obtenu:
Explication: j'ai seulement besoin de mouvement sur l'axe des y et detection si déplacé vers le haut ou vers le bas. Il est fait par l'animation de la vue au toucher, ce qui a des avantages et des contras (contra: son complexe à détecter d'où la vue est dans l'espace /pro: le point de vue qui bouge et ne semblent seulement être ailleurs), mais s'est avéré mieux pour moi et est assez simple.
Le but ici est de glisser le point de vue et de le ramener à un endroit désiré, de même que vers le bas, de retour à la position initiale, ce résultat est obtenu relativ la taille de l'écran.
Pour moi le code est relativement simple et selfexplainatory, mais s'il vous plaît demander si quoi que ce soit clair.
OriginalL'auteur ueen
Comme Vous avez utilisé setTranslationX(), qui est de l'API de niveau 11, il est préférable d'utiliser DragListener. http://developer.android.com/guide/topics/ui/drag-drop.html
OriginalL'auteur Sudhin Philip
Qui est solution de travail
acclamations.
OriginalL'auteur Ali