Мне удалось создать этот код для вставки или выключения кнопки в списке. Он работает нормально, если мой жест на экране телефона является горизонтальным. Но если мой жест также диагонален ... он не вызывает показ/скрытие кнопки. Жест горизонтальный (слева направо или справа налево), но он может быть немного диагональным. Что делать ?Android onTouch event
класс шоу реализует OnTouchListener {
@Override
public boolean onTouch(View v, MotionEvent event)
{
int action = event.getAction();
switch (action)
{
case MotionEvent.ACTION_DOWN:
action_down_x = (int) event.getX();
break;
case MotionEvent.ACTION_MOVE:
action_up_x = (int) event.getX();
difference = action_down_x - action_up_x;
break;
case MotionEvent.ACTION_UP:
if (difference < -30)
{
Animation slide_up = AnimationUtils.loadAnimation(mContext, R.anim.slide_stanga);
LinearLayout right = (LinearLayout) v.findViewById(R.id.dreapta);
if (right.isShown())
{
right.startAnimation(slide_up);
right.setVisibility(View.GONE);
final View x = v;
Handler handler = new Handler();
handler.postDelayed(new Runnable()
{
public void run()
{
LinearLayout left = (LinearLayout) x.findViewById(R.id.stanga);
left.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT,(float) 4.0));
}
}, 500);
}
}
if (difference > 30)
{
Animation slide_up = AnimationUtils.loadAnimation(mContext, R.anim.slide_dreapta);
LinearLayout right = (LinearLayout) v.findViewById(R.id.dreapta);
if (!right.isShown())
{
LinearLayout left = (LinearLayout) v.findViewById(R.id.stanga);
left.setLayoutParams(new LinearLayout.LayoutParams(0, LayoutParams.WRAP_CONTENT,(float) 3.0));
right.setLayoutParams(new LinearLayout.LayoutParams(0, LayoutParams.WRAP_CONTENT,(float) 1.0));
right.startAnimation(slide_up);
right.setVisibility(View.VISIBLE);
}
}
action_down_x = 0;
action_up_x = 0;
difference = 0;
break;
}
return true;
}
}
Спасибо!
ok. я попробую это. благодаря – Huliganul