2012-07-01 65 views
1

我的目的是,在我的活動開始2秒後,ImageView(帶有圖像)應該飛入視圖。但是下面的代碼沒有任何反應。android flyin image查看一段時間

我在正確的方式還是我可以解決這個完全不同? 我有什麼需要改變,這有效嗎?

這裏是我的代碼的外觀:

public class Main extends Activity { 
    private ImageView _truck; 
    private Handler _flyInTruckHandler; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     setContentView(R.layout.main); 

     _truck = (ImageView) findViewById(R.id.main_garbageTruck); 
     _truck.setVisibility(View.INVISIBLE); 

     _flyInTruckHandler = new Handler() { 
      public void handleMessage(Message msg) { 
       _truck.setVisibility(View.VISIBLE); 
      } 
     }; 

     _flyInTruckHandler.postDelayed(new Runnable() { 
      public void run() { 
       new flyInTruck(); 
      } 
     }, 2000); 
    } 

    class flyInTruck extends TimerTask { 

     @Override 
     public void run() { 
      Animation anim = AnimationUtils.loadAnimation(      getApplicationContext(), R.anim.flyin); 
     findViewById(R.id.main_garbageTruck).setAnimation(anim); 
      _flyInTruckHandler.sendEmptyMessage(0); 
      anim.start(); 
     } 
    } 
} 

我使用的動畫就是從這裏開始:Fly In Animation for a GridView 但略有變化:

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android" 
android:shareInterpolator="true" > 
    <scale 
     android:duration="2500" 
     android:fillAfter="false" 
     android:fromXScale="0.0" 
     android:fromYScale="0.0" 
     android:interpolator="@android:anim/decelerate_interpolator" 
     android:pivotX="50%" 
     android:pivotY="50%" 
     android:toXScale="1.0" 
     android:toYScale="1.0" /> 
</set> 

回答

0

SOLUTION

好吧,我得到了它(這麼簡單,我之前沒有想過)。 我不需要額外的類「flyInTruck」。我可以這樣寫:

_flyInTruckHandler.postDelayed(new Runnable() { 
     public void run() { 
      Animation anim = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.flyin); 
      findViewById(R.id.main_garbageTruck).setAnimation(anim); 
      _flyInTruckHandler.sendEmptyMessage(0); 
      anim.start(); 
     } 
    }, 2000);