¿Cómo puedo mover programáticamente una vista en Android?

Aquí está la estructura de diseño (XML).


     
           <ScrollView>
            ... ...
           </ScrollView>
     
     ...(Botones)...

Estoy tratando de hacer que el ScrollView se desplace lento (como una especie de control deslizante) para que se desplace, por ejemplo, un px que espera 10 milisegundos y se desplace otro px ... hasta que se haya desplazado 100 px. Si llamo a scrollBy (100,0) (por ejemplo), simplemente cambia a la posición especificada, pero no hay ningún movimiento visible en el medio.

public void move(int x, int y)
{
    Activity context = (Activity)getContext();

    context.runOnUiThread(new Runnable() 
    {   
        @Override
        public void run() 
        {
            for(int i=0;i<100;i++)
            {
                scrollBy(-1,0); try{ Thread.sleep(20); } catch(Exception e){}
            }

        }
    });
}

He estado probando Threads (como este) en ScrollView (lo extendí) y Activity. Si hay alguna forma de hacer que se mueva lentamente, me alegraría saberlo. ¡Gracias!

preguntado el 27 de agosto de 11 a las 23:08

2 Respuestas

Puede usar la clase Timer y TimerTask y actualizar el método scrollTo en 1 hasta llegar a 100.

https://github.com/blessenm/SlideshowDemo

Lo anterior es un ejemplo de control deslizante continuo que muestra el uso de los métodos anteriores.

Respondido 28 ago 11, 10:08

¡Eso funciona perfecto! ¡Muchas gracias! No sabía cómo trabajar con Timer. ¡Gran trabajo! - Walter isler

Bueno, es bueno saber que ayudó. Establezca la respuesta para que la pregunta se elimine de la lista sin respuesta. - bendición

¿Has probado usar smoothScrollBy?

Respondido 28 ago 11, 05:08

Sí, lo intenté pero no funcionó de la manera correcta (solo vertical). Echaré un vistazo más de cerca a la segunda posibilidad. Muchas gracias hasta ahora. - Walter isler

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