1

我为图像制作了一个简单的动画,并在图像上设置了事件 OnClick 来祝酒。问题是我让图像开始在 onCreate 上制作动画,并且我设置了要单击的图像并触发 toast 但问题是图像不可点击,但是如果我按下原始位置图像,吐司开始(onClick没有随着动画移动)

谢谢你的帮助

这是 anim 文件夹中的动画代码 (translate.xml)

<?xml version="1.0" encoding="utf-8"?>
    <set xmlns:android="http://schemas.android.com/apk/res/android"
      android:interpolator="@android:anim/linear_interpolator" >
    <translate
        android:duration="1500"
        android:fromXDelta="-100%p"
        android:repeatCount="0"
        android:repeatMode="reverse"
        android:toXDelta="0" />

    </set>

这是活动类

package com.example.animatest;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.ImageView;
import android.widget.Toast;

public class MainActivity extends Activity {

private ImageView image01;

private long aefe;
private ImageView image1;
private ImageView image2;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    image01 = (ImageView) findViewById(R.id.imageView1);

    final Animation animTranslate1 = AnimationUtils.loadAnimation(this,
            R.anim.translate);

    image01.startAnimation(animTranslate1);

    image01.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View view) {

            Toast.makeText(MainActivity.this, "hello", Toast.LENGTH_SHORT)
                    .show();

        }
    });

}

}
4

1 回答 1

3

阅读 Android 动画系统的文档(文档链接),特别是 View Animation 和 Property Animation 之间的区别。以下是来自 View Animation 文档的引用:

注意:无论您的动画如何移动或调整大小,保存动画的 View 的边界都不会自动调整以适应它。

本质上,当使用 View Animation 时,视图本身永远不会被翻译,只有它被绘制的位置。对象保持在其原始坐标,这就是为什么您必须点击旧位置才能获得事件。这是 View Animation 的一个已知限制,也是在 Android 3.0+ 中引入 Property Animation 的原因之一

于 2013-02-07T21:23:32.640 回答