1

私はクラスを拡張ViewGroupしていて、そこからすべてを取得したいと思ってMotionEventいます。これまでのところ私はこれを持っています:

class TestViewGroup extends ViewGroup {
     public TestViewGroup(Context context) {
         super(context);
     }

     @Override
     public boolean onTouchEvent(MotionEvent event) {
         Log.d("TestViewGroup", "X: " + (int)event.getX() + " Y: " + (int)event.getY());
         return true;
     }
 }

この方法では、画面に指を置くたびonTouchEvent(MotionEvent event)にキャプチャすることができます。MotionEventただし、指を下に置いたまま画面上で指を動かすと、指の座標をトレースし続けることができません。を拡張するクラスでは、指が。Viewを移動するときに指をトレースし続けることができることを知っていViewます。同じアイデアをにどのように適用できるのか疑問に思っていますViewGroup

4

2 に答える 2

0

非常に単純なViewGroupクラスを実装し、コードをコピーしました。onTouchEventは正常に機能しました

私が別の方法で行った唯一のことは、すべてのコンストラクターを実装することでしたが、一般的には、違いがないように見えるonTochEventクラスのスーパーも呼び出します。

だから私はあなたが違いを生むかもしれないあなたが省略しているコード/xmlがあるかどうか疑問に思っていますか?

コンストラクターを除いて、エミュレーターとデバイスのすべてのタッチイベントをキャプチャします。

public class customViewGroup extends ViewGroup {

    public customViewGroup(Context context) {
        super(context,null,0);
   }

    public customViewGroup(Context context, AttributeSet attrs) {
        super(context, attrs,0);

    }

    public customViewGroup(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    @Override
    protected void onLayout(boolean arg0, int arg1, int arg2, int arg3, int arg4) {

    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        Log.d("bThere", "X: " + (int)event.getX() + " Y: " + (int)event.getY());
        return true;//super.onTouchEvent(event);
    }

}
于 2011-07-17T05:35:47.090 に答える
-1

viewGroup.setClickable(true);ビューがより多くの touchevent を受け取ることができるように追加する必要があります。

于 2014-04-03T08:00:06.640 に答える