Search code examples
androidgesture

Android GestureOverlayView parameters


I started experimenting with Custom Gestures and the GestureOverlayView and noticed a few variables where I am not sure what they are for and what range of values can and should be assigned, the docs seem to be somewhat vague on those:

//Minimum curve angle a stroke must contain before it is recognized as a gesture. 
android:gestureStrokeAngleThreshold

I assumed this is in degrees and when I add "25" here, a sharp edge must be contained in the gesture, but actually it still is detected ifI draw a circle or a perfect square.

//Minimum length of a stroke before it is recognized as a gesture. 
android:gestureStrokeLengthThreshold    

Is this in dp ? Because it seems like on smaller screens it is harder to trigger the gesture...

//Squareness threshold of a stroke before it is recognized as a gesture. 
android:gestureStrokeSquarenessThreshold

what is this?

EDIT:

Ok I just realized that every prediction has a score value, which should be used to find out if the gesture performed actually meets the requirements, so I added a check if the prediction's score is greater than 1.

Still I am curious what those variables in GestureOverlayView are doing, so enlighten me :)


Solution

  • gestureStrokeLengthThreshold definitely is not density independent but apparently uses pixels. If you want to set a density independent threshold you can calculate the gestureStrokeLengthThreshold at runtime, like that:

        DisplayMetrics metrics = getResources().getDisplayMetrics();
        float normalizedScreenSize = (metrics.heightPixels + metrics.widthPixels) / 2.0f;
        return normalizedScreenSize * GESTURE_LENGTH_THRESHOLD;
    

    GESTURE_LENGTH_THRESHOLD would be a value representing how long the gesture should be. A value of 1.0 would roughly be the size of the screen (averaged from screen width and height)

    Still I am interested in what those other variables in GestureOverlayView do, so if you know more - enlighten me :)