Java Android OnTouchListener干扰OnClickListener
我有一个带有函数的活动,可以在其中创建一个新的Java Android OnTouchListener干扰OnClickListener,java,android,onclicklistener,ontouchlistener,Java,Android,Onclicklistener,Ontouchlistener,我有一个带有函数的活动,可以在其中创建一个新的ImageView。 我想移动ImageView,因此实现了一个新的OnTouchListener。这很好,但我还想添加一个长ClickListener,这是我的问题: 当我移动图像视图时,我的LongClickListener会启动一次 我能做些什么来解决这个问题 public ImageView neuesDefaultBild(int x, int y, int id){ ImageView iv=new ImageView(this
ImageView
。
我想移动ImageView
,因此实现了一个新的OnTouchListener
。这很好,但我还想添加一个长ClickListener
,这是我的问题:
当我移动图像视图时,我的LongClickListener
会启动一次
我能做些什么来解决这个问题
public ImageView neuesDefaultBild(int x, int y, int id){
ImageView iv=new ImageView(this);
iv.setImageResource(R.drawable.usericon);
iv.setId(id);
iv.setX(x);
iv.setY(y);
LayoutParams params = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
params.width=180;
params.height=130;
iv.setLayoutParams(params);
iv.setLongClickable(true);
iv.setFocusable(true);
iv.setFocusableInTouchMode(true);
iv.setEnabled(true);
iv.setOnTouchListener(new View.OnTouchListener(){
public boolean onTouch(View v, MotionEvent event) {
boolean defaultResult = v.onTouchEvent(event);
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
break;
case MotionEvent.ACTION_MOVE:
//Get the coords from the Event
int x_cord = (int) event.getRawX();
int y_cord = (int) event.getRawY();
v.setX(x_cord-90);
v.setY(y_cord-130);
return true;
default:
return defaultResult;
}
return false;
}
});
iv.setOnLongClickListener(new View.OnLongClickListener() {
public boolean onLongClick(View v) {
Toast.makeText(getApplicationContext(), "Long!!", Toast.LENGTH_SHORT).show();
return false;
}
});
return iv;
}
OnclickListener
可以使用OnTouchListener
本身进行设置
只要插一面旗子就行了
private int boolean onClick;
switch (event.getAction())
{
case MotionEvent. ACTION_DOWN:
{
onClick = true;
break ;
}
case MotionEvent. ACTION_MOVE:
{
onClick = false;
break ;
}
case MotionEvent. ACTION_UP:
{
if(onClick)
{
//Call your own click listener
}
break;
}
}
读这个