1

画像の簡単なアニメーションを作成し、画像に OnClick イベントを設定してトーストを作成しました。問題は、onCreateで画像のアニメーションを開始し、画像をクリックしてトーストを起動するように設定したことですが、問題は画像をクリックできないことですが、元の位置を押すと画像、トーストが開始されます (onClick はアニメーションで動きません)

あなたの助けをthx

これは、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アニメーションシステムのドキュメント(ドキュメントリンク)、特にビューアニメーションとプロパティアニメーションの違いをお読みください。ViewAnimationドキュメントからの引用は次のとおりです。

注:アニメーションがどのように移動またはサイズ変更されるかに関係なく、アニメーションを保持するビューの境界は、それに対応するように自動的に調整されません。

基本的に、ビューアニメーションを使用する場合、ビュー自体は変換されず、描画された場所のみが変換されます。オブジェクトは元の座標のままです。そのため、イベントを取得するには古い場所をタップする必要があります。これはビューアニメーションの既知の制限であり、Android3.0以降でプロパティアニメーションが導入された理由の1つです。

于 2013-02-07T21:23:32.640 に答える