Android 用の非常にシンプルなピンポン アプリケーションを作成します。
それはかなり良いようですが、私には1つの問題があります:
ラケットをユーザーのタッチ位置に配置するために、onScreenTouch イベントを実行しようとしました。
私の質問は - どこに ? を追加するObj.addOnTouchEvent(this)
かです。
画面タッチを処理するオブジェクトは何ですか? 画面オブジェクトは何ですか?
どのグラフィックウィジェットでもタッチイベントを処理できます。通常、ビューまたはアクティビティがケースに使用されます。
タッチを処理する方法はいくつかありますが、次のことをお勧めしGestureListener
ます。
public class GestureListener implements GestureDetector.OnGestureListener
{
MyView appliedView; //view who responses to graphical gestures
public GestureListener(MyView currentView)
{
this.appliedView = currentView;
}
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2,
float dx,
float dy) {
//make your view response to gestures
appliedView.onGestureMove(e1, e2, dx, dy);
return true;
}
@Override
public boolean onDown(MotionEvent arg0) {
return true;
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2,
float velocityX,
float velocityY) {
return true;
}
@Override
public void onLongPress(MotionEvent e) {
}
@Override
public void onShowPress(MotionEvent e) {
}
@Override
public boolean onSingleTapUp(MotionEvent e) {
return true;
}
}
そしてあなたのViewクラスでは:
public class MyView extends View
{
private GestureDetector gestureMgr;
public MyView(Context context)
{
super(context);
gestureMgr= new GestureDetector(context, new GestureListener(this));
}
@Override
public boolean onTouchEvent(MotionEvent event)
{
return gestureMgr.onTouchEvent(event);
}
public void onGestureMove(MotionEvent e1, MotionEvent e2, float dx, float dy)
{
//check obj is touched or not
//do moving objects around
}
}