Android: implement touch api
This commit is contained in:
parent
0421b8258f
commit
56bf3bb4a1
@ -52,6 +52,11 @@ public class GestureContainerNode extends StackNode {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private String onTouchDown;
|
||||||
|
private String onTouchMove;
|
||||||
|
private String onTouchUp;
|
||||||
|
private String onTouchCancel;
|
||||||
|
|
||||||
private String onSingleTap;
|
private String onSingleTap;
|
||||||
private String onDoubleTap;
|
private String onDoubleTap;
|
||||||
private String onLongPress;
|
private String onLongPress;
|
||||||
@ -113,6 +118,30 @@ public class GestureContainerNode extends StackNode {
|
|||||||
} else {
|
} else {
|
||||||
onSwipe = null;
|
onSwipe = null;
|
||||||
}
|
}
|
||||||
|
} else if ("onTouchDown".equals(name)) {
|
||||||
|
if (prop.isString()) {
|
||||||
|
onTouchDown = prop.asString().value();
|
||||||
|
} else {
|
||||||
|
onTouchDown = null;
|
||||||
|
}
|
||||||
|
} else if ("onTouchMove".equals(name)) {
|
||||||
|
if (prop.isString()) {
|
||||||
|
onTouchMove = prop.asString().value();
|
||||||
|
} else {
|
||||||
|
onTouchMove = null;
|
||||||
|
}
|
||||||
|
} else if ("onTouchUp".equals(name)) {
|
||||||
|
if (prop.isString()) {
|
||||||
|
onTouchUp = prop.asString().value();
|
||||||
|
} else {
|
||||||
|
onTouchUp = null;
|
||||||
|
}
|
||||||
|
} else if ("onTouchCancel".equals(name)) {
|
||||||
|
if (prop.isString()) {
|
||||||
|
onTouchCancel = prop.asString().value();
|
||||||
|
} else {
|
||||||
|
onTouchCancel = null;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
super.blend(view, name, prop);
|
super.blend(view, name, prop);
|
||||||
}
|
}
|
||||||
@ -230,13 +259,26 @@ public class GestureContainerNode extends StackNode {
|
|||||||
@Override
|
@Override
|
||||||
public boolean onTouchEvent(MotionEvent event) {
|
public boolean onTouchEvent(MotionEvent event) {
|
||||||
// handle touch event conflict when in a scroll view or other similar containers
|
// handle touch event conflict when in a scroll view or other similar containers
|
||||||
|
|
||||||
switch (event.getAction()) {
|
switch (event.getAction()) {
|
||||||
|
case MotionEvent.ACTION_DOWN:
|
||||||
|
if (onTouchDown != null)
|
||||||
|
callJSResponse(onTouchDown, DoricUtils.px2dp(event.getX()), DoricUtils.px2dp(event.getY()));
|
||||||
|
break;
|
||||||
case MotionEvent.ACTION_MOVE:
|
case MotionEvent.ACTION_MOVE:
|
||||||
getParent().requestDisallowInterceptTouchEvent(true);
|
getParent().requestDisallowInterceptTouchEvent(true);
|
||||||
|
|
||||||
|
if (onTouchMove != null)
|
||||||
|
callJSResponse(onTouchMove, DoricUtils.px2dp(event.getX()), DoricUtils.px2dp(event.getY()));
|
||||||
break;
|
break;
|
||||||
case MotionEvent.ACTION_UP:
|
case MotionEvent.ACTION_UP:
|
||||||
|
if (onTouchUp != null)
|
||||||
|
callJSResponse(onTouchUp, DoricUtils.px2dp(event.getX()), DoricUtils.px2dp(event.getY()));
|
||||||
case MotionEvent.ACTION_CANCEL:
|
case MotionEvent.ACTION_CANCEL:
|
||||||
getParent().requestDisallowInterceptTouchEvent(false);
|
getParent().requestDisallowInterceptTouchEvent(false);
|
||||||
|
|
||||||
|
if (onTouchCancel != null)
|
||||||
|
callJSResponse(onTouchCancel, DoricUtils.px2dp(event.getX()), DoricUtils.px2dp(event.getY()));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user