Skip to content

Commit ac3a194

Browse files
authored
Infer nullity with annotations (#95)
1 parent c6e02b7 commit ac3a194

File tree

14 files changed

+86
-57
lines changed

14 files changed

+86
-57
lines changed

CHANGELOG.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,12 @@
11
# Changelog for the Mapbox Gestures for Android
22

3+
## 0.6.0 - January 8, 2020
4+
#### Major changes
5+
- Replace appcompat dependencies with AndroidX [#94](https://github.com/mapbox/mapbox-gestures-android/pull/94)
6+
7+
#### Minor features and bug fixes
8+
- Use NonNull in gesture listener interfaces to improve consumption with the Kotlin programming language [#95](https://github.com/mapbox/mapbox-gestures-android/pull/95)
9+
310
## 0.5.1 - August 20, 2019
411
#### Bug fixes
512
- Fixed a bug where quick-scale was registered during a move gesture that followed a double-tap [#88](https://github.com/mapbox/mapbox-gestures-android/pull/88)

app/src/main/java/com/mapbox/android/gestures/testapp/MainActivity.java

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import android.content.Intent;
44
import android.os.Bundle;
55
import androidx.appcompat.app.AppCompatActivity;
6+
import androidx.annotation.NonNull;
67
import android.util.DisplayMetrics;
78
import android.view.Menu;
89
import android.view.MenuInflater;
@@ -197,7 +198,7 @@ public boolean onScale(StandardScaleGestureDetector detector) {
197198

198199
androidGesturesManager.setRotateGestureListener(new RotateGestureDetector.SimpleOnRotateGestureListener() {
199200
@Override
200-
public boolean onRotate(RotateGestureDetector detector, float rotationDegreesSinceLast,
201+
public boolean onRotate(@NonNull RotateGestureDetector detector, float rotationDegreesSinceLast,
201202
float rotationDegreesSinceFirst) {
202203
icon.setRotation(icon.getRotation() - rotationDegreesSinceLast);
203204
return true;
@@ -226,7 +227,7 @@ public boolean onDoubleTap(MotionEvent e) {
226227
new MultiFingerTapGestureDetector.OnMultiFingerTapGestureListener() {
227228

228229
@Override
229-
public boolean onMultiFingerTap(MultiFingerTapGestureDetector detector, int pointersCount) {
230+
public boolean onMultiFingerTap(@NonNull MultiFingerTapGestureDetector detector, int pointersCount) {
230231
if (pointersCount == 2) {
231232
rescaleIcon(0.65f);
232233
}
@@ -236,7 +237,9 @@ public boolean onMultiFingerTap(MultiFingerTapGestureDetector detector, int poin
236237

237238
androidGesturesManager.setShoveGestureListener(new ShoveGestureDetector.SimpleOnShoveGestureListener() {
238239
@Override
239-
public boolean onShove(ShoveGestureDetector detector, float deltaPixelsSinceLast, float deltaPixelsSinceStart) {
240+
public boolean onShove(@NonNull ShoveGestureDetector detector,
241+
float deltaPixelsSinceLast,
242+
float deltaPixelsSinceStart) {
240243
icon.setRotationX(icon.getRotationX() - deltaPixelsSinceLast);
241244
return true;
242245
}
@@ -245,7 +248,7 @@ public boolean onShove(ShoveGestureDetector detector, float deltaPixelsSinceLast
245248
androidGesturesManager.setSidewaysShoveGestureListener(
246249
new SidewaysShoveGestureDetector.SimpleOnSidewaysShoveGestureListener() {
247250
@Override
248-
public boolean onSidewaysShove(SidewaysShoveGestureDetector detector, float deltaPixelsSinceLast,
251+
public boolean onSidewaysShove(@NonNull SidewaysShoveGestureDetector detector, float deltaPixelsSinceLast,
249252
float deltaPixelsSinceStart) {
250253
icon.setRotationY(icon.getRotationY() + deltaPixelsSinceLast);
251254
return true;
@@ -258,19 +261,19 @@ public boolean onSidewaysShove(SidewaysShoveGestureDetector detector, float delt
258261
private final MoveGestureDetector.OnMoveGestureListener onMoveGestureListener =
259262
new MoveGestureDetector.OnMoveGestureListener() {
260263
@Override
261-
public boolean onMoveBegin(MoveGestureDetector detector) {
264+
public boolean onMoveBegin(@NonNull MoveGestureDetector detector) {
262265
return true;
263266
}
264267

265268
@Override
266-
public boolean onMove(MoveGestureDetector detector, float distanceX, float distanceY) {
269+
public boolean onMove(@NonNull MoveGestureDetector detector, float distanceX, float distanceY) {
267270
icon.setTranslationX(icon.getTranslationX() - distanceX);
268271
icon.setTranslationY(icon.getTranslationY() - distanceY);
269272
return true;
270273
}
271274

272275
@Override
273-
public void onMoveEnd(MoveGestureDetector detector, float velocityX, float velocityY) {
276+
public void onMoveEnd(@NonNull MoveGestureDetector detector, float velocityX, float velocityY) {
274277

275278
}
276279
};

gradle/dependencies.gradle

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,8 @@ ext {
1515
espresso : '3.2.0',
1616
kotlin : '1.3.41',
1717
appCompat : '1.0.0',
18-
core : '1.0.0'
18+
core : '1.0.0',
19+
annotation : '1.0.0'
1920
]
2021

2122
pluginVersion = [
@@ -34,6 +35,7 @@ ext {
3435
// support
3536
supportAppcompatV7 : "androidx.appcompat:appcompat:${version.appCompat}",
3637
supportCompat : "androidx.core:core:${version.core}",
38+
annotations : "androidx.annotation:annotation:${version.annotation}",
3739

3840
// timber
3941
timber : "com.jakewharton.timber:timber:${version.timber}",

library/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ android {
3535
dependencies {
3636
implementation fileTree(dir: 'libs', include: ['*.jar'])
3737
implementation dependenciesList.supportCompat
38-
38+
implementation dependenciesList.annotations
3939
testImplementation dependenciesList.kotlinLib
4040
testImplementation dependenciesList.junit
4141
testImplementation dependenciesList.mockito

library/src/main/java/com/mapbox/android/gestures/BaseGesture.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
import android.content.Context;
44
import androidx.annotation.UiThread;
5+
import androidx.annotation.NonNull;
6+
import androidx.annotation.Nullable;
57
import android.view.MotionEvent;
68
import android.view.WindowManager;
79

@@ -37,7 +39,7 @@ protected boolean onTouchEvent(MotionEvent motionEvent) {
3739
return analyze(motionEvent);
3840
}
3941

40-
private boolean analyze(MotionEvent motionEvent) {
42+
private boolean analyze(@Nullable MotionEvent motionEvent) {
4143
if (motionEvent == null) {
4244
return false;
4345
}
@@ -59,7 +61,7 @@ private boolean analyze(MotionEvent motionEvent) {
5961
return analyzeEvent(motionEvent);
6062
}
6163

62-
protected abstract boolean analyzeEvent(MotionEvent motionEvent);
64+
protected abstract boolean analyzeEvent(@NonNull MotionEvent motionEvent);
6365

6466
protected boolean canExecute(@AndroidGesturesManager.GestureType int invokedGestureType) {
6567
if (listener == null || !isEnabled) {

library/src/main/java/com/mapbox/android/gestures/MoveGestureDetector.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ public interface OnMoveGestureListener {
5959
* @return true if you want to receive subsequent {@link #onMove(MoveGestureDetector, float, float)} callbacks,
6060
* false if you want to ignore this gesture.
6161
*/
62-
boolean onMoveBegin(MoveGestureDetector detector);
62+
boolean onMoveBegin(@NonNull MoveGestureDetector detector);
6363

6464
/**
6565
* Called for every move change during the gesture.
@@ -69,7 +69,7 @@ public interface OnMoveGestureListener {
6969
* @param distanceY Y distance of the focal point in pixel since last call
7070
* @return true if the gesture was handled, false otherwise
7171
*/
72-
boolean onMove(MoveGestureDetector detector, float distanceX, float distanceY);
72+
boolean onMove(@NonNull MoveGestureDetector detector, float distanceX, float distanceY);
7373

7474
/**
7575
* Indicates that the move gesture ended.
@@ -78,29 +78,29 @@ public interface OnMoveGestureListener {
7878
* @param velocityY velocityY of the gesture in the moment of lifting the fingers
7979
* @param detector this detector
8080
*/
81-
void onMoveEnd(MoveGestureDetector detector, float velocityX, float velocityY);
81+
void onMoveEnd(@NonNull MoveGestureDetector detector, float velocityX, float velocityY);
8282
}
8383

8484
public static class SimpleOnMoveGestureListener implements OnMoveGestureListener {
8585

8686
@Override
87-
public boolean onMoveBegin(MoveGestureDetector detector) {
87+
public boolean onMoveBegin(@NonNull MoveGestureDetector detector) {
8888
return true;
8989
}
9090

9191
@Override
92-
public boolean onMove(MoveGestureDetector detector, float distanceX, float distanceY) {
92+
public boolean onMove(@NonNull MoveGestureDetector detector, float distanceX, float distanceY) {
9393
return false;
9494
}
9595

9696
@Override
97-
public void onMoveEnd(MoveGestureDetector detector, float velocityX, float velocityY) {
97+
public void onMoveEnd(@NonNull MoveGestureDetector detector, float velocityX, float velocityY) {
9898
// No implementation
9999
}
100100
}
101101

102102
@Override
103-
protected boolean analyzeEvent(MotionEvent motionEvent) {
103+
protected boolean analyzeEvent(@NonNull MotionEvent motionEvent) {
104104
switch (motionEvent.getActionMasked()) {
105105
case MotionEvent.ACTION_DOWN:
106106
case MotionEvent.ACTION_POINTER_DOWN:

library/src/main/java/com/mapbox/android/gestures/MultiFingerGesture.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,11 @@
33
import android.content.Context;
44
import android.graphics.PointF;
55
import android.os.Build;
6+
67
import androidx.annotation.DimenRes;
78
import androidx.annotation.UiThread;
9+
import androidx.annotation.NonNull;
10+
811
import android.util.DisplayMetrics;
912
import android.util.Log;
1013
import android.view.Display;
@@ -62,7 +65,7 @@ public MultiFingerGesture(Context context, AndroidGesturesManager gesturesManage
6265
}
6366

6467
@Override
65-
protected boolean analyzeEvent(MotionEvent motionEvent) {
68+
protected boolean analyzeEvent(@NonNull MotionEvent motionEvent) {
6669
int action = motionEvent.getActionMasked();
6770

6871
if (action == MotionEvent.ACTION_DOWN) {

library/src/main/java/com/mapbox/android/gestures/MultiFingerTapGestureDetector.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
package com.mapbox.android.gestures;
22

33
import android.content.Context;
4+
45
import androidx.annotation.DimenRes;
56
import androidx.annotation.UiThread;
7+
import androidx.annotation.NonNull;
8+
69
import android.view.MotionEvent;
710

811
import java.util.HashMap;
@@ -34,11 +37,11 @@ public MultiFingerTapGestureDetector(Context context, AndroidGesturesManager ges
3437
}
3538

3639
public interface OnMultiFingerTapGestureListener {
37-
boolean onMultiFingerTap(MultiFingerTapGestureDetector detector, int pointersCount);
40+
boolean onMultiFingerTap(@NonNull MultiFingerTapGestureDetector detector, int pointersCount);
3841
}
3942

4043
@Override
41-
protected boolean analyzeEvent(MotionEvent motionEvent) {
44+
protected boolean analyzeEvent(@NonNull MotionEvent motionEvent) {
4245
super.analyzeEvent(motionEvent);
4346

4447
int action = motionEvent.getActionMasked();

library/src/main/java/com/mapbox/android/gestures/ProgressiveGesture.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ public ProgressiveGesture(Context context, AndroidGesturesManager gesturesManage
3333
protected abstract Set<Integer> provideHandledTypes();
3434

3535
@Override
36-
protected boolean analyzeEvent(MotionEvent motionEvent) {
36+
protected boolean analyzeEvent(@NonNull MotionEvent motionEvent) {
3737
int action = motionEvent.getActionMasked();
3838
if (action == MotionEvent.ACTION_DOWN || action == MotionEvent.ACTION_POINTER_DOWN
3939
|| action == MotionEvent.ACTION_POINTER_UP

library/src/main/java/com/mapbox/android/gestures/RotateGestureDetector.java

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ public interface OnRotateGestureListener {
4545
* @return true if you want to receive subsequent {@link #onRotate(RotateGestureDetector, float, float)} callbacks,
4646
* false if you want to ignore this gesture.
4747
*/
48-
boolean onRotateBegin(RotateGestureDetector detector);
48+
boolean onRotateBegin(@NonNull RotateGestureDetector detector);
4949

5050
/**
5151
* Called for every rotation change during the gesture.
@@ -55,7 +55,9 @@ public interface OnRotateGestureListener {
5555
* @param rotationDegreesSinceFirst rotation change since the start of the gesture
5656
* @return true if the gesture was handled, false otherwise
5757
*/
58-
boolean onRotate(RotateGestureDetector detector, float rotationDegreesSinceLast, float rotationDegreesSinceFirst);
58+
boolean onRotate(@NonNull RotateGestureDetector detector,
59+
float rotationDegreesSinceLast,
60+
float rotationDegreesSinceFirst);
5961

6062
/**
6163
* Indicates that the rotation gesture ended.
@@ -65,24 +67,27 @@ public interface OnRotateGestureListener {
6567
* @param angularVelocity angularVelocity of the gesture in the moment of lifting the fingers
6668
* @param detector this detector
6769
*/
68-
void onRotateEnd(RotateGestureDetector detector, float velocityX, float velocityY, float angularVelocity);
70+
void onRotateEnd(@NonNull RotateGestureDetector detector, float velocityX, float velocityY, float angularVelocity);
6971
}
7072

7173
public static class SimpleOnRotateGestureListener implements OnRotateGestureListener {
7274

7375
@Override
74-
public boolean onRotateBegin(RotateGestureDetector detector) {
76+
public boolean onRotateBegin(@NonNull RotateGestureDetector detector) {
7577
return true;
7678
}
7779

7880
@Override
79-
public boolean onRotate(RotateGestureDetector detector, float rotationDegreesSinceLast,
81+
public boolean onRotate(@NonNull RotateGestureDetector detector, float rotationDegreesSinceLast,
8082
float rotationDegreesSinceFirst) {
8183
return true;
8284
}
8385

8486
@Override
85-
public void onRotateEnd(RotateGestureDetector detector, float velocityX, float velocityY, float angularVelocity) {
87+
public void onRotateEnd(@NonNull RotateGestureDetector detector,
88+
float velocityX,
89+
float velocityY,
90+
float angularVelocity) {
8691
// No implementation
8792
}
8893
}

0 commit comments

Comments
 (0)