У меня есть представление в линейном разметке.При длительном нажатии вид будет удален из этого линейного макета и помещен в то же положение экрана в относительную компоновку.Таким образом я могу перемещать вид по экрану пальцем.
это почти работает: у меня работает событие longpress (удалите вид и поместите вид в относительное расположение).после этого я добавляю ontoucheventlistener, чтобы мой взгляд оставался с моим пальцем, , но только на секунду .в последний раз при срабатывании touchevent я получил "MotionEvent.ACTION_CANCEL".Когда я убираю палец и снова помещаю палец в вид, который я могу использовать для движения, то он будет сохраняться, пока я не уберу палец.
Я думаю, что моя проблема в том, что вид этоудален на короткое время, в это время я получаю «MotionEvent.ACTION_CANCEL», однако, есть еще некоторые необработанные события, они будут запущены первыми.Вот почему я получил около 1 секунды все еще ontouchevents.(это всего лишь мысль).
кто-то знает, как я могу сохранить атташевент или позволить ему активировать, не заменяя мой палец?
Отредактировано
Моя мысль не верна.Когда я делаю длинное нажатие, вид остается с моим пальцем, однако я теряю вид, как только перехожу на 50-100 пикселей в любом направлении.
Отредактировано 2
код longpress представления внутри linearlayout
view.setOnLongClickListener(new OnLongClickListener() {
public boolean onLongClick(View v) {
_linearLayout.removeView(v);
moveView(v);
return true;
}
});
moveView будет вызываться longpress
private void moveView(View v) {
_relativeLayout.addView(v);
v.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
switch(event.getAction()) {
case MotionEvent.ACTION_MOVE:
int x = (int) event.getRawX();
int y = (int) event.getRawY();
v.layout(x, y, x + v.getWidth(), y + v.getHeight());
break;
case MotionEvent.ACTION_UP:
_relativeLayout.removeView(v);
v = null;
break;
case MotionEvent.ACTION_CANCEL:
//it comes here when i move my finger more then 100 pixels
break;
}
return true;
}
});
}
Конечно, это соответствующая часть кода, а не оригинальный код