mirror of
https://github.com/etlegacy/JoyStick.git
synced 2024-11-10 06:42:15 +00:00
singleTap and doubleTap event for listener
This commit is contained in:
parent
63a60959c3
commit
3aee7d10d3
2 changed files with 62 additions and 8 deletions
|
@ -38,4 +38,10 @@ public class MainActivity extends AppCompatActivity implements JoyStick.JoyStick
|
|||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTap() {}
|
||||
|
||||
@Override
|
||||
public void onDoubleTap() {}
|
||||
}
|
|
@ -25,13 +25,14 @@ import android.graphics.Color;
|
|||
import android.graphics.Paint;
|
||||
import android.graphics.RectF;
|
||||
import android.util.AttributeSet;
|
||||
import android.view.GestureDetector;
|
||||
import android.view.MotionEvent;
|
||||
import android.view.View;
|
||||
|
||||
/**
|
||||
* Created by edgarramirez on 10/30/15.
|
||||
*/
|
||||
public class JoyStick extends View {
|
||||
public class JoyStick extends View implements GestureDetector.OnGestureListener, GestureDetector.OnDoubleTapListener {
|
||||
|
||||
public static final int DIRECTION_CENTER = -1;
|
||||
public static final int DIRECTION_LEFT = 0;
|
||||
|
@ -50,6 +51,8 @@ public class JoyStick extends View {
|
|||
|
||||
private JoyStickListener listener;
|
||||
private Paint paint;
|
||||
private RectF temp;
|
||||
private GestureDetector gestureDetector;
|
||||
private int direction = DIRECTION_CENTER;
|
||||
private int type = TYPE_8_AXIS;
|
||||
private float centerX;
|
||||
|
@ -60,7 +63,6 @@ public class JoyStick extends View {
|
|||
private float buttonRadius;
|
||||
private double power = 0;
|
||||
private double angle = 0;
|
||||
private RectF temp;
|
||||
|
||||
//Background Color
|
||||
private int padColor;
|
||||
|
@ -82,19 +84,16 @@ public class JoyStick extends View {
|
|||
|
||||
public interface JoyStickListener {
|
||||
void onMove(JoyStick joyStick, double angle, double power, int direction);
|
||||
void onTap();
|
||||
void onDoubleTap();
|
||||
}
|
||||
|
||||
public JoyStick(Context context) {
|
||||
super(context);
|
||||
init(context, null);
|
||||
this(context, null);
|
||||
}
|
||||
|
||||
public JoyStick(Context context, AttributeSet attrs) {
|
||||
super(context, attrs);
|
||||
init(context, attrs);
|
||||
}
|
||||
|
||||
private void init(Context context, AttributeSet attrs) {
|
||||
paint = new Paint();
|
||||
paint.setStyle(Paint.Style.FILL);
|
||||
paint.setAntiAlias(true);
|
||||
|
@ -102,6 +101,10 @@ public class JoyStick extends View {
|
|||
|
||||
temp = new RectF();
|
||||
|
||||
gestureDetector = new GestureDetector(context, this);
|
||||
gestureDetector.setIsLongpressEnabled(false);
|
||||
gestureDetector.setOnDoubleTapListener(this);
|
||||
|
||||
padColor = Color.WHITE;
|
||||
buttonColor = Color.RED;
|
||||
|
||||
|
@ -165,6 +168,8 @@ public class JoyStick extends View {
|
|||
|
||||
@Override
|
||||
public boolean onTouchEvent(MotionEvent event) {
|
||||
gestureDetector.onTouchEvent(event);
|
||||
|
||||
switch (event.getAction()) {
|
||||
case MotionEvent.ACTION_DOWN:
|
||||
case MotionEvent.ACTION_MOVE:
|
||||
|
@ -206,6 +211,49 @@ public class JoyStick extends View {
|
|||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onDown(MotionEvent motionEvent) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onShowPress(MotionEvent motionEvent) {}
|
||||
|
||||
@Override
|
||||
public boolean onSingleTapUp(MotionEvent motionEvent) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onScroll(MotionEvent motionEvent, MotionEvent motionEvent1, float v, float v1) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLongPress(MotionEvent motionEvent) {}
|
||||
|
||||
@Override
|
||||
public boolean onFling(MotionEvent motionEvent, MotionEvent motionEvent1, float v, float v1) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onSingleTapConfirmed(MotionEvent motionEvent) {
|
||||
if (listener != null) listener.onTap();
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onDoubleTap(MotionEvent motionEvent) {
|
||||
if (listener != null) listener.onDoubleTap();
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onDoubleTapEvent(MotionEvent motionEvent) {
|
||||
return false;
|
||||
}
|
||||
|
||||
private static int calculateDirection(double degrees) {
|
||||
if ((degrees >= 0 && degrees < 22.5) || (degrees < 0 && degrees > -22.5)) return DIRECTION_LEFT;
|
||||
else if (degrees >= 22.5 && degrees < 67.5) return DIRECTION_LEFT_UP;
|
||||
|
|
Loading…
Reference in a new issue