Я бы хотел, чтобы пользователь моего приложения Android мог перемещать содержимое одного TextView (A) в другое TextView (B). Они должны быть в состоянии сделать это, перетаскивая из A и отпуская над B. Я пытался добиться этого, используя событие onTouch, особенно ACTION_DOWN и ACTION_UP. Я думал, что это будет прямо вперед, но я столкнулся с несколькими проблемами.
Попытка Один
Сначала я попытался захватить представление, передаваемое каждому вызову обработчику событий. Это хорошо для ACTION_DOWN, поскольку A передается как View. Однако в событии ACTION_UP A также передается как представление, а не как B.
Попытка Два
Я фиксирую необработанные координаты события ACTION_UP (getRawX (), regRawY ()), а затем сравниваю эти координаты с левым, правым, верхним и нижним видами, в которые пользователь может «перетащить». К сожалению, координаты просмотра не связаны с координатами события.
Вопрос
Как реализовать это простое перетаскивание или какую ошибку я совершаю в двух попытках.
Код слушателя (вторая попытка)
OnTouchListener PlayerListener = new OnTouchListener () {
public boolean onTouch(View v, MotionEvent me) {
boolean mProcessed = false;
int mActionX = 0;
int mActionY = 0;
int mAction = me.getAction();
/* Determine gesture */
switch (mAction) {
case MotionEvent.ACTION_DOWN:
mProcessed = theTeams.touchPlayer(v,mAction);
break;
case MotionEvent.ACTION_UP:
mActionX = (int) me.getX();
mActionY = (int) me.getY();
mProcessed = theTeams.endTouch(v,mActionX,mActionY);
break;
Код обработчика (вторая попытка)
public boolean endTouch(View v, int dropX, int dropY) {
int mLeft = 0;
int mRight = 0;
int mTop = 0;
int mBottom = 0;
boolean mFound = false;
View mView = null;
/* Find control at that position */
mView = (TextView) findViewById(R.id.lCourt1ok);
mLeft = mView.getLeft();
mRight = mView.getRight();
mTop = mView.getTop();
mBottom = mView.getBottom();
if ((dropX >= mLeft) && (dropX <= mRight )
&& (dropY <= mBottom) && (dropY >= mTop))
mFound = true;
Постскриптум
Что ж, с попыткой два все в порядке, когда я вычитаю 50 из координаты RawY. Есть предложения почему?