Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Get the co-ordinates of a touch event on Android

I'm new to Android, I've followed the hello world tutorial through and have a basic idea of what's going on. I'm particularly interested in the touch screen of my T-Mobile Pulse so just to get me started I want to be able to write the co-ordinates of a tocuh event on the screen, so say the user touched the co-ordinate 5,2 - a textview on the screen would display that.

At present I have a simple program that just loads an xml file which contains the textview I intend to write the co-ordinates in.

Thank you in advance, I did Google for help and searched stackoverflow but everything I found either went way over my head or wasn't suitable for this. Cheers.

like image 509
Joe Avatar asked May 30 '10 15:05

Joe


People also ask

How do I get touch coordinates on Android?

int x = (int)event. getX(); int y = (int)event. getY(); If you want the coordinates relative to the top left corner of the device screen, then use the raw values.

What is pointer in Android?

Pointer capture is a feature available in Android 8.0 (API level 26) and later that provides such control by delivering all mouse events to a focused view in your app.


1 Answers

You can use this function : http://developer.android.com/reference/android/view/View.html#setOnTouchListener(android.view.View.OnTouchListener)

You will probably put it in your onCreate method roughly this way (tested this time) :

Activity onCreate code

@Override public void onCreate(Bundle savedInstanceState) {     super.onCreate(savedInstanceState);     setContentView(R.layout.main);     final TextView textView = (TextView)findViewById(R.id.textView);     // this is the view on which you will listen for touch events     final View touchView = findViewById(R.id.touchView);     touchView.setOnTouchListener(new View.OnTouchListener() {         @Override         public boolean onTouch(View v, MotionEvent event) {             textView.setText("Touch coordinates : " +                 String.valueOf(event.getX()) + "x" + String.valueOf(event.getY()));                 return true;         }     }); } 

layout code

<?xml version="1.0" encoding="utf-8"?>                                       <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"     android:orientation="vertical"     android:layout_width="fill_parent"     android:layout_height="fill_parent"     > <TextView       android:id="@+id/touchView"      android:background="#f00"      android:layout_weight="1"      android:layout_width="fill_parent"      android:layout_height="wrap_content"      /> <TextView       android:id="@+id/textView"      android:layout_width="fill_parent"      android:layout_height="wrap_content"      android:text="Hello World, TestActivity"     /> </LinearLayout> 

Edit: I tried my code and indeed there were a few errors. Anyway, with the layout I give you here it works on my emulator. Can you provide maybe more code/context so I can see what's wrong?

like image 79
Gautier Hayoun Avatar answered Sep 22 '22 11:09

Gautier Hayoun