Cómo dibujar un rectángulo en los botones usando un lienzo

Tengo 3 LinerLayouts dentro de un RelativeLayout, cada LinerLayouts contiene 9 botones. Ahora quiero dibujar un cuadro rectangular en la parte superior de los botones cada vez que toque los botones y ese cuadro rectangular debe deslizarse (mover) a cada botón como se mueve el dedo. Cualquier idea de cómo hacer esto .. gracias de antemano.

preguntado el 03 de mayo de 12 a las 10:05

1 Respuestas

protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);

    canvas.drawRect(mRect, new Paint());
}

private Rect mRect = new Rect();

private static final int WIDTH = 100;
private static final int HEIGHT = 100;

private void setRectPosition(int x, int y) {
    mRect.set(x, y, WIDTH, HEIGHT);
    invalidate();
}

@Override
public boolean onTouchEvent(MotionEvent event) {
    float x = event.getX();
    float y = event.getY();
    setRectPosition((int)x, (int)y);
    return super.onTouchEvent(event);
}

Creo que esto puede funcionar.

contestado el 03 de mayo de 12 a las 10:05

gracias por su respuesta Changwei Yao, pero si toco un botón (sin hacer clic) y sigo moviendo el dedo a los siguientes botones, el cuadro también debería moverse en consecuencia, al usar onClicklistener() no puedo hacer esto, quiero algo como onTouchEvent( ). En onTouchEvent podemos obtener x cualquier valor de coordenadas y, al usarlo podemos dibujar. pero aquí ¿cómo podemos? - VKJ

Debe establecer el ancho y la altura usted mismo. Implemente esto en su RelativeLayout o LinearLayout según su escenario: changwei yao

Todos los diseños de botones y revestimientos están en un diseño relativo y ese xml lo estoy inflando, entonces, ¿cómo puedo dibujar rectángulos en este caso? - VKJ

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.