Android创建自定义ImageView,动画onClick

时间:2014-01-23 13:28:01

标签: android onclick imageview android-animation

为视图创建动画.. 来自developer.android.com:

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

我想知道我是否可以扩展ImageView,以便我创建的每个MyImageView在点击时都会有动画。

我还应该在MyImageView类之外为每个MyImageView设置一个不同的OnClickListener。

这可能吗?

3 个答案:

答案 0 :(得分:6)

尝试这种方法......

    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 :(得分: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);
                }
            });

答案 2 :(得分:1)

是的,你可以扩展ImageView并同时实现OnClickListener:

public class MyImageView extends ImageView implements View.OnClickListener {
}

请记得调用setOnClickListener(this),因为您的类负责在构造函数中管理视图的单击。当调用onClick时,请调用startAnimantion(yourAnimation)