【发布时间】:2011-11-12 02:43:29
【问题描述】:
在我们的应用程序中,我们处理按钮中的事件来记录数据。
所以最初当我将setOnLongClickListener() 和setOnClickListener() 与同一个按钮一起使用时,它对我们来说效果很好。
这意味着它将根据按钮的单击和 LongClick 调用此侦听器。现在,当我尝试将setOnTouchListener() 与setOnLongClickListener() 和setOnClickListener() 一起使用同一个按钮时,只有OnTouch 事件有效,rest onclick 和onLongclick 事件无效。
谁能告诉我为什么会发生这种情况,如果可能的话,用一个例子解释一下。
我使用的代码:
Button btnAdd=new Button(this)
btnAdd.setOnLongClickListener(this);
btnAdd.setOnClickListener(this);
btnAdd.setOnTouchClickListener(this);
public void onClick(View v)
{
//Statements;
}
public void onLongClick(View v)
{
//Statements;
}
public boolean onTouch(View v, MotionEvent e)
{
switch (e.getAction())
{
case MotionEvent.ACTION_DOWN:
{
//store the X value when the user's finger was pressed down
m_downXValue = e.getX();
break;
}
case MotionEvent.ACTION_UP:
{
//Get the X value when the user released his/her finger
float currentX = e.getX();
//MotionEvent x=MotionEvent.obtain((long) m_downXValue, SystemClock.uptimeMillis(), MotionEvent.ACTION_UP, 1, 1, 1, 1,0, 0, 0, 0, 0);
// going forwards: pushing stuff to the left
if (m_downXValue > currentX && currentX < 0)
{
ViewFlipper vf = (ViewFlipper) findViewById(R.id.flipview);
vf.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.slide_left));
vf.showNext();
}
// going backwards: pushing stuff to the right
if (m_downXValue < currentX && currentX > 100)
{
ViewFlipper vf = (ViewFlipper) findViewById(R.id.flipview);
vf.setAnimation(AnimationUtils.loadAnimation(this, R.anim.slide_right));
vf.showPrevious();
}
if (m_downXValue == currentX)
{
onClick(v);
}
break;
}
}
return true;
}
【问题讨论】:
-
嘿卢卡斯你能帮我解决这个问题吗
-
调用onTouch时是否考虑MotionEvent?
-
我刚刚编辑了onTouch事件的代码..我找到了调用onClick事件的线索..但是如何调用onLongClick事件..请帮助我
-
嘿 dyonisos..你看过编辑过的代码吗
标签: android touch-event onlongclicklistener