我在xml(和其他元素)中有这个图像:
<ImageView
android:clickable="true"
android:onClick="imageClick"
android:id="@+id/Decena0"
android:layout_width="120dp"
android:layout_height="120dp"
tools:ignore="ContentDescription" />
当我按下图像并且我不抬起手指时,我想运行下面两种方法: 第一:
public void imageClick(View view) {
//Implement image click function
Log.e("Example", "Imagen clickada");
}
第二
@Override
public boolean onTouchEvent(MotionEvent event) {
//Coordenadas
int x = (int) event.getX();
int y = (int) event.getY();
switch(event.getAction()) {
case MotionEvent.ACTION_DOWN:
break;
case MotionEvent.ACTION_MOVE;
break;
case MotionEvent.ACTION_UP:
break;
}
return true;
}
我怎么做?因为如果我按下图像并抬起我的手指在图像上,只运行第一种方法(我完全理解),但如果我按下图像,我不抬起手指移动我的手指,不运行任何方法。如果我点击没有图像的其他地方,第二种方法效果很好。
全部谢谢
答案 0 :(得分:1)
答案 1 :(得分:0)
你可以使用public abstract boolean onLongClick (View v)
单击并保持视图时调用。
参数:
v已单击并保持的视图。
返回:
如果回调消耗了长按,则返回true,否则返回false。
或类似的东西
@Override
public boolean onTouchEvent(MotionEvent e, MapView map) { //this is for map on touch
// TODO Auto-generated method stub
if (e.getAction() == MotionEvent.ACTION_DOWN) {
start = e.getEventTime();
int x = (int) e.getX();
int y = (int) e.getY();
touchedPoint = map.getProjection().fromPixels(x, y);
}
if (e.getAction() == MotionEvent.ACTION_UP) {
stop = e.getEventTime();
}
if (stop - start > 2000) { //your code on long touch, in this case more than 2 sec
}
});