Я хотел бы переместить два разных вида в свой макет, чтобы пользователь мог отображать его, как его пожелания.
До сих пор я использовал следующий код для обработки события касания:
this.viewEvent.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent event)
{
final int y = (int) event.getRawY();
RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) view.getLayoutParams();
switch (event.getAction() & MotionEvent.ACTION_MASK)
{
case MotionEvent.ACTION_DOWN:
element.setEventY(y - params.topMargin);
break;
case MotionEvent.ACTION_UP:
viewGroup.invalidate();
break;
case MotionEvent.ACTION_POINTER_DOWN:
case MotionEvent.ACTION_POINTER_UP:
break;
case MotionEvent.ACTION_MOVE:
params.topMargin = y - element.getEventY();
params.bottomMargin = screenHeight - view.getHeight() - params.topMargin;
// Avoid out of screen
if (params.topMargin < 0) return true;
// Apply changes
view.setLayoutParams(params);
break;
}
return true;
}
});
element
- это экземпляр пользовательского объекта для обработки позиции.
screenHeight
- высота экрана, заданная классом Display
.
Я могу перемещать элемент, но он моргает, когда я касаюсь его, и как только я опускаю палец вверх, вид просто исчезает. Я даже не могу его загрузить, он просто вышел из экрана.
Я сделал что-то неправильно?
Спасибо за помощь