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将矩形添加到父布局