2012-05-28 40 views
1

我試圖啓動一個AlphaAnimation與此代碼的ImageView:錯誤用一個簡單的動畫

 ImageView view; 

     @Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.prueba); 

      view=(ImageView)findViewById(R.id.icon); 
      view.setAlpha(0x00);   
      view.setVisibility(View.VISIBLE); 
      view.setOnTouchListener(new OnTouchListener() { 
       @Override 
       public boolean onTouch(View v, MotionEvent e) { 
        switch (e.getAction()) { 
        case MotionEvent.ACTION_DOWN: 
         Log.i("Down v", "x:" + e.getX() + " y:" + e.getY()); 
         view.startAnimation(new AlphaAnimation(0x22, 0xFF)); 
    //     break; 
        case MotionEvent.ACTION_MOVE: 
         Log.i("Move", "x:" + e.getX() + " y:" + e.getY()); 
         break; 
        case MotionEvent.ACTION_UP: 
         Log.i("Up", "x:" + e.getX() + " y:" + e.getY()); 
         view.setAlpha(0x00); 
         break; 
        case MotionEvent.ACTION_OUTSIDE: 
         Log.i("Out", "x:" + e.getX() + " y:" + e.getY()); 
         break; 
        default: 
         Log.i("None", "nada"); 
        } 
        return false; 
       } 
      }); 
      view.setOnClickListener(new OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        Log.i("Click", "es un click"); 
       } 
      }); 
     } 

這個代碼應該是使被觸摸時ImageView的出現,但沒有happend。 任何解決方案?

+0

你在日誌中看到了什麼? – Ixx

回答

0

這是Android動畫的奇怪之處。

您使用setAlpha()到你使用AlphaAnimation設置的Alpha值的視圖的阿爾法爲0,同時設置爲1 似乎像它會工作。問題是他們在兩個不同的框架上工作。 setAlpha()與Honeycomb一起與ObjectAnimators一起引入,而AlphaAnimation自Cupcake(可能是API 1,但我忘記)已經出現。 ObjectAnimators改變了視圖的實際屬性,而AlphaAnimation只是改變了視圖的繪製方式(混淆了?:P)。

無論如何,AlphaAnimation不會像您認爲的那樣影響視圖的alpha屬性。它將視圖的動畫效果從0改爲1,但該屬性仍然爲0,因此它仍然不可見。

你這裏有兩種選擇。

保持setAlpha()它的方式和使用ObjectAnimators像這樣:

ObjectAnimator anim = ObjectAnimator.ofFloat(view, "alpha", 0f, 1f); 
anim.setDuration(1000); 
anim.start(); 

這是最簡單和首選的方法。它只適用於11級以上的API級別。如果需要的話,就去做吧。

另一種選擇是刪除setAlpha()並將視圖預製爲0,持續時間爲0。在啓動動畫之前,請致電setFillAfter(true)。這將確保它保持隱形狀態(默認情況下可能是這樣,但我不記得)。

我希望這是有道理的。

+0

謝謝。我的疑惑是轉移。它運作良好! – 3d5oN