TranslateAnimation中的OnClickListener

时间:2012-01-21 11:04:03

标签: android onclick translate-animation

我在Android中使用TranslateAnimation进行项目。我正在成功翻译图像,但我必须在图像上添加onClickListener。这意味着我在翻译期间点击了图像并获取了它们的值,但我在图像上获得了onClick操作。

我正在使用以下代码:

public class SampleGame extends Activity implements OnClickListener {

    int x10, x20, y10, y20;

    ImageView img;

    Button animation;
    Handler transHandler;
    RelativeLayout layout;
    Random rand;
    int mSpeedX, mSpeedY;
    int width, height;
    Thread thread;

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

        layout = (RelativeLayout) findViewById(R.id.layout);
        animation = (Button) findViewById(R.id.animation);

        animation.setOnClickListener(this);

        rand = new Random();

        width = getWindow().getWindowManager().getDefaultDisplay().getWidth() - 20;
        height = getWindow().getWindowManager().getDefaultDisplay().getHeight() - 70;

        x10 = width - rand.nextInt(width);
        y10 = height;

        x20 = width;
        y20 = height - rand.nextInt(height);

        thread = new Thread();

        img.setOnClickListener(this);

    }

    public void onPause() {
        super.onPause();
        thread = null;
    }

    @Override
    public void onClick(View v) {

        if (v.equals(img)) {
            Log.e("img clicked  :", "yaaaaaaaaa");
        }

        if (v.equals(animation)) {
            animation.setVisibility(View.INVISIBLE);
            callTransform();
        }
    }

    public void callTransform() {
        if (thread != null) {
            thread = new Thread() {
                public void run() {

//  Log.e("X1 value     :",String.valueOf(x10));    
//  Log.e("X2 value     :",String.valueOf(x20));    
//  Log.e("Y1 value     :",String.valueOf(y10));    
//  Log.e("Y2 value     :",String.valueOf(y20));    

                    transformAnimation(x10, x20, y10, y20, img, 4000);

                    try {
                        Thread.sleep(4000);
                    } catch (Exception e) {
                    }
//  Message msg=transHandler.obtainMessage();
//  transHandler.sendMessage(msg);
                    x10 = x20;
                    y10 = y20;

                    if (x10 == width) {
                        x20 = width - rand.nextInt(width);
                        y20 = 0;
                    } else if (y10 == 0) {
                        x20 = 0;
                        y20 = height - rand.nextInt(height);
                    } else if (x10 == 0) {
                        x20 = width - rand.nextInt(width);
                        y20 = height;
                    } else if (y10 == height) {
                        x20 = width;
                        y20 = height - rand.nextInt(height);
                    }

                    callTransform();
                }
            };
            thread.start();
        }
    }


    public void transformAnimation(int xFrom, int xTo, int yFrom, int yTo, final ImageView image, int time) {
        TranslateAnimation anim = new TranslateAnimation(xFrom, xTo, yFrom, yTo);
        anim.setDuration(time);
        image.setAnimation(anim);
    }

}

我也尝试了以下示例 - 2D-Tutorial Example

但在这方面我也没有点击图片的动作。

那么如何在翻译过程中对图像进行onClick操作?

有没有其他方法可以通过点击操作翻译图像?

先谢谢。

1 个答案:

答案 0 :(得分:0)

在动画期间,对象保持原始位置,但它会动画转换,因此您需要在动画期间手动更新布局参数