单击图像后ImageView不会触发,但单击TextView后会触发

时间:2012-04-29 01:26:56

标签: android animation imageview rotation

我的xml文件中有一个ImageView,我希望在点击图像时旋转它。

我使用以下代码存档:

@Override
    public boolean onTouchEvent(MotionEvent event) {

        if (event.getAction() == MotionEvent.ACTION_DOWN) {
            img = (ImageView) findViewById(R.id.imageView1);
            Animation an = new RotateAnimation(0.0f, 360.0f, img.getWidth() / 2,
                    img.getHeight() / 2);
            an.reset();
            // Set the animation's parameters
            an.setDuration(1000); // duration in ms
            an.setRepeatCount(0); // -1 = infinite repeated
            an.setRepeatMode(Animation.REVERSE); // reverses each repeat
            an.setFillAfter(true); // keep rotation after animation
            //an.start();
            img.setAnimation(an);


        }
        return true;
    }

但问题是,当我按下图像时没有任何反应,图像将无法转动。但是,如果我点击图像,然后点击TextView,图像就会旋转。

这是随机的。

我做错了什么?我该如何解决这个问题?

感谢。

2 个答案:

答案 0 :(得分:0)

好吧,您似乎正在为整个活动调用onTouchEvent函数。因此,任何未被活动窗口内的视图“消耗”的触摸操作都将触发此功能。因此,触摸活动的某个位置(例如TextView会触发此图像旋转事件)是合乎逻辑的。

我最好猜测看到你的代码就是这样:最好为你的ImageView本身实现触摸/点击事件监听器 ,而不是你的整个活动。以下是执行此操作的代码段:

@Override
public void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    /*YOUR CUSTOM CODE AT ACTIVITY CREATION HERE*/

    /*here we implement a click listener for your ImageView*/
    final ImageView img = (ImageView)findViewById(R.id.imageView1);
    img.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View v){
            Animation an = new RotateAnimation(0.0f, 360.0f, img.getWidth() / 2, img.getHeight() / 2);
            an.reset();
            /* Set the animation's parameters*/
            an.setDuration(1000); // duration in ms
            an.setRepeatCount(0); // -1 = infinite repeated
            an.setRepeatMode(Animation.REVERSE); // reverses each repeat
            an.setFillAfter(true); // keep rotation after animation
            //an.start();
            img.setAnimation(an);
            img.invalidate(); //IMPORTANT: force image refresh

        }
    });
}

答案 1 :(得分:0)

我会通过epichoms推荐(使用OnClickListener)。此外,请确保您的ImageView可以获得点击次数:

final ImageView img = (ImageView)findViewById(R.id.imageView1);
img.setClickable(true);
img.setFocusable(true);
img.setOnClickListener(new View.OnClickListener(){
    ...

您也可以在XML布局中设置这些值:

android:clickable="true"
android:focusable="true"