diff --git a/app/src/main/java/com/ray650128/floatwindowdemo/UnitExtension.kt b/app/src/main/java/com/ray650128/floatwindowdemo/UnitExtension.kt new file mode 100644 index 0000000..e22e316 --- /dev/null +++ b/app/src/main/java/com/ray650128/floatwindowdemo/UnitExtension.kt @@ -0,0 +1,9 @@ +package com.ray650128.floatwindowdemo + +import android.content.res.Resources + +val Int.dp: Int + get() = (this / Resources.getSystem().displayMetrics.density).toInt() + +val Int.px: Int + get() = (this * Resources.getSystem().displayMetrics.density).toInt() \ No newline at end of file diff --git a/app/src/main/java/com/ray650128/floatwindowdemo/service/WorkAccessibilityService.kt b/app/src/main/java/com/ray650128/floatwindowdemo/service/WorkAccessibilityService.kt index c896686..9be9150 100644 --- a/app/src/main/java/com/ray650128/floatwindowdemo/service/WorkAccessibilityService.kt +++ b/app/src/main/java/com/ray650128/floatwindowdemo/service/WorkAccessibilityService.kt @@ -16,6 +16,8 @@ import androidx.lifecycle.Lifecycle import androidx.lifecycle.LifecycleOwner import androidx.lifecycle.LifecycleRegistry import com.ray650128.floatwindowdemo.R +import com.ray650128.floatwindowdemo.dp +import com.ray650128.floatwindowdemo.px import com.ray650128.floatwindowdemo.utils.ItemViewTouchListener import com.ray650128.floatwindowdemo.utils.Utils.isNull import com.ray650128.floatwindowdemo.utils.ViewModelMain @@ -81,16 +83,19 @@ class WorkAccessibilityService : AccessibilityService(), LifecycleOwner { val layoutParam = WindowManager.LayoutParams() layoutParam.apply { //顯示的位置 - type = WindowManager.LayoutParams.TYPE_ACCESSIBILITY_OVERLAY + type = WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY //劉海屏延伸到劉海里面 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { layoutInDisplayCutoutMode = WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES } - flags = WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL or WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE + flags = WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL or + WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS or + WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH + //flags = WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL or WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE //flags = WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM or WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE - width = 260 - height = 60 - format = PixelFormat.TRANSPARENT + width = 145.px + height = 38.px + format = PixelFormat.RGBA_8888 } floatRootView = LayoutInflater.from(this).inflate(R.layout.activity_float_item, null) floatRootView?.findViewById(R.id.iv_close)?.setOnClickListener { diff --git a/app/src/main/java/com/ray650128/floatwindowdemo/utils/ItemViewTouchListener.kt b/app/src/main/java/com/ray650128/floatwindowdemo/utils/ItemViewTouchListener.kt index dbc5aba..b69c29a 100644 --- a/app/src/main/java/com/ray650128/floatwindowdemo/utils/ItemViewTouchListener.kt +++ b/app/src/main/java/com/ray650128/floatwindowdemo/utils/ItemViewTouchListener.kt @@ -1,5 +1,6 @@ package com.ray650128.floatwindowdemo.utils +import android.util.Log import android.view.MotionEvent import android.view.View import android.view.WindowManager @@ -15,8 +16,13 @@ class ItemViewTouchListener(val wl: WindowManager.LayoutParams, val windowManage private var x = 0 private var y = 0 override fun onTouch(view: View, motionEvent: MotionEvent): Boolean { + Log.d("com.kldp.floating.floatingtools", "MotionEvent: $motionEvent") when (motionEvent.action) { MotionEvent.ACTION_DOWN -> { + wl.flags = WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL or + WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS or + WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH + windowManager.updateViewLayout(view, wl) x = motionEvent.rawX.toInt() y = motionEvent.rawY.toInt() } @@ -34,6 +40,12 @@ class ItemViewTouchListener(val wl: WindowManager.LayoutParams, val windowManage //更新懸浮球控制元件位置 windowManager.updateViewLayout(view, wl) } + MotionEvent.ACTION_OUTSIDE -> { + wl.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE or + WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS or + WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH + windowManager.updateViewLayout(view, wl) + } else -> { } diff --git a/app/src/main/res/drawable/ic_baseline_cancel_24.xml b/app/src/main/res/drawable/ic_baseline_cancel_24.xml index 17c7567..5f49fcd 100644 --- a/app/src/main/res/drawable/ic_baseline_cancel_24.xml +++ b/app/src/main/res/drawable/ic_baseline_cancel_24.xml @@ -1,4 +1,11 @@ - - + + \ No newline at end of file diff --git a/app/src/main/res/drawable/realtime_clock_background.xml b/app/src/main/res/drawable/realtime_clock_background.xml index cb436e5..637c7b2 100644 --- a/app/src/main/res/drawable/realtime_clock_background.xml +++ b/app/src/main/res/drawable/realtime_clock_background.xml @@ -1,5 +1,6 @@ - - - + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_float_item.xml b/app/src/main/res/layout/activity_float_item.xml index 9648687..7aa9872 100644 --- a/app/src/main/res/layout/activity_float_item.xml +++ b/app/src/main/res/layout/activity_float_item.xml @@ -7,22 +7,22 @@