Quiero ser capaz de mover PopupWindow en el toque de arrastre. No deseo que la interfaz de usuario se actualice con el lanzamiento del toque. Quiero que PopupWindow siga mi toque.Android: ¿Cómo arrastrar (mover) PopupWindow?
Esto es algo de lo que estoy haciendo:
mView = mLayoutInflater.inflate(R.layout.popup,
null);
mPopupWindow = new PopupWindow(mView,
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, false);
mPopupWindow.showAtLocation(parentView, Gravity.CENTER, -5, 30);
mView.setOnTouchListener(new OnTouchListener() {
private int dx = 0;
private int dy = 0;
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
switch (motionEvent.getAction()) {
case MotionEvent.ACTION_DOWN:
dx = (int) motionEvent.getX();
dy = (int) motionEvent.getY();
break;
case MotionEvent.ACTION_MOVE:
int x = (int) motionEvent.getX();
int y = (int) motionEvent.getY();
int left = (x - dx);
int top = (y - dy);
Log.d("test", "x: " + left + " y: " + top);
mPopupWindow.update(left, top, -1, -1);
break;
}
return true;
}
});
Lo que sucede es, como me arrastre la ventana emergente, que parpadea ida y vuelta en la ubicación original y donde mi dedo es.
parpadeo Logcat Resultado:
x: -44 y: 4
x: -43 y: 37
x: -46 y: 4
x: -46 y: 38
x: -48 y: 4
x: -47 y: 38
x: -50 y: 4
Pero si quito (comentar) "mPopupWindow.update (izquierda, arriba, -1, -1);", devuelve resultado correcto. (Pero, obviamente, la interfaz de usuario no actualizar):
x: -33 y: 0
x: -37 y: 0
x: -41 y: 0
x: -43 y: 3
x: -46 y: 3
x: -50 y: 3
x: -54 y: 4
x: -57 y: 4
¿cómo iba a mover un PopupWindow correctamente?