2012-05-28 42 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