OOP调用例子
-- ============================================
-- 屏幕尺寸获取示例
-- 演示如何使用 XfxPlugin.lua 调用 ScreenOps 获取屏幕信息
-- ============================================
-- 方式一:使用 XfxPlugin.lua 面向对象封装(推荐)
-- ============================================
print('========== 方式一:使用 XfxPlugin.lua 封装 ==========')
-- 加载 XfxPlugin.lua 类
local xfxModule = require('lib/XfxPlugin')
-- 创建 XFX 对象实例
-- 注意:new 方法会自动初始化 Main.init(context),所以可以直接使用 ScreenOps
local XFX = xfxModule:new({
apkName = 'xfxPlugin-release.apk', -- APK 文件名
-- preloadOps 可以预加载常用的 Ops,这里我们手动获取 screenOps
})
-- 方法 1:通过 call 方法调用 ScreenOps 的方法
print('\n--- 通过 call 方法调用 ---')
local ok1, screenWidth = pcall(function()
return XFX:call('screenOps', 'getScreenWidth')
end)
local ok2, screenHeight = pcall(function()
return XFX:call('screenOps', 'getScreenHeight')
end)
if ok1 and ok2 then
print('屏幕宽度: ' .. tostring(screenWidth))
print('屏幕高度: ' .. tostring(screenHeight))
else
print('获取屏幕尺寸失败: ' .. tostring(screenWidth or screenHeight))
end
-- 方法 2:直接获取 screenOps 对象,然后调用方法(更直观)
print('\n--- 直接获取 screenOps 对象 ---')
local screenOps = XFX:getOps('screenOps')
if screenOps then
-- 使用 pcall 捕获可能的初始化错误
local ok, width = pcall(function() return screenOps.getScreenWidth() end)
local ok2, height = pcall(function() return screenOps.getScreenHeight() end)
if not ok or not ok2 then
print('错误: ' .. tostring(width or height))
print('提示: ScreenOps 需要先初始化 Main.init(context)')
print('注意: 如果使用 XfxPlugin.lua,new 方法会自动初始化')
-- 不 return,继续执行其他示例
else
-- 成功获取尺寸,继续获取其他信息
local appWidth = screenOps.getAppScreenWidth() -- 应用屏幕宽度(排除状态栏等)
local appHeight = screenOps.getAppScreenHeight() -- 应用屏幕高度
local density = screenOps.getScreenDensity() -- 屏幕密度
local densityDpi = screenOps.getScreenDensityDpi() -- 屏幕 DPI
local xDpi = screenOps.getScreenXDpi() -- X 方向 DPI
local yDpi = screenOps.getScreenYDpi() -- Y 方向 DPI
local isLandscape = screenOps.isLandscape() -- 是否横屏
local isPortrait = screenOps.isPortrait() -- 是否竖屏
print('屏幕宽度: ' .. tostring(width))
print('屏幕高度: ' .. tostring(height))
print('应用屏幕宽度: ' .. tostring(appWidth))
print('应用屏幕高度: ' .. tostring(appHeight))
print('屏幕密度: ' .. tostring(density))
print('屏幕 DPI: ' .. tostring(densityDpi))
print('X 方向 DPI: ' .. tostring(xDpi))
print('Y 方向 DPI: ' .. tostring(yDpi))
print('是否横屏: ' .. tostring(isLandscape))
print('是否竖屏: ' .. tostring(isPortrait))
end
end
-- 方法 3:结合悬浮日志窗口显示屏幕信息(更友好)
print('\n--- 使用悬浮日志窗口显示 ---')
-- 确保有屏幕尺寸数据
if screenWidth and screenHeight then
XFX:showFloatLogWindow({
title = '屏幕信息',
width = math.floor(screenWidth / 3),
height = math.floor(screenHeight / 6),
})
XFX:setFloatLogTitle('屏幕尺寸信息')
XFX:logi('宽度: ' .. tostring(screenWidth))
XFX:logi('高度: ' .. tostring(screenHeight))
if screenOps then
local ok, dpi = pcall(function() return screenOps.getScreenDensityDpi() end)
local ok2, density = pcall(function() return screenOps.getScreenDensity() end)
if ok then XFX:logi('DPI: ' .. tostring(dpi)) end
if ok2 then XFX:logi('密度: ' .. tostring(density)) end
end
else
print('无法显示悬浮窗:屏幕尺寸获取失败')
end
sleep(5000)
XFX:closeFloatLog()
直接调用例子
import('com.nx.assist.lua.LuaEngine')
-- ============================================
-- 方式二:直接调用方式(不推荐,但可以了解底层实现)
-- ============================================
print('\n========== 方式二:直接调用方式 ==========')
local loader = LuaEngine.loadApk('xfxPlugin-release.apk')
if not loader then
print('Failed to load APK')
return
end
local context = LuaEngine.getContext()
local UtilCodeMain = loader.loadClass('com.xfx.plugin.Main')
if not UtilCodeMain then
print('Failed to load Class')
return
end
-- 初始化插件
UtilCodeMain.init(context)
-- 获取 ScreenOps
local screenOps = UtilCodeMain.screenOps()
-- 获取屏幕尺寸
local screenWidth = screenOps.getScreenWidth()
local screenHeight = screenOps.getScreenHeight()
print('屏幕宽度: ' .. tostring(screenWidth))
print('屏幕高度: ' .. tostring(screenHeight))
-- ============================================
-- 实际应用示例:根据屏幕尺寸调整操作
-- ============================================
print('\n========== 实际应用示例 ==========')
if screenWidth and screenHeight then
print('当前屏幕尺寸: ' .. screenWidth .. ' x ' .. screenHeight)
-- 根据屏幕尺寸判断设备类型
if screenWidth > screenHeight then
print('当前为横屏模式')
else
print('当前为竖屏模式')
end
-- 根据屏幕尺寸计算合适的坐标(例如:屏幕中心点)
local centerX = math.floor(screenWidth / 2)
local centerY = math.floor(screenHeight / 2)
print('屏幕中心点: (' .. centerX .. ', ' .. centerY .. ')')
-- 根据屏幕尺寸计算合适的区域(例如:屏幕右下角 1/4 区域)
local rightBottomX = math.floor(screenWidth * 3 / 4)
local rightBottomY = math.floor(screenHeight * 3 / 4)
print('右下角区域起始点: (' .. rightBottomX .. ', ' .. rightBottomY .. ')')
else
print('无法获取屏幕尺寸,跳过实际应用示例')
end
print('\n示例执行完成!')
1. 官方交流QQ群,添加多个不批。建议使用安卓手机或电脑申请。
飞云脚本圈: 586333520
Auto.js学习交流③群:286635606
Auto.js学习交流②群:712194666(满员)
IOS免越狱自动化测试群:691997586
2. 盗版,破解有损他人权益和违法作为,请各位会员支持正版。
3. 本站部分资源来源于用户上传和网络搜集,如有侵权请提供版权证明并联系站长删除。
4.如未特别申明,本站的技术性文章均为原创,未经授权,禁止转载/搬运等侵权行为。
5.全站所有付费服务均为虚拟商品,购买后自动发货。售出后概不接受任何理由的退、换。注册即为接受此条款。
6.如果站内内容侵犯了您的权益,请联系站长删除。
飞云脚本 » 【懒人精灵】小飞侠插件专题——获取安卓设备的屏幕信息
飞云脚本圈: 586333520

Auto.js学习交流③群:286635606
Auto.js学习交流②群:712194666(满员)
IOS免越狱自动化测试群:691997586
2. 盗版,破解有损他人权益和违法作为,请各位会员支持正版。
3. 本站部分资源来源于用户上传和网络搜集,如有侵权请提供版权证明并联系站长删除。
4.如未特别申明,本站的技术性文章均为原创,未经授权,禁止转载/搬运等侵权行为。
5.全站所有付费服务均为虚拟商品,购买后自动发货。售出后概不接受任何理由的退、换。注册即为接受此条款。
6.如果站内内容侵犯了您的权益,请联系站长删除。
飞云脚本 » 【懒人精灵】小飞侠插件专题——获取安卓设备的屏幕信息