Метод OnTouch в OnDraw
Мне нужно установить метод onTouch для прямоугольника, который я настроил, но я не знаю, как это сделать в методе OnDraw. это, но я не знаю, как здесь мой код, спасибо за помощь!
public class Tab3 extends View implements OnTouchListener
{
int x1, x2, y1, y2;
Rect Rect = new Rect();
public Tab3(Context context, AttributeSet attrs)
{
super (context, attrs);
x1 = 0;
x2 = 100;
y1 = 0;
y2 = 100;
}
@Override
protected void onDraw(Canvas canvas)
{
// TODO Auto-generated method stub
super.onDraw(canvas);
Rect.set(x1, y1, x2, y2);
Paint blue = new Paint();
blue.setColor(Color.BLUE);
canvas.drawRect(Rect, blue);
}
@Override
public boolean onTouch(View v, MotionEvent event)
{
return false;
}
}
4 ответа
Решение
Во-первых, у вас может быть много проблем с
Rect Rect = new Rect();
назови это
Rect rect2 = new Rect();
или что-то в этом роде, а не Rect Rect
Небольшое выступление
Rect.set(x1, y1, x2, y2);
сделать это в
public Tab3(Context context, AttributeSet attrs)
{
}
поскольку
protected void onDraw(Canvas canvas)
{
вызывается каждый раз, когда вы делаете перекрас
invalidate();
ее вы проверите, если вы нажмете в прямоугольнике
if (rect2.contains(event.getX(),event.getY())) {
В твоем прикосновении просто поставь:
if(Rect.contains((int) event.getX(),(int) event.getY())){
я думаю, что это то, что вы просите, дайте мне знать, если нет
В onTouch
Вы можете сделать следующие вещи:
if(Rect.contains((int) event.getX(), (int) event.getY())) {
//do something
}
return super.onTouch(View v, MotionEvent event); //call super's method so that system would send event to you only once when you touched it.