2014-01-23 22 views
1

要爲視圖中創建一個動畫自定義的ImageView .. 從developer.android.com:的Android創建動畫的onClick

ImageView spaceshipImage = (ImageView) findViewById(R.id.spaceshipImage); 
Animation hyperspaceJumpAnimation = AnimationUtils.loadAnimation(this, R.anim.hyperspace_jump); 
spaceshipImage.startAnimation(hyperspaceJumpAnimation); 

我想如果我能擴大的ImageView所以每次我創建MyImageView將有點擊時的動畫。

我還應該爲MyImageView類以外的每個MyImageView設置一個不同的OnClickListener。

這可能嗎?

回答

5

試試這個辦法...

public class MyImageView extends ImageView implements 
      View.OnClickListener { 

     private View.OnClickListener clickListener; 

     public MyImageView(Context context, AttributeSet attrs, int defStyle) { 
      super(context, attrs, defStyle); 
      setOnClickListener(this); 
     } 

     public MyImageView(Context context, AttributeSet attrs) { 
      super(context, attrs); 
      setOnClickListener(this); 
     } 

     public MyImageView(Context context) { 
      super(context); 
      setOnClickListener(this); 
     } 

     @Override 
     public void setOnClickListener(OnClickListener l) { 
      if (l == this) { 
       super.setOnClickListener(l); 
      } else { 
       clickListener = l; 
      } 
     } 

     @Override 
     public void onClick(View v) { 
      // start the Animation... 
      // handle click event yourself and pass the event to supplied 
      // listener also... 
      if (clickListener != null) { 
       clickListener.onClick(this); 
      } 
     } 
    } 
1

是的,你可以擴展的ImageView,並在同一時間實現OnClickListener:

public class MyImageView extends ImageView implements View.OnClickListener { 
} 

記得打電話setOnClickListener(this),因爲你的類負責管理視圖的點擊,並在構造(或多個)。當onClick被調用時,你可以撥打startAnimantion(yourAnimation)

+0

我可以設置這個觀點後來之外的第二onClickListener? –

2
try to use these code:::--->  


    ImageView spaceshipImage = (ImageView) findViewById(R.id.spaceshipImage); 
    spaceshipImage.setOnClickListener(new OnClickListener() { 

       @Override 
       public void onClick(View v) { 
        // TODO Auto-generated method stub 
        Animation hyperspaceJumpAnimation = AnimationUtils.loadAnimation(this, R.anim.hyperspace_jump); 
        spaceshipImage.startAnimation(hyperspaceJumpAnimation); 
       } 
      }); 
+0

謝謝,但我問我是否可以擴展此ImageView始終有動畫onClick。 –

+0

你滿意然後提升我。 – DaxeshKhatri