namelist = {} param1 = {} floattable = {} function newfloat(name,func1,func2) if _ENV[name]~=nil then floattable[name] = 1 local function invoke2() window:addView(_ENV[name], param1[name]) end local runnable = luajava.getRunnable(invoke2) local handler = luajava.getHandler() handler:post(runnable) return 0 end floattable[name] = 1 local func = 开关(name.."k",func1,func2) local function invoke(name,func1,func2) if not name then name = "未设置" end nameid = name..guid() local ok local RawX, RawY, x, y nameid1 = name..guid() if not namelist[name] then namelist[name] = false end if namelist[name] ~= false then clclcl = "#aa269843" else clclcl = "#aa161616" end param1[name] = getLayoutParams2() _ENV[name] = luajava.loadlayout( { LinearLayout, layout_width = "wrap_content", id = luajava.newId(nameid1), layout_height = "wrap_content", background = luajava.loadlayout { GradientDrawable, color = clclcl, cornerRadius = 10 }, onClick = function() if namelist[name] == false then _ENV[name]:setBackground(luajava.loadlayout { GradientDrawable, color = "#aa269843", cornerRadius = 10 }) namelist[name] = true elseif namelist[name] == true then _ENV[name]:setBackground(luajava.loadlayout { GradientDrawable, color = "#aa161616", cornerRadius = 10 }) namelist[name] = false end luajava.newThread(function() pcall(func) end):start() end, onTouch = function(v, event) local Action = event:getAction() if Action == MotionEvent.ACTION_DOWN then isMove = false RawX = event:getRawX() RawY = event:getRawY() x = param1[name].x y = param1[name].y elseif Action == MotionEvent.ACTION_MOVE then isMove = true param1[name].x = tonumber(x) + (event:getRawX() - RawX) param1[name].y = tonumber(y) + (event:getRawY() - RawY) window:updateViewLayout(_ENV[name], param1[name]) end end, { TextView, text = name, gravity = "center", layout_width = "wrap_content", layout_height = "wrap_content", padding={'10dp','5dp','10dp','5dp'} } }) local function invoke2() window:addView(_ENV[name], param1[name]) end local runnable = luajava.getRunnable(invoke2) local handler = luajava.getHandler() handler:post(runnable) end invoke(name,func1,func2) end function rmvfloat(name) floattable[name] = 0 local function invoke2() window:removeView(_ENV[name]) end local runnable = luajava.getRunnable(invoke2) local handler = luajava.getHandler() handler:post(runnable) end paramt = {} titletable = {} corb = true function getLayoutParams2() local prm = luajava.new(WindowManager.LayoutParams) layoutParams1 = prm if (Build.VERSION.SDK_INT >= 26) then -- 设置悬浮窗方式 layoutParams1.type = prm.TYPE_APPLICATION_OVERLAY else layoutParams1.type = prm.TYPE_PHONE end layoutParams1.format = PixelFormat.RGBA_8888 -- 设置背景 layoutParams1.flags = prm.FLAG_NOT_FOCUSABLE -- 焦点设置Finish layoutParams1.gravity = Gravity.CENTER -- 重力设置 layoutParams1.width = prm.WRAP_CONTENT -- 布局宽度 layoutParams1.height = prm.WRAP_CONTENT -- 布局高度 return layoutParams1 end namelist = {} param1 = {} floattable = {} function newfloat(name,func1,func2) if _ENV[name]~=nil then floattable[name] = 1 local function invoke2() window:addView(_ENV[name], param1[name]) end local runnable = luajava.getRunnable(invoke2) local handler = luajava.getHandler() handler:post(runnable) return 0 end floattable[name] = 1 local func = 开关(name.."k",func1,func2) local function invoke(name,func1,func2) if not name then name = "未设置" end nameid = name..guid() local ok local RawX, RawY, x, y nameid1 = name..guid() if not namelist[name] then namelist[name] = false end if namelist[name] ~= false then clclcl = "#aa269843" else clclcl = "#aa161616" end param1[name] = getLayoutParams2() _ENV[name] = luajava.loadlayout( { LinearLayout, layout_width = "wrap_content", id = luajava.newId(nameid1), layout_height = "wrap_content", background = luajava.loadlayout { GradientDrawable, color = clclcl, cornerRadius = 10 }, onClick = function() if namelist[name] == false then _ENV[name]:setBackground(luajava.loadlayout { GradientDrawable, color = "#aa269843", cornerRadius = 10 }) namelist[name] = true elseif namelist[name] == true then _ENV[name]:setBackground(luajava.loadlayout { GradientDrawable, color = "#aa161616", cornerRadius = 10 }) namelist[name] = false end luajava.newThread(function() pcall(func) end):start() end, onTouch = function(v, event) local Action = event:getAction() if Action == MotionEvent.ACTION_DOWN then isMove = false RawX = event:getRawX() RawY = event:getRawY() x = param1[name].x y = param1[name].y elseif Action == MotionEvent.ACTION_MOVE then isMove = true param1[name].x = tonumber(x) + (event:getRawX() - RawX) param1[name].y = tonumber(y) + (event:getRawY() - RawY) window:updateViewLayout(_ENV[name], param1[name]) end end, { TextView, text = name, gravity = "center", layout_width = "wrap_content", layout_height = "wrap_content", padding={'10dp','5dp','10dp','5dp'} } }) local function invoke2() window:addView(_ENV[name], param1[name]) end local runnable = luajava.getRunnable(invoke2) local handler = luajava.getHandler() handler:post(runnable) end invoke(name,func1,func2) end function rmvfloat(name) floattable[name] = 0 local function invoke2() window:removeView(_ENV[name]) end local runnable = luajava.getRunnable(invoke2) local handler = luajava.getHandler() handler:post(runnable) end