初心者の質問です。アクティビティ レイアウトで ImageView を使用していますが、ボタンと同様の動作が必要です。ImageView が既に onClick を生成していることに気付きました。それがしないのは、私が追加したいタッチとアンタッチで視覚的なフィードバックを提供することです。
同様に、長押しの処理が必要になります。ImageView がそれを行うかどうかはまだわかりません。
少し掘り下げてみたところ、View が Runnable を実装していることがわかりました。ユーザーが画像をタップすると、何かが performClick を呼び出し、次に ImageView.PerformClick を呼び出し、最終的にすべてのリスナー (これが私のアクティビティ) に対して onClick を呼び出します。ImageView が PerformClick を処理する頃には、画像の外観を変更するには遅すぎます。onShowPress 時にどうすればいいですか?
もう1つの注意:gestureDetectorをImageViewに追加することを検討しました(そして試しました)が、onClick処理を再実装する必要があるようです-とにかく、アクティビティはonClickの受信を停止しました.
私がやりたいことを行うには、まったく別の方法があるかもしれません。
ありがとう。
編集:タッチアクションを監視するためのテストコード:package com.example.mockup;
import android.content.Context;
import android.util.AttributeSet;
import android.view.DragEvent;
import android.view.MotionEvent;
import android.view.View;
import android.widget.ImageButton;
public class ImageGestureButton extends ImageButton
implements View.OnTouchListener, View.OnClickListener, View.OnDragListener,
View.OnLongClickListener
{
public ImageGestureButton (Context context, AttributeSet attrs)
{
super(context, attrs);
setOnTouchListener (this);
setOnClickListener (this);
setOnLongClickListener (this);
setOnDragListener (this);
setLongClickable (true);
}
public boolean onTouch (View v, MotionEvent e)
{
System.out.println ("onTouch " + e.getAction());
return false;
}
public void onClick (View v)
{
System.out.println ("onClick");
}
public boolean onDrag (View v, DragEvent e)
{
System.out.println ("onDrag");
return false;
}
public boolean onLongClick (View v)
{
System.out.println ("onLongClick");
return false;
}
}