view = LayoutInflater.from(this).inflate(R.layout.widget2, null)
val overlayParam =
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY
} else {
WindowManager.LayoutParams.TYPE_PHONE
}
params = WindowManager.LayoutParams(
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.WRAP_CONTENT,
overlayParam,
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
PixelFormat.TRANSLUCENT)
manager = getSystemService(Context.WINDOW_SERVICE) as WindowManager
manager.addView(view, params)
view.getLocationOnScreen(location)
//location sometimes return incorrect location.
Я подсчитал, что пропало 35 процентов. например, правильное местоположение x: 100 - y: 100, верните x: 65 - y: 65. когда я перезапущу местоположение телефона, верните правильное и неисправное снова через некоторое время. Я искал несколько дней, но не мог найти почему. также эта проблема не возникает на каждом телефоне. Я пробовал 6 телефонов, и я получил эту ошибку на 2 телефонах
view.getLocationInWindow(location)//always return x:0 - y:0 and i need screen location
Примечание: выглядят одинаково, приложения не нуждаются в Settings.ACTION_MANAGE_OVERLAY_PERMISSION, и они отлично работают. но я не знаю, как они это сделали. Я пробовал разные способы здесь WindowManager.LayoutParams , но я не получил никаких результатов.