Android onTouchEvent(MotionEvent事件)在自定义视图中不起作用

Android onTouchEvent(MotionEvent事件)在自定义视图中不起作用,android,Android,我编写了以下代码。当我只想触摸矩形对象时,我会看到大矩形对象。但是当我只想使用矩形对象触摸时,我在屏幕上看不到大矩形对象。请帮帮我 public class MainActivity extends Activity { Rectangle rectangle; @Override protected void onCreate(Bundle bundle) { super.onCreate(bundle); rectangle = ne

我编写了以下代码。当我只想触摸
矩形
对象时,我会看到
大矩形
对象。但是当我只想使用
矩形
对象触摸时,我在屏幕上看不到
大矩形
对象。请帮帮我

public class MainActivity extends Activity {
    Rectangle rectangle;

    @Override
    protected void onCreate(Bundle bundle) {
        super.onCreate(bundle);
        rectangle = new Rectangle(this);
        setContentView(rectangle);

    }

}

class Rectangle extends View {
    Paint paint;

    Rectangle(Context context) {
        super(context);
        paint = new Paint();
    }
@Override
public boolean onTouchEvent(MotionEvent event) {
    new Larger_Rectangle(getContext());

    return true;
}
    @Override
    public void onDraw(Canvas canvas) {
        paint.setColor(Color.RED);
        canvas.drawRect(10, 30, 50, 70, paint);
    }

}

 class Larger_Rectangle extends View {
    Paint paint;

    Larger_Rectangle(Context context) {
        super(context);
        paint = new Paint();
    }

    @Override
    public void onDraw(Canvas canvas) {
        paint.setColor(Color.BLUE);
        canvas.drawRect(60,100,120,150,paint);
    }

}

步骤1-制作一个如下所示的类:

public class OnTouchListener implements OnTouchListener {

    private final GestureDetector gestureDetector;

    public OnTouchListener (Context ctx){
        gestureDetector = new GestureDetector(ctx, new OnTouchViewListener());
    }

    private final class OnTouchViewListener extends SimpleOnGestureListener {

        private static final int SWIPE_THRESHOLD = 100;
        private static final int SWIPE_VELOCITY_THRESHOLD = 100;

        @Override
        public boolean onDown(MotionEvent e) {
            return true;
        }

        @Override
        public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
            boolean result = false;
            onTouchView();
            return result;
        }
    }

    public void onTouchView() {
    }



    @Override
    public boolean onTouch(View v, MotionEvent event) {
        this.gestureDetector.onTouchEvent(event);
        return false;
    }
}
步骤2-然后在活动课上:

@Override
    protected void onCreate(Bundle bundle) {
        super.onCreate(bundle);
        rectangle = new Rectangle(this);
        setContentView(rectangle);

        rectangle.setOnTouchListener(new OnTouchListener(context){
            @Override
            public void onTouchView() {
                // TODO Auto-generated method stub
                super.onTouchView();
               //do whatever you want to do
            }

        });
}

new Large_Rectangle(getContext());
”它是干什么用的?因为我只想在触摸
Rectangle
对象时,我在屏幕上看到
Large_Rectangle
。有关自定义视图的更多信息,请阅读:@stackoverflow:this'new Large_Rectangle(getContext());”将只创建一个对象。“不要将其附加到任何UI元素”。。!!您必须将矩形附加到父布局才能使其工作。创建父布局。在OnTouch方法中使用addView将矩形添加到父布局