andlua教學(xué)第三期(懸浮窗)

看主頁(yè)簡(jiǎn)介加群
--懸浮窗代碼
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 --是否有焦點(diǎn)
wmParams =WindowManager.LayoutParams() --對(duì)象
if tonumber(Build.VERSION.SDK) >= 26 then
wmParams.type =WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY--安卓8以上懸浮窗打開(kāi)方式
else
wmParams.type =WindowManager.LayoutParams.TYPE_SYSTEM_ALERT--安卓8以下的懸浮窗打開(kāi)方式
end
wmParams.format =PixelFormat.RGBA_8888 --設(shè)置背景
wmParams.flags=WindowManager.LayoutParams().FLAG_NOT_FOCUSABLE--焦點(diǎn)設(shè)置
wmParams.gravity = Gravity.LEFT| Gravity.TOP --重力設(shè)置
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("沒(méi)有懸浮窗權(quán)限懸,請(qǐng)打開(kāi)權(quán)限")
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 開(kāi)啟.onClick()--開(kāi)啟懸浮窗代碼
if 懸浮球是否打開(kāi) ==nil then
wmManager.addView(懸浮球,wmParams)
懸浮球是否打開(kāi)=true
else
MD提示("你以啟動(dòng)懸浮窗",0xFF2196F3,0xFFFFFFFF,4,10)
end
end
function 放大()--放大懸浮窗代碼
wmManager.addView(懸浮窗,wmParams )
wmManager.removeView(懸浮球)
end
function 隱藏()--隱藏懸浮窗代碼
wmManager.removeView(懸浮窗)
wmManager.addView(懸浮球,wmParams )
end
function 退出()--退出懸浮窗代碼
wmManager.removeView(懸浮窗)
懸浮球是否打開(kāi)=nil
end
function 圖標(biāo).OnTouchListener(v,event)--這個(gè)圖標(biāo)移動(dòng)代碼
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)--這個(gè)圖標(biāo)移動(dòng)代碼
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