diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/framework/RWT/RWTButton.java b/app/src/main/java/org/ntlab/radishforandroidstudio/framework/RWT/RWTButton.java deleted file mode 100644 index 5482b4f..0000000 --- a/app/src/main/java/org/ntlab/radishforandroidstudio/framework/RWT/RWTButton.java +++ /dev/null @@ -1,34 +0,0 @@ -package org.ntlab.radishforandroidstudio.framework.RWT; - -import android.content.Context; -import android.support.v7.widget.AppCompatButton; -import android.util.AttributeSet; -import android.view.MotionEvent; -import android.view.View; -import android.widget.LinearLayout; - -public class RWTButton extends AppCompatButton implements View.OnTouchListener { - public RWTButton(Context context) { - super(context); - init(); - } - - public RWTButton(Context context, AttributeSet attrs) { - super(context, attrs); - init(); - } - - public RWTButton(Context context, AttributeSet attrs, int defStyleAttr) { - super(context, attrs, defStyleAttr); - init(); - } - - public void init() { - } - - @Override - public boolean onTouch(View v, MotionEvent event) { - System.out.println("touch!!"); - return false; - } -} diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/framework/RWT/RWTPad.java b/app/src/main/java/org/ntlab/radishforandroidstudio/framework/RWT/RWTPad.java new file mode 100644 index 0000000..49de1d0 --- /dev/null +++ b/app/src/main/java/org/ntlab/radishforandroidstudio/framework/RWT/RWTPad.java @@ -0,0 +1,68 @@ +package org.ntlab.radishforandroidstudio.framework.RWT; + +import android.content.Context; +import android.graphics.Canvas; +import android.graphics.Color; +import android.graphics.Paint; +import android.support.v7.widget.AppCompatButton; +import android.util.AttributeSet; +import android.view.MotionEvent; +import android.view.View; + +import org.ntlab.radishforandroidstudio.framework.event.PadEvent; +import org.ntlab.radishforandroidstudio.framework.listener.PadListener; +import org.ntlab.radishforandroidstudio.framework.listener.SamplePadListener; +import org.ntlab.radishforandroidstudio.framework.subject.PadSubject; + +public class RWTPad extends View { + private MotionEvent touchInfo = null; + + public RWTPad(Context context) { + super(context); + init(); + } + + public RWTPad(Context context, AttributeSet attrs) { + super(context, attrs); + init(); + } + + public RWTPad(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + init(); + } + + public void init() { + // Listenerサンプル + addListener(new SamplePadListener()); + } + + @Override + public void onDraw(Canvas canvas) { + super.onDraw(canvas); + Paint paint = this.createRedPaint(); + canvas.drawCircle(150, 150, 100, paint); + } + + private Paint createRedPaint() { + Paint paint = new Paint(); + paint.setAntiAlias(true); + paint.setColor(Color.RED); + // 以下の値が小さいと点が見えない可能性があります + paint.setStrokeWidth(10); + return paint; + } + + @Override + public boolean onTouchEvent(MotionEvent event) { + touchInfo = event; + PadEvent padEvent = new PadEvent(event, 1.0f); + PadSubject.getInstance().pushListeners(padEvent); + System.out.println("Touch x:"); + return true; + } + + public void addListener(PadListener listener) { + PadSubject.getInstance().addListener(listener); + } +} diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/framework/RWT/RWTUIFragment.java b/app/src/main/java/org/ntlab/radishforandroidstudio/framework/RWT/RWTUIFragment.java index e1a02ae..1dd6ff2 100644 --- a/app/src/main/java/org/ntlab/radishforandroidstudio/framework/RWT/RWTUIFragment.java +++ b/app/src/main/java/org/ntlab/radishforandroidstudio/framework/RWT/RWTUIFragment.java @@ -23,26 +23,12 @@ @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - View v = inflater.inflate(R.layout.ui_fragment, container, false); - Button btn = v.findViewById(R.id.button3); - btn.setOnTouchListener(new OnTouchListener() { - @Override - public boolean onTouch(View v, MotionEvent event) { - System.out.println("f"); - return false; - } - }); - - return inflater.inflate(R.layout.ui_fragment, null); } @Override public boolean onTouch(View v, MotionEvent event) { -// switch (v.getId()) { -// -// } - System.out.println("id: " + v.getId()); + System.out.println("RWTUIFragment touch"); return false; } } diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/framework/event/MyEvent.java b/app/src/main/java/org/ntlab/radishforandroidstudio/framework/event/MyEvent.java new file mode 100644 index 0000000..37c04b4 --- /dev/null +++ b/app/src/main/java/org/ntlab/radishforandroidstudio/framework/event/MyEvent.java @@ -0,0 +1,15 @@ +package org.ntlab.radishforandroidstudio.framework.event; + +import android.view.MotionEvent; + +public class MyEvent { + MotionEvent e; + + public MyEvent(MotionEvent e) { + this.e = e; + } + + public final MotionEvent getMotionEvent() { + return e; + } +} diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/framework/event/PadEvent.java b/app/src/main/java/org/ntlab/radishforandroidstudio/framework/event/PadEvent.java new file mode 100644 index 0000000..3cfa8fc --- /dev/null +++ b/app/src/main/java/org/ntlab/radishforandroidstudio/framework/event/PadEvent.java @@ -0,0 +1,17 @@ +package org.ntlab.radishforandroidstudio.framework.event; + +import android.view.MotionEvent; + +public class PadEvent extends MyEvent{ + private MotionEvent e; + private float dummy; + + public PadEvent(MotionEvent e, float f) { + super(e); + dummy = f; + } + + public final float getDummy() { + return dummy; + } +} diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/framework/listener/MyListener.java b/app/src/main/java/org/ntlab/radishforandroidstudio/framework/listener/MyListener.java index 921be0f..fa5a7a8 100644 --- a/app/src/main/java/org/ntlab/radishforandroidstudio/framework/listener/MyListener.java +++ b/app/src/main/java/org/ntlab/radishforandroidstudio/framework/listener/MyListener.java @@ -1,7 +1,7 @@ package org.ntlab.radishforandroidstudio.framework.listener; -import android.view.InputEvent; +import org.ntlab.radishforandroidstudio.framework.event.MyEvent; -public interface MyListener { - public boolean onEvent(InputEvent event); +public interface MyListener { + boolean onEvent(EventType event); } diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/framework/listener/PadListener.java b/app/src/main/java/org/ntlab/radishforandroidstudio/framework/listener/PadListener.java new file mode 100644 index 0000000..6c5e1a8 --- /dev/null +++ b/app/src/main/java/org/ntlab/radishforandroidstudio/framework/listener/PadListener.java @@ -0,0 +1,5 @@ +package org.ntlab.radishforandroidstudio.framework.listener; + +import org.ntlab.radishforandroidstudio.framework.event.PadEvent; + +public interface PadListener extends MyListener {} diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/framework/listener/SamplePadListener.java b/app/src/main/java/org/ntlab/radishforandroidstudio/framework/listener/SamplePadListener.java new file mode 100644 index 0000000..0ddce68 --- /dev/null +++ b/app/src/main/java/org/ntlab/radishforandroidstudio/framework/listener/SamplePadListener.java @@ -0,0 +1,11 @@ +package org.ntlab.radishforandroidstudio.framework.listener; + +import org.ntlab.radishforandroidstudio.framework.event.PadEvent; + +public class SamplePadListener implements PadListener { + @Override + public boolean onEvent(PadEvent event) { + System.out.println("PadListener Sample value:" + event.getDummy()); + return false; + } +} diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/framework/listener/TouchListener.java b/app/src/main/java/org/ntlab/radishforandroidstudio/framework/listener/TouchListener.java deleted file mode 100644 index b8a49a8..0000000 --- a/app/src/main/java/org/ntlab/radishforandroidstudio/framework/listener/TouchListener.java +++ /dev/null @@ -1,13 +0,0 @@ -package org.ntlab.radishforandroidstudio.framework.listener; - -import android.view.InputEvent; - -public interface TouchListener extends MyListener { - - @Override - public boolean onEvent(InputEvent event); - - public boolean onTouch(InputEvent event); - public boolean onLongPress(InputEvent event); - public boolean onRelease(InputEvent event); -} diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/framework/subject/MySubject.java b/app/src/main/java/org/ntlab/radishforandroidstudio/framework/subject/MySubject.java index d93fc72..798acf7 100644 --- a/app/src/main/java/org/ntlab/radishforandroidstudio/framework/subject/MySubject.java +++ b/app/src/main/java/org/ntlab/radishforandroidstudio/framework/subject/MySubject.java @@ -5,17 +5,18 @@ import java.util.Set; import java.util.concurrent.CopyOnWriteArraySet; +import org.ntlab.radishforandroidstudio.framework.event.MyEvent; import org.ntlab.radishforandroidstudio.framework.listener.MyListener; -public abstract class MySubject { - protected Set listenerSet = new CopyOnWriteArraySet(); +public abstract class MySubject { + protected Set listenerSet = new CopyOnWriteArraySet<>(); - public void addListener(MyListener listener) { + protected void addListener(ListenerType listener) { listenerSet.add(listener); } - protected void notifyListeners(InputEvent event) { - for (MyListener listener : listenerSet) { + protected void notifyListeners(EventType event) { + for (ListenerType listener : listenerSet) { listener.onEvent(event); } } diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/framework/subject/PadSubject.java b/app/src/main/java/org/ntlab/radishforandroidstudio/framework/subject/PadSubject.java new file mode 100644 index 0000000..f08c156 --- /dev/null +++ b/app/src/main/java/org/ntlab/radishforandroidstudio/framework/subject/PadSubject.java @@ -0,0 +1,22 @@ +package org.ntlab.radishforandroidstudio.framework.subject; + +import org.ntlab.radishforandroidstudio.framework.event.PadEvent; +import org.ntlab.radishforandroidstudio.framework.listener.PadListener; + +public class PadSubject extends MySubject { + public final static PadSubject own = new PadSubject(); + + private PadSubject() {} + + public static PadSubject getInstance() { + return own; + } + + public void addListener(PadListener listener) { + super.addListener(listener); + } + + public void pushListeners(PadEvent e) { + notifyListeners(e); + } +} diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/spriteTest/TestActivity.java b/app/src/main/java/org/ntlab/radishforandroidstudio/spriteTest/TestActivity.java index 431568c..123d675 100644 --- a/app/src/main/java/org/ntlab/radishforandroidstudio/spriteTest/TestActivity.java +++ b/app/src/main/java/org/ntlab/radishforandroidstudio/spriteTest/TestActivity.java @@ -15,6 +15,7 @@ import org.ntlab.radishforandroidstudio.framework.RWT.RWTSurfaceView; import org.ntlab.radishforandroidstudio.framework.RWT.RWTUIFragment; import org.ntlab.radishforandroidstudio.framework.gameMain.RealTimeActivity; +import org.ntlab.radishforandroidstudio.framework.listener.PadListener; import org.ntlab.radishforandroidstudio.framework.model3D.Object3D; import org.ntlab.radishforandroidstudio.framework.model3D.Position3D; import org.ntlab.radishforandroidstudio.framework.model3D.Universe; @@ -23,6 +24,7 @@ import org.ntlab.radishforandroidstudio.framework.physics.PhysicalSystem; import org.ntlab.radishforandroidstudio.framework.physics.Solid3D; import org.ntlab.radishforandroidstudio.framework.physics.Velocity3D; +import org.ntlab.radishforandroidstudio.framework.subject.PadSubject; import org.ntlab.radishforandroidstudio.framework.view3D.Camera3D; import org.ntlab.radishforandroidstudio.java3d.Appearance; import org.ntlab.radishforandroidstudio.java3d.Box; diff --git a/app/src/main/res/layout/ui_fragment.xml b/app/src/main/res/layout/ui_fragment.xml index 1080e08..7786ac5 100644 --- a/app/src/main/res/layout/ui_fragment.xml +++ b/app/src/main/res/layout/ui_fragment.xml @@ -5,27 +5,12 @@ android:layout_width="match_parent" android:layout_height="match_parent"> -