====== Android buttons and touch events ====== This tutorial shows how to add a button to your application and handle touch events. ===== Add button to your layout ===== - Go to ''app/res/layout/content_robot_layout.xml'' - Drag and drp button from the menu on the left to the visualization of a mobile phone screen. - Change the name and the ID of the button to something more unique, let's say ID: ''goForward'' and Text: ''FORWARD''. - Click on a Text representation of the layout and see how it is represented in XML (do not change anything, unless you know what you're doing) {{ :did:roboclub:android_tutorials:add-button.png|}} ===== Add touch listener ===== - Go to ''app/java/geist.re.mindroid/RobotControl'' - Find ''onCreate'' method (it should be around line 123 - Insert the following code to add touch events handlers for your button (note, that the id of the button should be changed to whatever you name it): //Change the id here Button goForward = (Button) findViewById(R.id.button); goForward.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { if(robot == null || robot.getConnectionState() != RobotService.CONN_STATE_CONNECTED){ return false; } switch(event.getAction()) { case MotionEvent.ACTION_DOWN: //Run motors return true; // if you want to handle the touch event case MotionEvent.ACTION_UP: //Stop motors return true; // if you want to handle the touch event } return false; } }); {{ :did:roboclub:android_tutorials:add-touch-listeners.png|}} ===== Add onClick method ===== In case you just want to handle basic //tap// event, you can do it by adding ''onClick'' method to your button. Note, that releasing the button will not be handled. - In text representation of the layout add ''onClick'' field to your button definition and assign it a namne of a function you want to call in case of //tap// event. - In ''app/java/geist.re/mindroid/RobotControl'' add the function of the same name as in the previoud step, that takes ''View v'' as a parameter:public void goForward(View w){ //Do some col stuff in here } - That's it. Every time the user clicks the button, the function you've created will be called. {{ :did:roboclub:android_tutorials:add-method.png|}}