¿Cómo mover correctamente una vista?

¿Puede alguien explicarle a un noob la forma correcta de animar una vista para que su área táctil y la imagen realmente se muevan juntas?

He leído muchas publicaciones, preguntas y tutoriales, pero ninguno explica qué mueve el diseño y qué mueve la imagen de modo que pueda animar una vista y luego dejarla en su nueva posición.

Este es un método de ejemplo con el que estoy trabajando, probando muchas combinaciones diferentes sin éxito. La vista está en el padre RelativeLayout. Es un menú de iconos que se puede tocar, y está animado con un recurso xml en un clic para deslizarse fuera de la pantalla dejando solo una pequeña pestaña que muestra, donde debe permanecer hasta que se vuelva a hacer clic.

<code>public void RetractTools (View v){      
    final ImageView finalImage1 = (ImageView) findViewById(R.id.paintsView);
    Animation slideout = AnimationUtils.loadAnimation(this, R.anim.slideout_tools);
    slideout.setFillAfter(true);
    slideout.setAnimationListener(new AnimationListener() {
        @Override
        public void onAnimationEnd(Animation animation) {
            finalImage1.setEnabled(true);
            optionMenu.showing = false;
            optionMenu.inMotion = false;
            finalImage1.layout(1258, 668, 1697, 752);
            finalImage1.setRight(1280);
            finalImage1.invalidate();
        }

        @Override
        public void onAnimationRepeat(Animation arg0) {
        }

        @Override
        public void onAnimationStart(Animation arg0) {
            finalImage1.setEnabled(false);
        }
    });

    optionMenu.inMotion = true;
    v.startAnimation(slideout);
 }// End RetractMenu
</code>

No importa lo que intente, me encuentro con problemas. setFillAfter no hace nada cuando se establece en el archivo xml. Establecido programáticamente, deja la imagen en el lugar correcto pero los controles táctiles permanecen donde estaba el menú. He intentado setLeft y setRight que aparentemente solo mueven la imagen, no la posición de vista, y todo tipo de opciones de diseño diferentes, y rellenan y no rellenan e invalidan y no, pero no pueden resolverlo. ¡Claramente no entiendo los mecanismos subyacentes necesarios para posicionar y renderizar una vista! :RE

Gracias.

EDITAR: Solución

Para cualquier persona que tenga problemas similares, así es como he encontrado que funciona con diseños relativos. Crea un objeto LayoutParams con el tamaño especificado y luego puede asignarle posiciones. p.ej.

<code>    final RelativeLayout.LayoutParams position = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);           
    position.leftMargin = 440;
</code>

Entonces asigna eso a tu vista

<code>    myView.setLayoutParams(position);
</code>

Entonces, en resumen, utiliza un objeto LayoutParams como una interfaz para la posición de su vista, en lugar de acceder a las coordenadas de la vista directamente como asumí.

Respuestas a la pregunta(1)

Su respuesta a la pregunta