2012-08-26 13 views
12

hay una manera de mostrar una ImageView progresivamente de arriba hacia abajo, así:Cómo mostrar una ImageView progresivamente de arriba a abajo

enter image description here

Lo siento por la animación de mierda.

+0

Usted quiere que el 'ImageView' para animar esa manera por sí misma? ¿O quieres hacerlo ya que el usuario hace algo? – Luksprog

+0

no estoy seguro de cuál es la diferencia, pero yo diría por sí solo – ibiza

Respuesta

19

No estoy muy familiarizado con las animaciones de Android, pero una forma (un poco hackosa) es envolver la imagen en un ClipDrawable y animar su valor level. Por ejemplo:

<ImageView 
     android:id="@+id/imageView1" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:src="@drawable/clip_source" /> 

Dónde clip_source es un dibujable:

<?xml version="1.0" encoding="utf-8"?> 
<clip xmlns:android="http://schemas.android.com/apk/res/android" 
    android:clipOrientation="vertical" 
    android:drawable="@drawable/your_own_drawable" 
    android:gravity="bottom" /> 

Luego, en código que tendría:

// a field in your class 
private int mLevel = 0; 

ImageView img = (ImageView) findViewById(R.id.imageView1); 
mImageDrawable = (ClipDrawable) img.getDrawable(); 
mImageDrawable.setLevel(0); 
mHandler.post(animateImage); 

El animateImage es un objeto Runnable:

private Runnable animateImage = new Runnable() { 

     @Override 
     public void run() { 
      doTheAnimation(); 
     } 
    }; 

y la doTheAnimation método:

private void doTheAnimation() { 
    mLevel += 1000; 
    mImageDrawable.setLevel(mLevel); 
    if (mLevel <= 10000) { 
     mHandler.postDelayed(animateImage, 50); 
    } else { 
     mHandler.removeCallbacks(animateImage); 
    } 
} 
+0

¡Interesante! ¿Qué es mHandler en ese caso? – ibiza

+0

@ibiza Es una instancia 'Handler',' Handler mHandler = new Handler(); '. – Luksprog

+0

Parece que no puedo hacer que este método funcione, siempre veo la imagen completa – ibiza

Cuestiones relacionadas