Download - Android Touch System
topic 2topic 3topic 4
Thank Thank You !You !
• Android Platform Engineer@ BlocksGlobal.comAndroid Platform Engineer@ BlocksGlobal.com
• Design ScreenerOS – www.screener.digitalDesign ScreenerOS – www.screener.digital
• Android writer for magazine.odroid.comAndroid writer for magazine.odroid.com
• AOSP Contributor - now and then :)AOSP Contributor - now and then :)
About MeAbout Me
The StackThe Stack
Touch HardwareTouch Hardware• Capacitive / Resistive ScreenCapacitive / Resistive Screen
• Touch Controller (Single / Multi Touch)Touch Controller (Single / Multi Touch)
Touch ScreenTouch Screen
http://i.cmpnet.com/planetanalog/2009/06/C0411-Figure2.gif
Touch ScreenTouch Screen
https://www.ifixit.com/Teardown/Samsung+Galaxy+S6+Teardown/38636
Touch ScreenTouch Screen
https://www.ifixit.com/Teardown/Motorola+Moto+360+Teardown/28891
Touch ScreenTouch Screen
https://www.ifixit.com/Teardown/OnePlus+2+Teardown/45352
Touch ScreenTouch Screen
https://www.ifixit.com/Teardown/Disassembling+Nexus+5+Display+Teardown+-+liquid+damage/32410
Touch ControllerTouch Controller
https://www.ifixit.com/Teardown/Nexus+5+Teardown/19016
Touch ControllerTouch Controller
https://www.ifixit.com/Teardown/Samsung+Galaxy+S6+Teardown/39174
Touch ControllerTouch Controller
https://www.ifixit.com/Teardown/Nexus+9+Teardown/31425
End-to-End FlowEnd-to-End Flow
Linux Kernel
Input Framework Input Queue
View Root
App View
• Single (1 finger) and Multi (>1 finger)Single (1 finger) and Multi (>1 finger)
• “ “Bubbling” of event through UI hierarchyBubbling” of event through UI hierarchy
• ALLALL UI element has method to handle touchUI element has method to handle touch
• Touch = single tap, double tap, long pressTouch = single tap, double tap, long press
• Gesture = fling, scroll, pinch and zoomGesture = fling, scroll, pinch and zoom
Touch & GesturesTouch & Gestures
Touch & Touch & GesturesGestures
http://static.lukew.com/TouchGestureGuide.pdf
Touch EventsTouch Events• Single TouchSingle Touch
– ACTION_DOWNACTION_DOWN– ACTION_MOVEACTION_MOVE– ACTION_UPACTION_UP
• Multi TouchMulti Touch– ACTION_DOWNACTION_DOWN– ACTION_POINTER_DOWNACTION_POINTER_DOWN– ACTION_MOVEACTION_MOVE– ACTION_POINTER_UPACTION_POINTER_UP– ACTION_UPACTION_UP
Touch EventsTouch Events Multi touch ( Pinch & Zoom ) Calculate distance between 2 finger between
ACTION_POINTER_DOWN and ACTION_MOVE
Single touch ( Double tap ) Calculate time between ACTION_DOWN and ACTION_UP
Single touch ( Fling ) Calculate distance between ACTION_DOWN and ACTION_MOVE
(more than 'touch slop')
APIAPI• Common GesturesCommon Gestures
– ScaleGestureDetector (scaling)ScaleGestureDetector (scaling)– GestureDetectorCompat (fling, double tap, GestureDetectorCompat (fling, double tap,
etc) [ backward compatible ]etc) [ backward compatible ]
• Simple case - onTouchListener (from View)Simple case - onTouchListener (from View)
• Always return TRUE on onTouchEventAlways return TRUE on onTouchEvent
• Use getActionMasked()Use getActionMasked()
• google.com/design/spec/patterns/gestures.html google.com/design/spec/patterns/gestures.html
• developer.android.com/training/gestures/index.htmldeveloper.android.com/training/gestures/index.html
ReferencesReferences
Thank YouThank You