├── .gitignore ├── README.md ├── TouchExamples ├── AndroidManifest.xml ├── assets │ └── android.jpg ├── build.gradle ├── project.properties ├── res │ ├── drawable-hdpi │ │ └── ic_launcher.png │ ├── drawable-ldpi │ │ └── ic_launcher.png │ ├── drawable-mdpi │ │ └── ic_launcher.png │ ├── layout │ │ ├── gesture_scroll.xml │ │ ├── intercept_row.xml │ │ ├── move_logger.xml │ │ ├── touch_intercept.xml │ │ └── touch_listener.xml │ └── values │ │ ├── dimens.xml │ │ └── styles.xml └── src │ └── com │ └── examples │ └── customtouch │ ├── MainActivity.java │ ├── MoveLoggerActivity.java │ ├── MultitouchActivity.java │ ├── TouchDelegateActivity.java │ ├── TouchForwardActivity.java │ ├── TouchInterceptActivity.java │ ├── TouchListenerActivity.java │ ├── TwoDimensionGestureScrollActivity.java │ ├── TwoDimensionScrollActivity.java │ └── widget │ ├── RotateZoomImageView.java │ ├── TouchDelegateLayout.java │ ├── TouchForwardLayout.java │ ├── TwoDimensionGestureScrollView.java │ └── TwoDimensionScrollView.java ├── build.gradle ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── license.txt └── settings.gradle /.gitignore: -------------------------------------------------------------------------------- 1 | #OSX Noise 2 | .DS_Store 3 | 4 | #Gradle Noise 5 | .gradle/ 6 | 7 | #Build output 8 | bin/ 9 | gen/ 10 | out/ 11 | build/ 12 | 13 | #Project Files 14 | .idea/ 15 | *.iml 16 | .classpath 17 | .project 18 | 19 | #Ant config files 20 | local.properties -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ### Mastering Android Touch Examples ### 2 | 3 | This repository contains a sample application demonstrating many of the techniques for doing custom touch event handling discussed in "Mastering the Android Touch System". 4 | 5 | Examples include: 6 | 7 | - Overriding onTouchEvent() 8 | - Overriding onInterceptTouchEvent() 9 | - GestureDetector 10 | - ScaleGestureDetector 11 | - TouchDelegate 12 | 13 | The sample code is licensed under the MIT Open Source License -------------------------------------------------------------------------------- /TouchExamples/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 9 | 12 | 13 | 14 | 15 | 16 | 17 | 20 | 23 | 26 | 29 | 32 | 35 | 38 | 41 | 42 | 43 | -------------------------------------------------------------------------------- /TouchExamples/assets/android.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devunwired/custom-touch-examples/14a58187b329f72d2cd26a7224b0a440a0ec7d91/TouchExamples/assets/android.jpg -------------------------------------------------------------------------------- /TouchExamples/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.application' 2 | 3 | android { 4 | compileSdkVersion 25 5 | buildToolsVersion "25.0.2" 6 | 7 | defaultConfig { 8 | minSdkVersion 16 9 | targetSdkVersion 25 10 | versionName "1.0" 11 | versionCode 1 12 | } 13 | 14 | sourceSets { 15 | main { 16 | assets.srcDirs = ['assets'] 17 | res.srcDirs = ['res'] 18 | aidl.srcDirs = ['src'] 19 | resources.srcDirs = ['src'] 20 | renderscript.srcDirs = ['src'] 21 | java.srcDirs = ['src'] 22 | manifest.srcFile 'AndroidManifest.xml' 23 | } 24 | } 25 | 26 | dependencies { 27 | compile 'com.android.support:appcompat-v7:25.3.0' 28 | } 29 | } -------------------------------------------------------------------------------- /TouchExamples/project.properties: -------------------------------------------------------------------------------- 1 | # This file is automatically generated by Android Tools. 2 | # Do not modify this file -- YOUR CHANGES WILL BE ERASED! 3 | # 4 | # This file must be checked in Version Control Systems. 5 | # 6 | # To customize properties used by the Ant build system use, 7 | # "ant.properties", and override values to adapt the script to your 8 | # project structure. 9 | 10 | # Project target. 11 | target=android-15 12 | -------------------------------------------------------------------------------- /TouchExamples/res/drawable-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devunwired/custom-touch-examples/14a58187b329f72d2cd26a7224b0a440a0ec7d91/TouchExamples/res/drawable-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /TouchExamples/res/drawable-ldpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devunwired/custom-touch-examples/14a58187b329f72d2cd26a7224b0a440a0ec7d91/TouchExamples/res/drawable-ldpi/ic_launcher.png -------------------------------------------------------------------------------- /TouchExamples/res/drawable-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devunwired/custom-touch-examples/14a58187b329f72d2cd26a7224b0a440a0ec7d91/TouchExamples/res/drawable-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /TouchExamples/res/layout/gesture_scroll.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 12 | 13 | -------------------------------------------------------------------------------- /TouchExamples/res/layout/intercept_row.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /TouchExamples/res/layout/move_logger.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 15 | 24 | -------------------------------------------------------------------------------- /TouchExamples/res/layout/touch_intercept.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /TouchExamples/res/layout/touch_listener.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 12 | 16 | 22 | 28 | 34 | 35 | -------------------------------------------------------------------------------- /TouchExamples/res/values/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 160dp 4 | 1280dp 5 | 720dp 6 | -------------------------------------------------------------------------------- /TouchExamples/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 |