Skip to content

Commit d2d71cb

Browse files
authored
Fix taps on Android (#21)
1 parent 2aaf2ec commit d2d71cb

1 file changed

Lines changed: 33 additions & 1 deletion

File tree

src/android/src/main/java/io/callstack/react/fbads/NativeAdView.java

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
*/
88
package io.callstack.react.fbads;
99

10-
import android.view.View;
10+
import android.view.MotionEvent;
1111

1212
import com.facebook.ads.NativeAd;
1313
import com.facebook.react.bridge.Arguments;
@@ -23,6 +23,12 @@ public class NativeAdView extends ReactViewGroup {
2323
/** @{RCTEventEmitter} instance used for sending events back to JS **/
2424
private RCTEventEmitter mEventEmitter;
2525

26+
/** @{float} x coordinate where the touch event started **/
27+
private float startX;
28+
29+
/** @{float} y coordinate where the touche event started **/
30+
private float startY;
31+
2632
/**
2733
* Creates new NativeAdView instance and retrieves event emitter
2834
*
@@ -73,4 +79,30 @@ public void setNativeAd(NativeAd nativeAd) {
7379

7480
mNativeAd.registerViewForInteraction(this);
7581
}
82+
83+
/**
84+
* If touch event is a click, simulate native event so that `FBAds` can
85+
* trigger its listener
86+
*
87+
* @param {MotionEvent} ev
88+
*
89+
* @return
90+
*/
91+
@Override
92+
public boolean onTouchEvent(MotionEvent ev) {
93+
switch (ev.getActionMasked()) {
94+
case MotionEvent.ACTION_DOWN:
95+
startX = ev.getX();
96+
startY = ev.getY();
97+
break;
98+
case MotionEvent.ACTION_UP:
99+
float deltaX = Math.abs(startX - ev.getX());
100+
float deltaY = Math.abs(startY - ev.getY());
101+
if (deltaX < 200 & deltaY < 200) {
102+
performClick();
103+
}
104+
break;
105+
}
106+
return true;
107+
}
76108
}

0 commit comments

Comments
 (0)