Android Перетащите и поменяйте позиции панели вкладок кнопок
Я разработал панель вкладок, используя список кнопок.
Теперь я хочу изменить расположение вкладки, как мы делаем в браузере Chrome при перетаскивании
Я придумал приведенный ниже код, с помощью которого я могу перейти сразу к следующей позиции.
Я не могу найти решение, которое, если я продолжу перетаскивать, должно снова поменяться с более чем одной позицией
Я использую переменную moveDone, чтобы ограничить касание после перемещения, но если я удаляю это, это вызывает некоторые другие проблемы.
Как улучшить это, чтобы заставить его перемещаться более чем на одну позицию в одном и том же перетаскивании или Есть ли лучший способ сделать это?
boolean moveDone;
float startXcoVar;
currentTabBtnVar.setOnTouchListener(new View.OnTouchListener()
{
@Override
public boolean onTouch(View view, final MotionEvent event)
{
case MotionEvent.ACTION_DOWN:
moveDone = false;
startXcoVar = event.getRawX();
case MotionEvent.ACTION_MOVE:
float stopXcoVar = event.getRawX();
float diffXcoVar = stopXcoVar - startXcoVar;
if (Math.abs(diffXcoVar) > currentTabBtnVar.getWidth())
{
int lastIdxVar = (int) currentTabBtnVar.getTag();
int nextIdxVar;
if (diffXcoVar < 0)
{
nextIdxVar = lastIdxVar - 1;
} else
{
nextIdxVar = lastIdxVar + 1;
}
float lastXcoVar = currentTabBtnVar.getX();
Button nextBtnIdxVar = tabBtnListVar.get(nextIdxVar);
currentTabBtnVar.animate()
.setDuration(500)
.x(nextBtnIdxVar.getX())
.start();
nextBtnIdxVar.animate()
.setDuration(500)
.x(lastXcoVar)
.start();
Collections.swap(tabBtnListVar, lastIdxVar, nextIdxVar);
currentTabBtnVar.setTag(nextIdxVar);
nextBtnIdxVar.setTag(lastIdxVar);
moveDone = true;
}
break;
case MotionEvent.ACTION_UP:
break;
}
return true;
}