2012-08-26 13 views

Antwort

19

Ich bin nicht sehr vertraut mit Android-Animationen, aber eine (ein wenig hackish) Weg ist das Bild in eine ClipDrawable wrap und animieren level Wert. Zum Beispiel:

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

Wo clip_source ist ein ziehbar:

<?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" /> 

in Code Dann würden Sie haben:

// 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); 

Die animateImage ist ein Runnable Objekt:

private Runnable animateImage = new Runnable() { 

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

und die doTheAnimation Methode:

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

Interessant! Was ist mHandler in diesem Fall? – ibiza

+0

@ibiza Es ist eine "Handler" -Instanz, "Handler mHandler = new Handler();'. – Luksprog

+0

Ich kann nicht in der Lage sein, diese Methode funktionieren zu lassen, sehe ich immer das ganze Bild – ibiza

Verwandte Themen