У меня появилось всплывающее окно, созданное с помощью WindowManager
и с этими параметрами (как вы можете найти в других вопросах stackoverflow):
new WindowManager.LayoutParams(
ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.TYPE_PHONE,
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
PixelFormat.TRANSLUCENT
)
Мой вопрос похож на этот: Android: перетаскивание внешнего экрана, а также похоже на вот этот: Перетаскивание представления за пределы RelativeLayout
Разница в том, что WindowManager.LayoutParams
не включает никаких полей, поэтому невозможно использовать трюки с полями с относительным расположением и т. д.
Любая идея о том, как я могу перетащить представление за пределы экрана Android?
Спасибо
Изменить:
Как вы и просили, вот связанный код, который на данный момент выполняет перетаскивание.
view.setOnTouchListener(new OnTouchListener {
def onTouch(view: View, motionEvent: MotionEvent): Boolean = {
val x = motionEvent.getRawX.toInt
val y = motionEvent.getRawY.toInt
motionEvent.getAction & MotionEvent.ACTION_MASK match {
case MotionEvent.ACTION_DOWN =>
val params = view.getLayoutParams.asInstanceOf[WindowManager.LayoutParams]
xDelta = x - params.x
yDelta = y - params.y
case MotionEvent.ACTION_UP =>
draggingOn = false
case MotionEvent.ACTION_MOVE =>
if (draggingOn) {
val params = view.getLayoutParams.asInstanceOf[WindowManager.LayoutParams]
params.x = x - xDelta
params.y = y - yDelta
//view.setLayoutParams(params)
windowManager.updateViewLayout(view, params)
//log log "current x is: " + x
//log log "current y is: " + y
} else {
//nop
}
case _ =>
//case MotionEvent.ACTION_POINTER_DOWN =>
//case MotionEvent.ACTION_POINTER_UP =>
}
false
}
})
приведенный выше код написан на scala, но я думаю, вам не составит труда его прочитать