2016-05-22 1 views
0

Je suis nouveau avec ce si .. si j'ai une imageview sur différents appareils 10 'tablette 7' tablette et un mobile de 5 'avec différents densités.Comment obtenir les coordonnées x, y d'une imageview sur différents appareils et densités dans Android

Comment je vais obtenir le x, y correspondant à un événement tactile, quelles sont les "règles" ici?

merci

L'image est par exemple une fleur en touchant un pétale de la fleur sur la imageview la position de x, y sont les mêmes dans toutes les densités et les tailles?

+0

ce que vous voulez dire par «coordonnées x, y»? – pskink

+0

L'image est par exemple une fleur en touchant un pétale de la fleur sur l'imageview la position de x, y est la même dans toutes les densités et tailles? –

+0

donc utilisez la méthode 'ImageView # getImageMatrix()', puis utilisez 'Matrix # invert' pour obtenir la matrice inversée' 'Matrix' qui peut être utilisée pour mapper vos points de contact – pskink

Répondre

0

Vous pouvez facilement obtenir coordonnée en vue du point de contact en utilisant auditeur contact methid comme celui-ci,

@Override 
public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    final ImageView imageView = findViewById(R.id.imageView); 
    imageView.setOnTouchListener(new View.OnTouchListener() { 
     @Override 
     public boolean onTouch(View v, MotionEvent event) { 
      Log.d("Tag", "X,Y : " + event.getX() + "," + event.getY()); 
      return true; 
     } 
    }); 
} 
+0

quelle que soit la densité ou la taille de l'écran? –

+0

basé sur la résolution de l'écran, il va retourner la coordonnée de point de contact. donc la taille et la densité n'a pas d'importance. –

0

Vous pouvez également utiliser la largeur et la hauteur de ImageView, c'est-ce qui change dans les différentes densités. Puis demandez des pourcentages de l'image, par exemple, la moitié ou la quatrième partie vers le bas. (75% de 1024 est 1024 * 0,75)

@Override 
public boolean onTouch(View v, MotionEvent event) { 

    int maxX = v.getWidth(); 
    int maxY = v.getHeight(); 

    int x = (int) event.getX(); 
    int y = (int) event.getY(); 

    if (action == MotionEvent.ACTION_DOWN) { 
     if (x > (maxX * 0.25) && x < (maxX * 0.50) && y > (maxY * 0.25) && y < (maxY * 0.50)) { 
      Log.i("Tag", "You pressed an area"); 
     } 
    } 
}