新手问题。我在我的活动布局中使用 ImageView,并希望有与按钮类似的行为。我注意到 ImageView 已经生成了 onClick。它不做的是在触摸和非触摸时提供任何视觉反馈,这是我想添加的。
同样,我将需要长按处理;还不知道 ImageView 是否这样做。
我挖了一点,我看到 View 实现了 Runnable;当用户点击图像时调用 performClick,然后调用 ImageView.PerformClick,最后为所有侦听器调用 onClick(这是我的活动)。到 ImageView 处理 PerformClick 时,改变图像外观已经太晚了;在 onShowPress 时间我该怎么做?
还有一点需要注意:我已经看过(并尝试过)向 ImageView 添加了一个gestureDetector,但后来看来我需要重新实现 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;
}
}