欢迎光临散文网 会员登陆 & 注册

andlua教学第三期(悬浮窗)

2023-02-12 15:54 作者:北念官  | 我要投稿

看主页简介加群

--悬浮窗代码

import "xfc"

import "xfq"

import "android.content.Context"

import "android.provider.Settings"

import "android.animation.ObjectAnimator"

import "android.animation.ArgbEvaluator"

import "android.animation.ValueAnimator"

import "android.graphics.Color"

import "android.content.Intent"

import "android.net.Uri"

import "android.graphics.PixelFormat"


wmManager=activity.getSystemService(Context.WINDOW_SERVICE) --获取窗口管理器

HasFocus=false --是否有焦点

wmParams =WindowManager.LayoutParams() --对象

if tonumber(Build.VERSION.SDK) >= 26 then

wmParams.type =WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY--安卓8以上悬浮窗打开方式

else

wmParams.type =WindowManager.LayoutParams.TYPE_SYSTEM_ALERT--安卓8以下的悬浮窗打开方式

end

wmParams.format =PixelFormat.RGBA_8888 --设置背景

wmParams.flags=WindowManager.LayoutParams().FLAG_NOT_FOCUSABLE--焦点设置

wmParams.gravity = Gravity.LEFT| Gravity.TOP --重力设置

wmParams.x = activity.getWidth()/6

wmParams.y = activity.getHeight()/5

wmParams.width =WindowManager.LayoutParams.WRAP_CONTENT

wmParams.height =WindowManager.LayoutParams.WRAP_CONTENT

if Build.VERSION.SDK_INT >= Build.VERSION_CODES.M&&!Settings.canDrawOverlays(this) then

print("没有悬浮窗权限悬,请打开权限")

intent=Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION)

intent.setData(Uri.parse("package:" .. activity.getPackageName()));

activity.startActivityForResult(intent, 100)

os.exit()

else


悬浮球=loadlayout(xfq)--悬浮球

悬浮窗=loadlayout(xfc)--悬浮窗

end


function 开启.onClick()--开启悬浮窗代码

if 悬浮球是否打开 ==nil then

wmManager.addView(悬浮球,wmParams)

悬浮球是否打开=true

else

MD提示("你以启动悬浮窗",0xFF2196F3,0xFFFFFFFF,4,10)

end

end



function 放大()--放大悬浮窗代码

wmManager.addView(悬浮窗,wmParams )

wmManager.removeView(悬浮球)

end



function 隐藏()--隐藏悬浮窗代码

wmManager.removeView(悬浮窗)

wmManager.addView(悬浮球,wmParams )

end


function 退出()--退出悬浮窗代码

wmManager.removeView(悬浮窗)

悬浮球是否打开=nil

end


function 图标.OnTouchListener(v,event)--这个图标移动代码

if event.getAction()==MotionEvent.ACTION_DOWN then

firstX=event.getRawX()

firstY=event.getRawY()

wmX=wmParams.x

wmY=wmParams.y

elseif event.getAction()==MotionEvent.ACTION_MOVE then

wmParams.x=wmX+(event.getRawX()-firstX)

wmParams.y=wmY+(event.getRawY()-firstY)

wmManager.updateViewLayout(悬浮球,wmParams)

elseif event.getAction()==MotionEvent.ACTION_UP then

end

return false

end


function 窗体.OnTouchListener(v,event)--这个图标移动代码

if event.getAction()==MotionEvent.ACTION_DOWN then

firstX=event.getRawX()

firstY=event.getRawY()

wmX=wmParams.x

wmY=wmParams.y

elseif event.getAction()==MotionEvent.ACTION_MOVE then

wmParams.x=wmX+(event.getRawX()-firstX)

wmParams.y=wmY+(event.getRawY()-firstY)

wmManager.updateViewLayout(悬浮窗,wmParams)

elseif event.getAction()==MotionEvent.ACTION_UP then

end

return false

end

andlua教学第三期(悬浮窗)的评论 (共 条)

分享到微博请遵守国家法律