Надеюсь, что каждый может разобраться после просмотра этого кода. Что происходит, когда происходит длительное нажатие, прослушиватель сенсорных экранов устанавливается для прослушивателя без прослушивания, а при повторном касании представления прослушиватель без прослушивания устанавливает прослушиватель сенсорного экрана для предыдущего слушателя.
ем приложении мы обрабатываем события в кнопке для записи данных.
Поэтому изначально, когда я используюsetOnLongClickListener()
а такжеsetOnClickListener()
вместе с одной и той же кнопкой он отлично работает для нас.
Это означает, что он будет вызывать эту базу слушателей по нажатию кнопки и LongClick кнопки. Теперь, когда я пытался использоватьsetOnTouchListener()
с той же кнопкой вместе сsetOnLongClickListener()
а такжеsetOnClickListener()
тогда работает только событие OnTouch, остальные 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;
}