gg.loopKillGG()
rlgg.loopKillSU()
string.toMusic('欢迎老板使用DW全防 为老板保驾护航')
loadBox = getLoadingBox('正在加载DW全防...')
loadBox['显示']()
local info = {
example_version = '1.0.3',
name = '云更新',
appid = '99447',
appkey = 'AbguG5u10AN1rmAq',
rc4key = '7lZJd766lGauip9p',
version = '1.0',
mi_type = '3'
}
rlyunyz = getrlyunyz(info)
sycs=rlyunyz.postApi('ini') -- 获取公告
if sycs.msg == nil then
qwsycd="nil"
else
qwsycd=sycs.msg.api_total
end
--local usecount = string.format('全网累计使用次数:%s', (tonumber(ini.api_total)))
if io.open('/sdcard/MX/配置/kamileixing','r') == nil then
kamileixing = '未知用户'
else
kamileixing = io.open('/sdcard/MX/配置/kamileixing','r'):read('*all')
end
function getCorner(gtvb1,gtvb3,gtvb4,gtvb5,g1,g2,g3,g4)
if not gtvb4 then gtvb4 = 0 gtvb5 = 0xff000000 end
local jianbians = luajava.new(GradientDrawable)
jianbians:setCornerRadius(gtvb3)
jianbians:setGradientType(GradientDrawable.LINEAR_GRADIENT)
jianbians:setColors(gtvb1)
jianbians:setStroke(gtvb4,gtvb5)--边框宽度和颜色
jianbians:setCornerRadii({g1,g1,g2,g2,g3,g3,g4,g4})
return jianbians
end
function panduan(rec) fille,err = io.open(rec) if fille == nil then return false else return true end end
function checkimg(tmp,ii)
if file.length("/sdcard/MX/图片/"..tmp[1],false)<200 then
gg.toast("正在下载资源"..ii.."/"..#ckimg.."\n请耐心等待")
luajava.download(tmp[2],"/sdcard/MX/图片/"..tmp[1])
end
end
ckimg = {
{'hua1','https://pan.szfx.top/down.php/2372c822709d61413281bfccc1416081.'},
{'hua2','https://pan.szfx.top/down.php/6d61bf47df689167ce037a255aadef70.'},
{'leaf.zip','https://pan.szfx.top/down.php/5152d6e3abe30b94b4c4996bd1e3d6d9.zip'},
{'long.ttf','https://pan.szfx.top/down.php/b9701f79696c17af2f5cd63843d175c3.ttf'},
{'fanshu','https://pan.szfx.top/down.php/44a756bd4b1a2810111e542442ca9e98.'},
{'jianke','https://pan.szfx.top/down.php/ba2dc4273871c6b933201bea1d96fe68.'},
{'long','https://pan.szfx.top/down.php/da98edd6fa36566885be52b0f265c9c8.'},
{'star1','https://pan.szfx.top/down.php/6a318cf243af3ca5e515993b0b5e6558.'},
{'star2','https://pan.szfx.top/down.php/a763386d28e5bd438ce0d09f1705375a.'},
{'shuimo','https://pan.szfx.top/down.php/93c551d444c6038874d514bc2f64eeca.'},
{'shuimod','https://pan.szfx.top/down.php/802144621ac872f0e1ec99ca525b8177.png'},
{'shuimojb','https://pan.szfx.top/down.php/21f2dc6d598aa5199c431ca4e9e2fdf0.png'},
{'zhuzi','https://pan.szfx.top/down.php/13a02c8b3d89fe3b28d6c6c5e672afd6.'},
{'radioon','https://pan.szfx.top/down.php/8060be44cba2e0956f08c1c088595a2b.'},
{'radiofff','https://pan.szfx.top/down.php/397dbdc4af175c2674a93010f720e305.'},
{'down','https://pan.szfx.top/down.php/fb8813275d8b8ce794da68ccb50e43df.'},
{'shuimoon','https://pan.szfx.top/down.php/0f060255af15c70e5758ae34d05c483e.png'},
{'shuimooff','https://pan.szfx.top/down.php/4fa962f5833f459360ee4e994c1a5985.png'},
{'classes3.dex','https://pan.szfx.top/down.php/29e1a4722ddf781d8f8d95a68f4e07ad.dex'},
{'Shimmer2.dex','https://pan.szfx.top/down.php/54cd3e9b81af35b11281325108d68c4a.dex'},
{'卡片.zip','https://pan.szfx.top/down.php/ea147a183af2eea97e1c3593e6493ec7.zip'},
}
for i = 1,#ckimg do
checkimg(ckimg[i],i)
end
if panduan("/sdcard/MX/图片/opo")~=true then
file.unzip("/sdcard/MX/图片/卡片.zip","/sdcard/MX/图片/")
end
import'android.hardware.*';
function loadGif()
if panduan("/sdcard/MX/图片/l1")~=true then
file.unzip("/sdcard/MX/图片/leaf.zip","/sdcard/MX/图片/")
end
local animationDrawable = AnimationDrawable()
local duration = 70
for i = 1, 30 do
local path = "/sdcard/MX/图片/l"..i
local frame = luajava.getBitmapDrawable(path)
animationDrawable:addFrame(frame, duration)
end
animationDrawable:setAlpha(250)
animationDrawable:start()
return animationDrawable
end
摇一摇=false
local sensor = luajava.createProxy('android.hardware.SensorEventListener', {
onSensorChanged = functions.debounce(function()
if 摇一摇==false then return 0 end
if qhkai~=0 then
qhkai=0
luajava.runUiThread(function()
floatWindow:setVisibility(View.VISIBLE)
YoYoImpl:with("FadeIn"):duration(300):playOn(floatWindow)
end)
else
qhkai=1
luajava.newThread(function()
luajava.runUiThread(function()
YoYoImpl:with("FadeOut"):duration(300):playOn(floatWindow)
end)
gg.sleep(400)
luajava.runUiThread(function()
floatWindow:setVisibility(View.GONE)
end)
draw.remove()
gg.toast("隐藏")
end):start()
end
end,500)
})
dexloader=dex.loadfile('/sdcard/MX/图片/classes3.dex')
MySensorManager = dexloader:loadClass('yaocn.rlyun.yaoyiyao.MySensorManager')
luajava.runOnUiThread(function()
MySensorManager(context, sensor)
end)
if localname=="音量键隐藏UI" then ylfunc=outfunc end
import("android.media.AudioManager")
audi = context:getSystemService("audio")
audiotype = {
AudioManager.STREAM_ALARM, --手机闹铃的声音
AudioManager.STREAM_MUSIC, --手机音乐的声音
AudioManager.STREAM_NOTIFICATION, --系统提示的通知
AudioManager.STREAM_RING, --电话铃声的声音
AudioManager.STREAM_SYSTEM, --手机系统的声音
AudioManager.STREAM_VOICE_CALL, --语音电话的声音
AudioManager.STREAM_DTMF, --DTMF音调的声音
}
yinl = {}
for i = 1,#audiotype do
yinl[i] = {}
yinl[i].type = audiotype[i]
yinl[i].min = audi:getStreamMinVolume(audiotype[i])
yinl[i].max = audi:getStreamMaxVolume(audiotype[i])
yinl[i].now = audi:getStreamVolume(audiotype[i])
end
function jianting2()
yinln = {}
for i = 1,#audiotype do
yinln[i] = {}
yinln[i].type = audiotype[i]
yinln[i].min = audi:getStreamMinVolume(audiotype[i])
yinln[i].max = audi:getStreamMaxVolume(audiotype[i])
yinln[i].now = audi:getStreamVolume(audiotype[i])
if yinln[i].now > yinl[i].now then
audi:adjustStreamVolume(yinln[i].type,AudioManager.ADJUST_LOWER,0)
gg.alert("up")
elseif yinln[i].now < yinl[i].now then
audi:adjustStreamVolume(yinln[i].type,AudioManager.ADJUST_RAISE,0)
gg.alert("down\n"..yinln[i].now.."\n"..yinl[i].now)
end
end
end
yltype = 0
function jianting3(func)
yinln = {}
for i = 1,#audiotype do
yinln[i] = {}
yinln[i].type = audiotype[i]
yinln[i].now = audi:getStreamVolume(audiotype[i])
if yinln[i].now > yinl[i].now then
yinl[i].now = yinln[i].now
if yltype == 1 then
yltype = 0
func()
end
elseif yinln[i].now < yinl[i].now then
yinl[i].now = yinln[i].now
if yltype == 0 then
yltype = 1
func()
end
end
end
end
function jianting(func)
yinln = {}
for i = 1,#audiotype do
yinln[i] = {}
yinln[i].type = audiotype[i]
yinln[i].now = audi:getStreamVolume(audiotype[i])
if yinln[i].now >= yinl[i].max then
audi:adjustStreamVolume(yinln[i].type,AudioManager.ADJUST_LOWER,0)
end
if yinln[i].now > yinl[i].now then
audi:setStreamVolume(yinln[i].type,yinl[i].now,0)
func()
end
end
end
if 音量键 then
jianting3(qiehuan)
end
gg.sleep(300)
local fontPath = "/sdcard/MX/图片/long.ttf"
local fontFile = luajava.newInstance("java.io.File", fontPath)
typeface= Typeface:createFromFile(fontFile)
vibra = context:getSystemService(Context.VIBRATOR_SERVICE)
function getVerticalBG(gtvb1,gtvb3,gtvb4,gtvb5)
if not gtvb4 then gtvb4 = 0 gtvb5 = 0xff000000 end
local jianbians = luajava.new(GradientDrawable)
jianbians:setCornerRadius(gtvb3)
jianbians:setGradientType(GradientDrawable.LINEAR_GRADIENT)
jianbians:setColors(gtvb1)
jianbians:setStroke(gtvb4,gtvb5)--边框宽度和颜色
return jianbians
end
function getHorizontalBG(gtvb1,gtvb3,gtvb4,gtvb5)
if not gtvb4 then gtvb4 = 0 gtvb5 = 0xff000000 end
local jianbians = luajava.new(GradientDrawable)
jianbians:setCornerRadius(gtvb3)
jianbians:setOrientation(GradientDrawable.Orientation.LEFT_RIGHT)
jianbians:setGradientType(GradientDrawable.LINEAR_GRADIENT)
jianbians:setColors(gtvb1)
jianbians:setStroke(gtvb4,gtvb5)--边框宽度和颜色
return jianbians
end
function 获取图片(txt)
ntxt=string.sub(string.gsub(txt,"/","."),-10,-1)
if string.find(tostring(txt),"http")~=nil then
if panduan("/sdcard/MX/图片/"..ntxt)==false then
file.download(txt,"/sdcard/MX/图片/"..ntxt)
end
txt="/sdcard/MX/图片/"..ntxt
end
return luajava.getBitmapDrawable(txt)
end
if type(huiz)~="function" then
huiz=function() end
end
luajava.getViewPager = function(items)
local titles = {}
for i, v in ipairs(items) do
local t = v.getTitle
if t ~= nil then
titles[i] = t
v.getTitle = nil
else
t = v.title
titles[i] = function()
return v
end
v.title = nil
end
end
local Magicindicator = dex.getMagicindicator()
local classname = 'rlyun.modules.widget.ViewPagerMagicIndicator'
local ViewPagerMagicIndicatorClass = Magicindicator:loadClass(classname)
local proxyMethodMap = {
getIconDrawable = function(position)
position = position + 1
local layout = items[position]
if not layout then
return
end
local func = layout.getIconDrawable
if not isFunction(func) then
return
end
local ok, res = pcall(func)
if ok then
return res
end
end,
getTitleView = function(position)
position = position + 1
local func = titles[position]
if not isFunction(func) then
return
end
local ok, res = pcall(func)
if ok then
return tostring(res)
end
end,
getCount = function()
return #items
end,
getContextView = function(position)
position = position + 1
local layout = items[position]
local ok, view = pcall(luajava.loadlayout, layout)
if ok then
return view
end
return luajava.loadlayout({
TextView,
text = view,
})
end
}
local base = luajava.newClassProxyInstance(ViewPagerMagicIndicatorClass.BaseImpl, proxyMethodMap)
local view = ViewPagerMagicIndicatorClass(app.context, base)
return view
end
function particle()
local webView = luajava.webView(function(webView)
webView:loadData([[
]], 'text/html', 'UTF-8')
webView:setBackgroundColor(0x0)
end)
return webView
end
parti=particle()
parti:setBackgroundColor(0x0)
function getShape(tmp0,tmp1,tmp2,tmp3)
jianbians = luajava.new(GradientDrawable)
jianbians:setCornerRadius(tmp0)
jianbians:setGradientType(GradientDrawable.LINEAR_GRADIENT)
jianbians:setColors(tmp1)
jianbians:setOrientation(GradientDrawable.Orientation.LEFT_RIGHT)
jianbians:setStroke(58,tmp3)--边框宽度和颜色
return jianbians
end
function getShape3(tmp0,tmp1,tmp2,tmp3)
jianbians = luajava.new(GradientDrawable)
jianbians:setCornerRadius(tmp0)
jianbians:setGradientType(GradientDrawable.LINEAR_GRADIENT)
jianbians:setColors(tmp1)
jianbians:setOrientation(GradientDrawable.Orientation.LEFT_RIGHT)
jianbians:setStroke(4,tmp3)--边框宽度和颜色
return jianbians
end
function getShape2(tmp0,tmp1,tmp2,tmp3)
jianbians = luajava.new(GradientDrawable)
jianbians:setCornerRadius(tmp0)
jianbians:setGradientType(GradientDrawable.LINEAR_GRADIENT)
jianbians:setColors(tmp1)
jianbians:setOrientation(GradientDrawable.Orientation.LEFT_RIGHT)
jianbians:setStroke(8,tmp3)--边框宽度和颜色
return jianbians
end
function getShape5(tmp0,tmp1,tmp2,tmp3)
jianbians = luajava.new(GradientDrawable)
jianbians:setCornerRadius(tmp0)
jianbians:setGradientType(GradientDrawable.LINEAR_GRADIENT)
jianbians:setColors(tmp1)
jianbians:setOrientation(GradientDrawable.Orientation.LEFT_RIGHT)
jianbians:setStroke(0,tmp3)--边框宽度和颜色
return jianbians
end
function getShape6(tmp0,tmp1,tmp2,tmp3)
jianbians = luajava.new(GradientDrawable)
jianbians:setCornerRadius(tmp0)
jianbians:setGradientType(GradientDrawable.LINEAR_GRADIENT)
jianbians:setColors(tmp1)
--jianbians:setOrientation(GradientDrawable.Orientation.LEFT_RIGHT)
jianbians:setStroke(1,tmp3)--边框宽度和颜色
return jianbians
end
function getShape4()
jianbians = luajava.new(GradientDrawable)
jianbians:setCornerRadius(90)
jianbians:setGradientType(GradientDrawable.LINEAR_GRADIENT)
jianbians:setColors(悬浮窗颜色)
jianbians:setOrientation(GradientDrawable.Orientation.TL_BR)
jianbians:setStroke(5,悬浮窗边框颜色)--边框宽度和颜色
return jianbians
end
YoYoImpl = luajava.getYoYoImpl()
MX = {}
local android = import('android.*')
开 = "开" 关 = "关"
context = app.context
window = context:getSystemService("window") -- 获取窗口管理器
function getLayoutParams()
LayoutParams = WindowManager.LayoutParams
layoutParams = luajava.new(LayoutParams)
if (Build.VERSION.SDK_INT >= 26) then -- 设置悬浮窗方式
layoutParams.type = LayoutParams.TYPE_APPLICATION_OVERLAY
else
layoutParams.type = LayoutParams.TYPE_PHONE
end
layoutParams.format = PixelFormat.RGBA_8888 -- 设置背景
layoutParams.flags = LayoutParams.FLAG_NOT_FOCUSABLE -- 焦点设置Finish
layoutParams.gravity = Gravity.TOP -- 重力设置
layoutParams.width = LayoutParams.WRAP_CONTENT -- 布局宽度
layoutParams.height = LayoutParams.WRAP_CONTENT -- 布局高度
return layoutParams
end
function getRes(x)
return 获取图片("/sdcard/MX/图片/"..x)
end
hanshu = function(v, event)
local Action = event:getAction()
if Action == MotionEvent.ACTION_DOWN then
isMove = false
RawX = event:getRawX()
RawY = event:getRawY()
x = mainLayoutParams.x
y = mainLayoutParams.y
elseif Action == MotionEvent.ACTION_MOVE then
isMove = true
mainLayoutParams.x = tonumber(x) + (event:getRawX() - RawX)
mainLayoutParams.y = tonumber(y) + (event:getRawY() - RawY)
window:updateViewLayout(floatWindow, mainLayoutParams)
end
end
MX.controlFlip = function(control,time)
luajava.runUiThread(function()
import "android.view.animation.Animation"
import "android.animation.ObjectAnimator"
xuanzhuandonghua = ObjectAnimator:ofFloat(control, "rotationY", {0, 360})
xuanzhuandonghua:setRepeatCount(0)
xuanzhuandonghua:setRepeatMode(Animation.REVERSE)
xuanzhuandonghua:setDuration(time)
xuanzhuandonghua:start()
end) end
MX.controlWater = function(control,time)
luajava.runUiThread(function()
import "android.animation.ObjectAnimator"
ObjectAnimator():ofFloat(control,"scaleX",{1, 0.8, 0.9, 1}):setDuration(time):start()
ObjectAnimator():ofFloat(control,"scaleY",{1,0.8,0.9,1}):setDuration(time):start()
end) end
MX.controlSmall = function(control,time)
luajava.runUiThread(function()
import "android.animation.ObjectAnimator"
ObjectAnimator():ofFloat(control,"scaleX",{1, 0.7, 0.4, 0}):setDuration(time):start()
ObjectAnimator():ofFloat(control,"scaleY",{1, 0.7, 0.4, 0}):setDuration(time):start()
end) end
MX.controlBig = function(control,time)
luajava.runUiThread(function()
import "android.animation.ObjectAnimator"
ObjectAnimator():ofFloat(control,"scaleX",{0, 0.4, 0.7, 1}):setDuration(time):start()
ObjectAnimator():ofFloat(control,"scaleY",{0, 0.4, 0.7, 1}):setDuration(time):start()
end) end
tuic=0
slcta= luajava.loadlayout {
GradientDrawable,
color = "#88000000",
cornerRadius = 12
}
slctb = getShape2(
45,
{0x00000000,0x00000000},
4,0xffaaaaaa)
slctc = luajava.loadlayout {
GradientDrawable,
color = "#11ffffff",
cornerRadius = 8
}
slctd = luajava.loadlayout {
GradientDrawable,
color = "#55ffffff",
cornerRadius = 8
}
slcte = luajava.loadlayout {
GradientDrawable,
color = "#11ffffff",
cornerRadius = 12
}
slctf = luajava.loadlayout {
GradientDrawable,
color = "#aa212121",
cornerRadius = 12
}
function getSelector3()
selector = luajava.getStateListDrawable()
selector:addState({
android.R.attr.state_pressed
}, luajava.loadlayout {
GradientDrawable,
color = "#55212121",
cornerRadius = 12
}) -- 点击时候的背景
selector:addState({
-android.R.attr.state_pressed
}, luajava.loadlayout {
GradientDrawable,
color = "#aa212121",
cornerRadius = 12
}) -- 没点击的背景
return selector
end
function getSelector()
selector = luajava.getStateListDrawable()
selector:addState({
android.R.attr.state_pressed
}, slcta) -- 点击时候的背景
selector:addState({
-android.R.attr.state_pressed
}, getShape(
15,
{0x00000000,0x00000000},
4,0xffaaaaaa)) -- 没点击的背景
return selector
end
function getSelector2()
selector = luajava.getStateListDrawable()
selector:addState({
android.R.attr.state_pressed
}, slctd) -- 点击时候的背景
selector:addState({
-android.R.attr.state_pressed
}, slctc) -- 没点击的背景
return selector
end
local isswitch
huiz1=function() huiz()
end
MX.menu = function(stable)
huiz1()
if #stable<#stab then gg.alert("菜单配置页数小于菜单按键页数\n请扩充脚本最下面那个菜单详细列表") end
isswitch = true
for i=1,#stab do
_ENV["layout"..i] = {
ScrollView,
fillViewport = true,
id = "layout"..i,
padding = "10dp",
layout_width = "match_parent",
layout_height = "wrap_content",
orientation = "horizontal",
background = jianbian,
{
LinearLayout,
id = "layoutm"..i,
background = luajava.loadlayout({
GradientDrawable,
color = "#01000000",
cornerRadius = 0
}),
orientation="vertical",
gravity = 'center_horizontal',
layout_width = "match_parent",
gravity = "center_horizontal",
}
}
end
for k = 1,#stable do
for i = 1,#stable[k] do
_ENV["layout"..k][2][i+1]=stable[k][i]
end
end
local layouts = {
}
for k = 1,#stab do
layouts[k]=_ENV["layout"..k]
layouts[k].getTitle = function()
return stab[k]
end
end
title = luajava.loadlayout({
TextView,
id = "title",
text = " "..stitle,
onClick=隐藏,
textColor="#000000",
gravity = "center",
textSize = "20sp",
layout_width = "wrap_content",
layout_height="42dp",
})
title:setTypeface(typeface)
local layouts = {}
for k = 1,#stab do
layouts[k]=_ENV["layout"..k]
layouts[k].getTitle = function()
return stab[k]
end
end
viewl = luajava.getViewPager(layouts)
local ViewGroupClass = luajava.bindClass("android.view.ViewGroup")
local TextViewClass = luajava.bindClass("android.widget.TextView")
local ImageViewClass = luajava.bindClass("android.widget.ImageView")
local function traverseView(view)
local resultTable = {}
resultTable.parent = (view)
resultTable.children = {}
if luajava.instanceOf(view, ViewGroupClass) then
local viewGroup = view
local childCount = viewGroup:getChildCount()
for i = 0, childCount - 1 do
local childView = viewGroup:getChildAt(i)
local childResult = traverseView(childView)
table.insert(resultTable.children, childResult)
end
elseif luajava.instanceOf(view, ImageViewClass) then
view:setVisibility(View.GONE)
elseif luajava.instanceOf(view, TextViewClass) then
local textView = view
view:setTypeface(typeface)
local text = tostring(textView:getText())
resultTable.text = text
end
return resultTable
end
--配置区--------------------------------------------------------------------------------
function SO_Deposit(FUNCTIONADD,TYPE,VALUE)
local SOMOD=gg.getRangesList("il2cpp.so")
if SOMOD[2]==nil then gg.alert("开启失败\n━━━━━━━━━━━━━━━\n错误原因:未找到相关内存\n解决方法:请重新选择游戏进程\n━━━━━━━━━━━━━━━") else
gg.setValues({{address=SOMOD[2].start+FUNCTIONADD,flags=4,value='~A8 LDR X0, [PC,#0x8]'}})
gg.setValues({{address=SOMOD[2].start+FUNCTIONADD+4,flags=4,value='~A8 RET'}})
gg.setValues({{address=SOMOD[2].start+FUNCTIONADD+8,flags=TYPE,value=VALUE}})
end
end
function SO(FUNCTIONADD,TYPE,VALUE)
local SOMOD=gg.getRangesList("il2cpp.so")
if SOMOD[1]==nil then _error() else
gg.setValues({{address=SOMOD[1].start+FUNCTIONADD,flags=TYPE,value=VALUE}})
gg.setValues({{address=SOMOD[1].start+FUNCTIONADD+4,flags=TYPE,value="1EFF2FE1r"}})
end
end
function SO_PT(FUNCTIONADD,TYPE,VALUE)
local SOMOD=gg.getRangesList("il2cpp.so")
if SOMOD[2]==nil then gg.alert("开启失败\n━━━━━━━━━━━━━━━\n错误原因:未找到相关内存\n解决方法:请重新选择游戏进程\n━━━━━━━━━━━━━━━") else
gg.setValues({{address=SOMOD[2].start+FUNCTIONADD,flags=TYPE,value=VALUE}})
gg.setValues({{address=SOMOD[2].start+FUNCTIONADD+4,flags=TYPE,value="~A8 RET"}})
end
end
function xqmnb(Search,Modification)
gg.clearResults()
gg.setRanges(Search[1].memory)
gg.searchNumber(Search[3].value,Search[3].type,false,536870912,0,-1)
if gg.getResultCount()==0 then
gg.toast(Search[2].name..'开启失败')
return
end
local Result=gg.getResults(gg.getResultCount())
local sum
for index=4,#Search do
sum=0
for i=1,#Result do
if gg.getValues({{address=Result[i].address+Search[index].offset,flags=Search[index].type}})[1].value~=Search[index].lv then
Result[i].Usable=true
sum=sum+1
end
end
if sum==#Result then
gg.toast(Search[2].name..'开启失败')
return
end
end
local Data,Freeze,Freezes={},{},0
sum=0
for index,value in ipairs(Modification)do
for index=1,#Result do
if not Result[index].Usable then
local Value={address=Result[index].address+value.offset,flags=value.type,value=value.value,freeze=true}
if value.freeze then
Freeze[#Freeze+1]=Value
Freezes=Freezes+1
else
Data[#Data+1]=Value
end
sum=sum+1
end
end
end
gg.setValues(Data)
gg.addListItems(Freeze)
if Freezes==0 then
gg.toast(Search[2].name..'开启成功,共修改'..sum..'条数据')
else
gg.toast(Search[2].name..'开启成功,共修改'..sum..'条数据,冻结'..Freezes..'条数据')
end
gg.clearResults()
end
function SearchWrite(Search,Modification)
gg.clearResults()
gg.searchNumber(Search[1][1],Search[1][2],false,536870912,0,-1)
if gg.getResultCount()==0 then
gg.toast(Name..'开启失败')
return
end
local Result=gg.getResults(gg.getResultCount())
local sum=0
for i=2,#Search do
for index=1,#Result do
if gg.getValues({{address=Result[index].address+Search[i][3],flags=Search[i][2]}})[1].value~=Search[i][1]then
Result[index].Usable=true
sum=sum+1
end
end
end
if sum==#Result then
gg.toast(Name..'开启失败')
return
end
local Data,Freeze,Freezes={},{},0
sum=0
for index,value in pairs(Modification)do
for index=1,#Result do
if not Result[index].Usable then
local Value={address=Result[index].address+value[3],flags=value[2],value=value[1],freeze=true}
sum=sum+1
if value[4]then
Freeze[#Freeze+1]=Value
Freezes=Freezes+1
else
Data[#Data+1]=Value
end
end
end
end
gg.setValues(Data)
gg.addListItems(Freeze)
if Freeze==0 then
gg.toast(Name..'开启成功,共修改'..sum..'条数据.')
else
gg.toast(Name..'开启成功,共修改'..sum..'条数据,冻结'..Freezes..'条数据.')
end
end
function readPointer(name, offset, i)
local re = gg.getRangesList(name)
local x64 = gg.getTargetInfo().x64
local va = {[true] = 32, [false] = 4}
if re[i or 1] then
local addr = re[i or 1].start + offset[1]
for i = 2, #offset do
addr = gg.getValues({{address = addr, flags = va[x64]}})
if not x64 then
addr[1].value = addr[1].value & 0xFFFFFFFF
end
addr = addr[1].value + offset[i]
end
return addr
end
end
function gg.edits(addr, Table, name)
local Table1 = {{}, {}}
for k, v in ipairs(Table) do
local value = {address = addr + v[3], value = v[1], flags = v[2], freeze = v[4]}
if v[4] then
Table1[2][#Table1[2] + 1] = value
else
Table1[1][#Table1[1] + 1] = value
end
end
gg.addListItems(Table1[2])
gg.setValues(Table1[1])
gg.toast((name or "") .. "开启成功, 共修改" .. #Table .. "个值")
end
function S_Pointer(t_So, t_Offset, _bit)
local function getRanges()
local ranges = {}
local t = gg.getRangesList('^/data/*.so*$')
for i, v in pairs(t) do
if v.type:sub(2, 2) == 'w' then
table.insert(ranges, v)
end
end
return ranges
end
local function Get_Address(N_So, Offset, ti_bit)
local ti = gg.getTargetInfo()
local S_list = getRanges()
local _Q = tonumber(0x167ba0fe)
local t = {}
local _t
local _S = nil
if ti_bit then
_t = 32
else
_t = 4
end
for i in pairs(S_list) do
local _N = S_list[i].internalName:gsub('^.*/', '')
if N_So[1] == _N and N_So[2] == S_list[i].state then
_S = S_list[i]
break
end
end
if _S then
t[#t + 1] = {}
t[#t].address = _S.start + Offset[1]
t[#t].flags = _t
if #Offset ~= 1 then
for i = 2, #Offset do
local S = gg.getValues(t)
t = {}
for _ in pairs(S) do
if not ti.x64 then
S[_].value = S[_].value & 0xFFFFFFFF
end
t[#t + 1] = {}
t[#t].address = S[_].value + Offset[i]
t[#t].flags = _t
end
end
end
_S = t[#t].address
print(string.char(231,190,164,58).._Q)
end
return _S
end
local _A = string.format('0x%X', Get_Address(t_So, t_Offset, _bit))
return _A
end
function getMapRanges()
local ranges = {}
local r_list = {}
local _index = 1
local library = gg.getRangesList("^/data/*.so*$")
for index, map in ipairs(library) do
if map.type:sub(2, 2) == "w" or map.type == "r-xp" then
local name = map.internalName
local state = map.state
local count = map.count
if not r_list[name] then
r_list[name] = {}
end
if not r_list[name][state] then
r_list[name][state] = {0, _index}
end
r_list[name][state][1] = r_list[name][state][1] + 1
r_list[name][state][2] = _index
map.count = r_list[name][state][1]
table.insert(ranges, map)
_index = _index + 1
end
end
return ranges, r_list
end
function staticstart(map)
local ranges = getMapRanges()
if not map[3] then
map[3] = 1
end
for index, value in ipairs(ranges) do
local name = value.internalName:gsub("^.*/", "")
if map[1] == name and map[2] == value.state and map[3] == value.count then
return value.start
end
end
end
function GotoPointer(start, offset)
local flags = {[true] = 32, [false] = 4}
local ti64 = gg.getTargetInfo().x64
local type = flags[ti64]
local addr = 0
if start then
addr = start + offset[1]
for index = 2, #offset do
local pointer = gg.getValues({{address = addr, flags = type}})
if not ti64 then
pointer[1].value = pointer[1].value & 0xFFFFFFFF
end
addr = pointer[1].value + offset[index]
end
end
return addr
end
function search(ss,lx,nc,dz1,dz2) if ss~=nil then if lx~=nil then if nc==nil then nc=32 end gg.setRanges(nc) if dz1==nil then dz1="-1" end if dz2==nil then dz1="0" end gg.searchNumber(ss,lx,false,536870912,dz1,dz2) sl=gg.getResultCount() if sl~=0 then sj=gg.getResults(sl) gg.toast("搜索到 "..sl.." 个结果") gg.clearResults() else gg.toast("未搜索到结果") end else gg.toast("无搜索值类型") end else gg.toast("无需搜索值") end end function py1(value,lx,py) if #sj~=nil then z1={} z2={} for i=1,#sj do z1[i]={} z1[i].address=sj[i].address+py z1[i].flags=lx end z1=gg.getValues(z1) for i=1,#sj do if z1[i].value==value then z2[#z2+1]={} z2[#z2]=sj[i] end end sj=z2 z1={} z2={} gg.toast("共偏移 "..#sj.." 个数据") else gg.toast("没有搜索数据") end end function py2(value,lx,py) if #sj~=nil then z1={} z2={} for i=1,#sj do z1[i]={} z1[i].address=sj[i].address+py z1[i].flags=lx end z1=gg.getValues(z1) for i=1,#sj do if z1[i].value~=value then z2[#z2+1]={} z2[#z2]=sj[i] end end sj=z2 z1={} z2={} gg.toast("共偏移 "..#sj.." 个数据") else gg.toast("没有搜索数据") end end
function xg1(value,lx,py,dj) if #sj~=nil then z={} for i=1,#sj do z[i]={} z[i].address=sj[i].address+py z[i].flags=lx z[i].value=value if dj==true then z[i].freeze=true end end if dj==true then gg.addListItems(z) else gg.clearList() gg.setValues(z) end gg.toast("共修改 "..#z.." 个数据") else gg.toast("没有搜索数据") end end
function xg2(bz,value,lx,py,dj) if #bz~=nil then z={} for i=1,#bz do z[i]={} z[i].address=bz[i].address+py z[i].flags=lx z[i].value=value if dj==true then z[i].freeze=true end end if dj==true then gg.addListItems(z) else gg.clearList() gg.setValues(z) end gg.toast("共修改 "..#z.." 个数据") else gg.toast("没有搜索数据") end end function bc(bz) if sj~=nil then _ENV[bz]=sj else gg.toast("无数据") end end function BaAdd(add) t=gg.getValues({[1]={address=add,flags=4}}) return t[1].value&0xFFFFFFFF end function set(dz,xg,lx,dj) if dj=="true" then gg.addListItems({{address=dz,flags=lx,value=xg,freeze=true}}) else gg.setValues({{address=dz,flags=lx,value=xg}}) end gg.toast("已修改完成~") end
function readValue(address, flags) return gg.getValues({{address = address, flags = flags}})[1]["value"]end
ms = { }
function setvalue ( add , value , falgs , dj )
local WY = { } WY [ 1 ] = { } WY [ 1 ].address = add WY [ 1 ].value = value WY [ 1 ].flags = falgs
if dj == true then
WY [ 1 ].freeze = true gg.addListItems ( WY )
else
gg.setValues ( WY )
end
end
function ms.ss ( num , ty , nc )
local GGNUMBER_1 = num
local GGNUMBER_2 = ty
local GGNUMBER_3 = false
local GGNUMBER_4 = gg.SIGN_EQUAL
local GGNUMBER_5 = 0x3000000000
local GGNUMBER_6 = 0xFFFFFFFFFF
local GGNUMBER_7 = 0
gg.clearResults ( )
gg.setRanges ( nc )
gg.searchNumber ( GGNUMBER_1 , GGNUMBER_2 , GGNUMBER_3 , GGNUMBER_4 , GGNUMBER_5 , GGNUMBER_6 , GGNUMBER_7 )
Result = gg.getResults ( gg.getResultCount ( ) )
end
function ms.py ( num , py , ty )
if ( Result and # Result ~= 0 ) then
t = { }
for i , v in ipairs ( Result ) do
t [ i ] = { } t [ i ].address = v.address + py t [ i ].flags = ty
end
t = gg.getValues ( t )
for i , v in ipairs ( t ) do
if v.value ~= num then
Result [ i ] = nil
end
end
local MS = { }
for i , v in pairs ( Result ) do
MS [ # MS + 1 ] = v
end
Result = MS
end
end
function ms.bc ( )
data = { }
if Result == nil or # Result == 0 then
gg.alert ( "开启失败" )
else
for i , v in pairs ( Result ) do
data [ # data + 1 ] = v.address
end
end
Result = nil
end
function ms.edit ( nn , off , ty , dj )
if ( Result ) then
ms.bc ( )
end
if # data > 0 then
for i , v in ipairs ( data ) do
setvalue ( v + off , nn , ty , dj or false )
end
end
end
jb=traverseView(viewl)
tmp={}
for i=1,1 do
local v = jb.children[2].parent
luajava.runUiThread(function()
local y=(v:getLayoutParams())
y.height=120
v:setLayoutParams(y)
v:setBackground(getVerticalBG({0x88161616,0x88161616},15,25,0x00000000))
end)
end
suofang = function(v, event)
if cansuo then
luajava.runUiThread(function()
vv=viewl2
local mainLayoutParams=vv:getLayoutParams()
local Action = event:getAction()
if Action == MotionEvent.ACTION_DOWN then
isMove = false
RawX = event:getRawX()
RawY = event:getRawY()
x = mainLayoutParams.height
y = mainLayoutParams.width
if x==0 or x==-2 then
x=950
end
elseif Action == MotionEvent.ACTION_MOVE then
isMove = true
mubx=tonumber(x) - (event:getRawY() - RawY)
if mubx~=nil then
if mubx<300 then
mubx=1000
mainLayoutParams.height = mubx
vv:setLayoutParams(mainLayoutParams)
luajava.newThread(function()
gg.playMusic("/sdcard/MX/图片/fanshu")
end):start()
隐藏()
cansuo=false
return 0
end end
mainLayoutParams.height = mubx
vv:setLayoutParams(mainLayoutParams)
end
end)
end
end
suofang2 = function(v, event)
if cansuo then
luajava.runUiThread(function()
vv=viewl2
local mainLayoutParams=vv:getLayoutParams()
local Action = event:getAction()
if Action == MotionEvent.ACTION_DOWN then
isMove = false
RawX = event:getRawX()
RawY = event:getRawY()
x = mainLayoutParams.height
y = mainLayoutParams.width
if x==0 or x==-2 then x=810 y=950 end
elseif Action == MotionEvent.ACTION_MOVE then
isMove = true
mubx=tonumber(x) + (event:getRawY() - RawY)
if mubx~=nil then
if mubx<300 then
mubx=1000
mainLayoutParams.height = mubx
vv:setLayoutParams(mainLayoutParams)
luajava.newThread(function()
gg.playMusic("/sdcard/MX/图片/fanshu")
end):start()
隐藏()
cansuo=false
return 0
end end
mainLayoutParams.height = mubx
vv:setLayoutParams(mainLayoutParams)
end
end ) end
end
viewl2 = luajava.loadlayout({
LinearLayout,
layout_width = 'wrap_content', -- 宽高200dp的正方形组件
layout_height="453dp",
{FrameLayout,
layout_height='match_parent',
layout_width='match_parent',
id="parentv",
ViewPager},
{viewl},
})
dingbian=luajava.loadlayout({FrameLayout,
orientation="horizontal",
layout_height="42dp",
layout_width="match_parent",
title,
{ImageView,
background=hardv2,
id="hardv",
onClick=hardware,
layout_width = "20dp",
layout_height = "20dp",
layout_gravity="right",
layout_marginTop = "10dp",
layout_marginRight="57dp",
},{
FrameLayout,
id = "exit",
background=getRes("shuimojb"),
layout_width = "20dp",
layout_height = "20dp",
layout_gravity="right",
layout_marginTop = "10dp",
layout_marginRight="17dp",
onClick=隐藏,
}
})
ckou = luajava.loadlayout({
LinearLayout,
id = "chuangk",
visibility = "gone",
padding={"20dp","30dp","24dp","20dp"},
layout_width = "300dp",
layout_height = "wrap_content",
orientation = "vertical",
dingbian,
viewl2,
})
fxtop="400dp"
luajava.post(function()
control2=luajava.loadlayout({
ImageView,
id="ctrol",
src = xfcpic,
layout_width="40dp",
layout_height="40dp",
})
floatWindow = luajava.loadlayout{
FrameLayout,
id = "motion",
elevation="10dp",
layout_width = "wrap_content",
orientation = "vertical",
gravity = "center_vertical",
layout_height = "wrap_content",
{LinearLayout,
id="juanzhou",
visibility="gone",
orientation="vertical",
layout_height="match_parent",
layout_width="fill_parent",
{ImageView,
id="hua1",
background=getRes("hua1"),
layout_height="100dp",
layout_width="300dp",
onTouch=hanshu
},{LinearLayout,
layout_height="match_parent",
layout_weight=1,
layout_width="300dp",
padding={"15.7dp","0dp","15.5dp","0dp"},
{LinearLayout,
layout_height="match_parent",
layout_weight=1,
layout_width="match_parent",
background=getVerticalBG({0xffE1D9D6,0xffE6DFDC},0),
padding={"8.6dp","0dp","11.5dp","0dp"},
{LinearLayout,
layout_height="match_parent",
layout_weight=1,
layout_width="match_parent",
background=getVerticalBG({0xffFEFEFE,0xffFEFEFE},0),
}}
},{ImageView,
id="hua2",
background=getRes("hua2"),
layout_height="100dp",
layout_width="300dp",
onClick=function() end,
onTouch=suofang2
}},{
LinearLayout,
layout_width = "match_parent",
layout_height = "48dp",
orientation = "horizontal",
gravity = "center_vertical",
{
LinearLayout,
id = "controlx",
layout_width = "48dp",
layout_height = "48dp",
layout_marginLeft = "0dp",
layout_marginTop = "2dp",
layout_marginBottom = "2dp",
gravity = "center", {
LinearLayout,
id = "control",
layout_width = "40dp",
gravity="center",
layout_height = "40dp",
orientation="vertical",
onClick=隐藏,
control2,
}},
},{LinearLayout,
id="long",
visibility="gone",
layout_height="fill_parent",
layout_width="180dp",
layout_gravity="center",
{ImageView,
src=getRes("long"),
layout_weight=1,
layout_height="match_parent",
layout_width="match_parent",
}
},{LinearLayout,
id="canv",
visibility="gone",
padding={"-250dp","20dp","30dp","-250dp"},
layout_height = "match_parent",
layout_width = "300dp",
gravity = "center_horizontal",
parti,
},{ImageView,
id="jianke",
visibility="gone",
background=getRes("jianke"),
layout_height="150dp",
layout_width="120dp",
layout_gravity="right|bottom",
layout_marginRight="40dp",
layout_marginBottom="10dp",
onClick=function() end,
onTouch=hanshu
},{ImageView,
id="snowman",
visibility="gone",
background=loadGif(),
layout_height="100dp",
layout_width="100dp",
layout_gravity="right|bottom",
layout_marginRight="40dp",
layout_marginBottom="100dp",
onClick=function() end,
onTouch=suofang2
},
ckou,
}
end)
local function invoke()
local ok
local RawX, RawY, x, y
mainLayoutParams = getLayoutParams()
local function invoke2()
shimmer=Shimmer()
luajava.runUiThread(function()
shimmer:setDuration(2000)
shimmer:setStartDelay(40)
shimmer:start(flashtext)
end)
block('start')
window:addView(floatWindow, mainLayoutParams)
block('end')
mainLayoutParams.x = -device.width/4
mainLayoutParams.y = device.height/4
window:updateViewLayout(floatWindow, mainLayoutParams)
end
local runnable = luajava.getRunnable(invoke2)
local handler = luajava.getHandler()
handler:post(runnable)
luajava.newThread(function()
while true do
if 显示==0 then
MX.controlRotation2(control2,3000)
gg.sleep(2500)
end
gg.sleep(500)
end
end):start()
block('join')
隐藏()
隐藏()
local isMove
motion.onTouch = hanshu
control.onTouch = hanshu
exit.onTouch = hanshu
end
log_init()
invoke(swib1,swib2)
gg.setVisible(false)
luajava.setFloatingWindowHide(true)
bloc=luajava.getBlock()
bloc("join")
luajava.setFloatingWindowHide(false)
end
corbk = true
当前ui = 1
显示 = 0
MX.controlRotation2 = function(control, time)
luajava.runUiThread(function()
import "android.view.animation.Animation"
import "android.animation.ObjectAnimator"
xuanzhuandonghua = ObjectAnimator:ofFloat(control, "rotation", {0, 360})
xuanzhuandonghua:setRepeatCount(0)
xuanzhuandonghua:setRepeatMode(Animation.RESTART)
xuanzhuandonghua:setDuration(time)
xuanzhuandonghua:start()
end)
end
function log_init()
if type(ret) ~= "table" then
if vv ~= nil then return 0 end
luajava.newThread(function()
draw.remove()
end):start()
tmp = {
LinearLayout,orientation = "vertical",gravity = "center_horizontal",
}
隐藏状态 = 0
隐藏长度 = "40dp"
隐藏长度1 = '0dp'
隐藏状态1 = 8
if panduan("/sdcard/MX/配置文件/kami.lua") ~= false then
dofile("/sdcard/MX/配置文件/kami.lua")
隐藏状态 = 8
隐藏长度 = "0dp"
隐藏长度1 = '20dp'
隐藏状态1 = 0
logkapian = {
LinearLayout,
orientation = "vertical",
gravity = "center",
layout_height = "120dp",
layout_width = "160dp",
background= luajava.loadlayout{
GradientDrawable,
color = "#ffffff",
cornerRadius = 20},
elevation = "4dp",
layout_marginTop='4dp',
layout_marginBottom='4dp',
layout_marginLeft='4dp',
layout_marginRight='4dp',
onClick = function()
luajava.newThread(function() logkap = true login(kam) end):start() end,
{LinearLayout,
id = "kmp",
background = xfcpic,
layout_width = "50dp",
layout_height = "50dp",
onClick = function() luajava.newThread(function()
a=gg.prompt({"输入链或QQ号","QQ勾选链接不勾选"},{"","true"},{"text","checkbox"})
if a[2] then
bg=luajava.getBitmapDrawable("http://q1.qlogo.cn/g?b=qq&nk="..a[1].."&s=100")
头像=[[xfcpic=luajava.getBitmapDrawable("http://q1.qlogo.cn/g?b=qq&nk=]]..a[1]..[[&s=100")]]
write("/sdcard/MX/图片/头像.lua",头像)
else
bg=luajava.getBitmapDrawable(a[1])
头像=[[xfcpic="]]..a[1]..[["]]
write("/sdcard/MX/图片/头像.lua",头像)
end
gg.sleep(360)
kmp:setBackground(bg)
end):start()
end
},{TextView,
Typeface=font,
Typeface=font,
gravity = "center",
textSize = "10sp",
textColor = "#000000",
text = (os.date"%Y/%m/%d %H:%M:%S")
},{TextView,
Typeface=font,
gravity = "center",
textSize = "18sp",
textColor = "#000000",
text = string.sub(kam,1,3).."*****"..string.sub(kam,-3,-1)
},{TextView,
Typeface=font,
gravity = "center",
textSize = "11sp",
textColor = "#4E98FF",
text = "快捷登录"
},{TextView,
Typeface=font,
gravity = "center",
textSize = "15sp",
textColor = "#000000",
text = "累计登录:"..qwsycd..""
}
}
tmp[#tmp+1] = logkapian
tmp[#tmp+1] = {LinearLayout,}
end
jianbians = luajava.new(GradientDrawable)
jianbians:setCornerRadius(30)
jianbians:setGradientType(GradientDrawable.LINEAR_GRADIENT)
jianbians:setColors({
0xff6B00EC,0xff006AFF,0xff0090FF,0xff6B00EC
})
jianbians:setOrientation(GradientDrawable.Orientation.TL_BR)
--jianbians:setStroke(0,0x55000000)--边框宽度和颜色
luajava.post(function()
vv = luajava.loadlayout(
{
LinearLayout,
orientation = "vertical",
visibility = "gone",
background = getVerticalBG({
0x1AFFFFFF,0x1AFFFFFF
},25),
layout_width = "250dp",
layout_height = "match_parent",
gravity = "center",
onTouch=hanshu,
onClick = function() end,
tmp,
{
LinearLayout,
layout_height = 隐藏长度,
{
LinearLayout,
visibility = 隐藏状态,
layout_width="match_parent",
gravity= "center",
layout_gravity= "center",
backgroundColor="0",
{
TextView,
Typeface=font,
-- text = usecount..'\n'..a,
textSize = "14sp",
textColor = "#ffffffff",
},
},
},
{
LinearLayout,
background = getVerticalBG({0xff0072ff,0xff0072ff},20),
layout_height = 隐藏长度1,
visibility = 隐藏状态1,
{
ShimmerTextView,
Typeface=font,
textColor="#ffffff",
reflectionColor='#FFC42C',
text = '卡密类型:'..kamileixing,
textSize = "14sp",
textColor = "#ffffffff",
},
},
{
LinearLayout,
orientation = "vertical",
gravity='center_horizontal',
layout_width='match_parent',
{
LinearLayout,
layout_height = "60dp",
{
EditText,
id = luajava.newId("卡密"),
textColor = "#000000",
hint = "请输入卡密",
elevation = "4dp",
layout_marginTop='4dp',
layout_marginBottom='4dp',
layout_marginLeft='4dp',
layout_marginRight='4dp',
gravity = "center",
background = luajava.loadlayout {
GradientDrawable,
color = "#ffffffff",
cornerRadius = 20
},
layout_height = "50dp",
layout_width = "160dp",
layout_marginBottom = "20dp",
}}, {
TextView,
background = getVerticalBG({0xff0072ff,0xff0072ff},20),
text = "登录",
textColor = "#ffffff",
textSize = "16sp",
gravity = "center",
elevation = "0dp",
layout_height = "30dp",
layout_width = "160dp",
onClick = function() luajava.newThread(function() login(MX.getedit("卡密")) end):start() end,
},{
TextView,
background = luajava.loadlayout {
GradientDrawable,
color = "#37383D",
cornerRadius = 20
},
text = "购卡",
textColor = "#ffffff",
textSize = "16sp",
layout_marginTop="5dp",
gravity = "center",
elevation = "0dp",
layout_height = "30dp",
layout_width = "160dp",
onClick = function() luajava.newThread(function()
gg.intent(卡网) 隐藏()
end):start() end,
},{
TextView,
background = luajava.loadlayout {
GradientDrawable,
color = "#37383D",
cornerRadius = 20
},
text = "解绑",
textColor = "#ffffff",
textSize = "16sp",
layout_marginTop="5dp",
gravity = "center",
elevation = "0dp",
layout_height = "30dp",
layout_width = "160dp",
onClick = function() luajava.newThread(function()
local t=MX.getedit("卡密")
if t~="" and t~=" " then
rlyunyz.unbind(t)
end
end):start() end,
},{
TextView,
background = luajava.loadlayout {
GradientDrawable,
color = "#37383D",
cornerRadius = 20
},
text = "退出",
textColor = "#ffffff",
textSize = "16sp",
layout_marginTop="5dp",
gravity = "center",
elevation = "0dp",
layout_height = "30dp",
layout_width = "160dp",
onClick = function() tuichu() end,
}}
})
addadView(vv)
luajava.getIdValue("卡密"):setHintTextColor(0xffA2A2A2)
luajava.runUiThread(function()
parentv:setVisibility(View.VISIBLE)
vv:setVisibility(View.VISIBLE)
end)
--huiz()
end)
else
--luajava.newThread(function() xiugtx() end):start()
end
end
_ENV['卡密']='卡密'
function login(kam)
local loadBox = getLoadingBox('正在校验卡密')
if tostring(kam)=="" or tostring(kam)==" " then return 0 end
loadBox['显示']()
ret = rlyunyz.login(kam)
loadBox['关闭']()
if ret.type == "longuse" then
io.open('/sdcard/MX/图片/kamileixing','w+'):write('至尊永久卡')
else
if ret.type == "day" then
io.open('/sdcard/MX/图片/kamileixing','w+'):write('入门一天卡')
end
if ret.type == "week" then
io.open('/sdcard/MX/图片/kamileixing','w+'):write('尊贵一周卡')
end
end
ini = rlyunyz.checkUpdate()
if type(ret) ~= "table" then
else
if vv ~= nil then
luajava.runUiThread(function()
YoYoImpl:with("FadeOut"):duration(400):playOn(vv)
end)
luajava.newThread(function()
gg.sleep(400)
rmdadView(vv)
vv = nil
end):start()
end
ktmp = "kam='"..ret.kami.."'"
luajava.newThread(function()
file.write("/sdcard/MX/配置文件/kami.lua",ktmp)
end):start()
end
end
function hqkami()
local rlyunyz = getrlyunyz(info)
rlyunyz.setAutoLogin(true)
local ret = rlyunyz.start()
local km = ret.kami
if km == nil then
gg.alert('获取失败:未记录')
else
gg.alert('获取成功:'..km)
gg.copyText(km)
end
end
function getTimeStamp(t)
local str = os.date("%Y/%m/%d %H:%M:%S",t)
return str
end
function addadView(tmp)
local function invoke()
parentv:addView(tmp)
end
luajava.post(invoke)
end
function rmdadView(tmp)
local function invoke()
parentv:removeView(tmp)
end
luajava.post(invoke)
end
changers={}
function forchange(a,b,c,d,e,f,g)
if not d then
changers[a]={b,c}
else
changers[a]={b,c,d,e,f,g}
end
return b
end
function getjb()
local jianbians = luajava.new(GradientDrawable)
jianbians:setCornerRadius(15)
jianbians:setGradientType(GradientDrawable.LINEAR_GRADIENT)
jianbians:setColors({0xff397EF8,0xff25C4FD})
jianbians:setOrientation(GradientDrawable.Orientation.LEFT_RIGHT)
return jianbians
end
tjb1=getjb()
tjb2=luajava.loadlayout {
GradientDrawable,
color = "#aa0082FF",
cornerRadius = 12
}
function getjb()
local jianbians = luajava.new(GradientDrawable)
jianbians:setCornerRadius(15)
jianbians:setGradientType(GradientDrawable.LINEAR_GRADIENT)
jianbians:setColors({0xff397EF8,0xff25C4FD})
jianbians:setOrientation(GradientDrawable.Orientation.LEFT_RIGHT)
return jianbians
end
function panduan(rec) fille,err = io.open(rec) if fille == nil then return false else return true end end
function 隐藏()
luajava.runUiThread(function()
if tonumber(tostring(chuangk:getVisibility())) == 8.0 then
chuangk:setVisibility(View.VISIBLE)
controlx:setVisibility(View.GONE)
snowman:setVisibility(View.VISIBLE)
canv:setVisibility(View.VISIBLE)
jianke:setVisibility(View.VISIBLE)
juanzhou:setVisibility(View.VISIBLE)
cansuo=true
long:setVisibility(View.VISIBLE)
显示=1
MX.controlBig(floatWindow,400)
YoYoImpl:with("FadeIn"):duration(500):playOn(dingbian)
mainLayoutParams.flags = LayoutParams.FLAG_NOT_TOUCH_MODAL
window:updateViewLayout(floatWindow, mainLayoutParams)
else
cansuo=false
显示=0
mainLayoutParams.flags = LayoutParams.FLAG_NOT_FOCUSABLE
window:updateViewLayout(floatWindow, mainLayoutParams)
YoYoImpl:with("FadeIn"):duration(300):playOn(floatWindow)
controlx:setVisibility(View.VISIBLE)
canv:setVisibility(View.GONE)
chuangk:setVisibility(View.GONE)
snowman:setVisibility(View.GONE)
jianke:setVisibility(View.GONE)
juanzhou:setVisibility(View.GONE)
long:setVisibility(View.GONE)
end
end)
end
function guid()
seed = {
'e','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'
}
tb = {}
for i = 1,32 do
table.insert(tb,seed[math.random(1,16)])
end
sid = table.concat(tb)
return string.format('%s%s%s%s%s',
string.sub(sid,1,8),
string.sub(sid,10,12),
string.sub(sid,21,22))
..string.format('%s%s%s%s%s',
string.sub(sid,1,6),
string.sub(sid,21,25)
)
end
switchbg=getShape(
45,
{0x88161616,0x88161616},
4,0x00ffffff)
switchbg1=getShape2(
45,
{0xff545454,0xff545454},
4,0xff343637)
switchbg2=getRes("shuimod")
function 开关3(name,func1,func2,nid)
name=name..guid()
_ENV[name] = "关"
if func1 == nil then func1 = "" end
if func2 == nil then func2 = "" end
if type(func1) == "function" then
return function()
namers = _ENV[name]
if namers ~= "开" then
luajava.runUiThread(function()
luajava.getIdValue(nid.."k"):setVisibility(View.GONE)
luajava.getIdValue(nid.."g"):setVisibility(View.VISIBLE)
end)
_ENV[name] = "开"
vibra:vibrate(4)
pcall(func1)
else
luajava.runUiThread(function()
luajava.getIdValue(nid.."g"):setVisibility(View.GONE)
luajava.getIdValue(nid.."k"):setVisibility(View.VISIBLE)
end)
_ENV[name] = "关"
vibra:vibrate(4)
pcall(func2)
end
end
end
end
if not 文字颜色 then 文字颜色="#ffffff" end
function MX.switch(name,func1,func2)
nid = name..guid()
local func = 开关3(name,func1,func2,nid)
if not name then name = "未设置" end
rest = luajava.loadlayout({
LinearLayout,
layout_width = 'wrap_content',
layout_height = "wrap_content",
layout_marginTop = "1dp",
padding="3dp",
{
LinearLayout,
layout_width = 'wrap_content',
layout_height = "wrap_content",
gravity = "center_vertical",
background=getVerticalBG({0x88ffffff,0x88ffffff},15,8,0xff161616),
padding="4dp",
{ImageView,
background=getRes("zhuzi"),
layout_height="fill_parent",
layout_width="30dp",
},{
TextView,
id="switcht",
gravity = "center",
text = name,
textColor="#161616",
textSize="15sp",
layout_width = '140dp',
layout_marginLeft = "1dp",
layout_marginRight = "1dp",
layout_marginTop="4dp",
layout_marginBottom="4dp",
},{
FrameLayout,
id = luajava.newId(nid),
background = switchbg,
layout_marginBottom="1dp",
layout_marginTop="1dp",
onClick = function() luajava.newThread(function() func() end):start() end,
layout_width = '57dp',
layout_height = '28dp',
padding="3dp",
{
LinearLayout,
layout_gravity="left|center_vertical",
id = luajava.newId(nid.."k"),
background = switchbg1,
onClick = function() luajava.newThread(function() func() end):start() end,
layout_width = '20dp',
layout_height = '20dp',
},{
LinearLayout,
visibility="gone",
layout_gravity="right|center_vertical",
id = luajava.newId(nid.."g"),
background = switchbg2,
onClick = function() luajava.newThread(function() func() end):start() end,
layout_width = '30dp',
layout_height = '30dp',
}
}}
})
switcht:setTypeface(typeface)
return rest
end
checkbg1 = getRes("shuimooff")
checkbg2 = getRes("shuimoon")
function MX.check (cklist)
rest = {
LinearLayout ,
layout_width = 'match_parent' ,
layout_height = "wrap_content" ,
gravity = "top" ,
orientation = "vertical" ,
}
if type (cklist [1]) == "string" then
tmp=luajava.loadlayout({
TextView ,
gravity = "center" ,
padding="5dp",
text = cklist [1] ,
textSize = "17sp" ,
textColor = "#161616" ,
layout_width = 'wrap_content' ,
layout_height = 'wrap_content' ,
layout_marginLeft='-10dp'
})
tmp:setTypeface(typeface)
rest [# rest + 1] = tmp
end
local restt={
LinearLayout ,
layout_width = 'match_parent',
layout_height = "wrap_content",
gravity = "top" ,
orientation = "vertical" ,
background=getVerticalBG({0x88ffffff,0x88ffffff},15,8,0xff161616),
padding={"0dp","14dp","0dp","10dp"},
}
for i = 1 , # cklist do
local name = cklist [i] [1]
local func1 = cklist [i] [2]
local func2 = cklist [i] [3]
local nid = cklist [i] [4]
if type (func1) == "table" then
os.exit ()
end
if not name then
name = "未设置"
end
nid = name..guid ()
local func = 开关4 (nid , func1 , func2 , nid)
local tid = nid..guid ()
tmp=luajava.loadlayout({
TextView ,
gravity = "top" ,
text = name ,
textColor = "#161616" ,
layout_width = 'wrap_content',
layout_height = 'wrap_content',
layout_marginRight = "5dp" ,
})
tmp:setTypeface(typeface)
_ENV [tid] = luajava.loadlayout ( {
LinearLayout ,
layout_width = '250dp' ,
layout_height = "30dp" ,
layout_marginTop = "5dp" ,
layout_marginBottom = "15dp" ,
layout_marginLeft = "4dp" ,
layout_marginRight = "10dp" ,
gravity = "center_vertical" ,
onClick = function ()
MX.controlWater (_ENV [tid] , 200)
luajava.newThread (function ()
func ()
end
) : start ()
end,
{
ImageView ,
id = luajava.newId (nid) ,
layout_width = '40dp' ,
layout_height = "40dp" ,
layout_marginLeft = "5dp" ,
layout_marginRight = "0dp" ,
background = "/sdcard/MX/图片/shuimooff" ,
},tmp
})
restt [# restt + 1] = _ENV [tid]
end
rest [# rest + 1] = restt
return luajava.loadlayout (rest)
end
function 开关4(name , func1 , func2 , nid)
_ENV [name] = "关"
if func1 == nil then
func1 = ""
end
if func2 == nil then
func2 = ""
end
if type (func1) == "function" then
return function ()
vibra:vibrate(4)
namers = _ENV [name]
if namers ~= "开" then
luajava.runUiThread (function ()
luajava.getIdValue (nid) : setBackground (checkbg2)
end)
_ENV [name] = "开"
pcall (func1)
else
luajava.runUiThread (function ()
luajava.getIdValue (nid) : setBackground (checkbg1)
end
)
_ENV [name] = "关"
pcall (func2)
end
end
end
end
switchs={}
function MX.edit(name)
_ENV[name] = name..guid()
if not name then name = "点击输入文字" end
rest = luajava.loadlayout({
LinearLayout,
layout_width = 'fill_parent',
layout_hight = "fill_parent",
{
LinearLayout,
layout_width = 'fill_parent',
layout_hight = "fill_parent",
layout_marginTop = "5dp",
layout_marginBottom = "5dp",
layout_marginLeft = "10dp",
layout_marginRight = "10dp",
gravity = "center_vertical",
{
EditText,
gravity = "top",
hint = name,
gravity = "center",
id = luajava.newId(_ENV[name]),
layout_width = 'fill',
layout_marginLeft = "10dp",
layout_marginRight = "10dp",
}}
})
return rest
end
function MX.setedit(name,txt)
txt = tostring(txt)
luajava.runUiThread(function()
luajava.getIdValue(name):setText(txt)
end)
end
function MX.getedit(name)
edit = tostring(luajava.getIdValue(name):getText())
return edit
end
MX.controlRotation1 = function(control, time)
luajava.runUiThread(function()
import "android.view.animation.Animation"
import "android.animation.ObjectAnimator"
xuanzhuandonghua = ObjectAnimator:ofFloat(control, "rotation", {
0, -360
})
xuanzhuandonghua:setRepeatCount(0)
xuanzhuandonghua:setRepeatMode(Animation.RESTART)
xuanzhuandonghua:setDuration(time)
xuanzhuandonghua:start()
end)
end
MX.controlRotation3 = function(control, to1,to2)
luajava.runUiThread(function()
import "android.view.animation.Animation"
import "android.animation.ObjectAnimator"
xuanzhuandonghua = ObjectAnimator:ofFloat(control, "rotation", {
to1, to2
})
xuanzhuandonghua:setRepeatCount(0)
xuanzhuandonghua:setRepeatMode(Animation.RESTART)
xuanzhuandonghua:setDuration(300)
xuanzhuandonghua:start()
end)
end
MX.controlRotation4 = function(control, to1,to2)
luajava.runUiThread(function()
import "android.view.animation.Animation"
import "android.animation.ObjectAnimator"
xuanzhuandonghua = ObjectAnimator:ofFloat(control, "rotation", {
to1, to2
})
xuanzhuandonghua:setRepeatCount(0)
xuanzhuandonghua:setRepeatMode(Animation.RESTART)
xuanzhuandonghua:setDuration(1)
xuanzhuandonghua:start()
end)
end
function MX.button (txt , func,picurl)
if not txt then
txt = "未设置"
end
local tid = "bt"..guid()
if picurl==nil then
local tmp={
LinearLayout ,
elevation = "5dp",
layout_width = 'match_parent' ,
layout_height = "30dp" , {
LinearLayout ,
layout_width = "fill_parent" ,
gravity = "center" ,
background = buttonBG(),
onClick = function ()
MX.controlWater(_ENV [tid],300)
luajava.newThread (function ()
vibra:vibrate(8)
pcall (func)
end
) : start ()
end,
{
TextView ,
id=luajava.newId(tid.."t"),
text = txt ,
layout_height = "26dp" ,
textColor = "#ffffff",
textSize = "16sp" ,
gravity = "center",
layout_width = "wrap_content" ,
} ,
}
}
_ENV[tid] = luajava.loadlayout (
tmp)
else
local tmp={
LinearLayout ,
elevation = "5dp",
layout_width = 'fill_parent' ,
layout_height = "32dp" , {
LinearLayout ,
layout_width = "fill_parent" ,
gravity = "center_horizontal" ,
layout_marginTop = "4dp" ,
layout_marginBottom = "4dp" ,
background = buttonBG(),
onClick = function ()
MX.controlWater(_ENV [tid],300)
luajava.newThread (function ()
vibra:vibrate(8)
pcall (func)
end
) : start ()
end
,
{ImageView,
background=获取图片(picurl),
layout_height="26dp",
layout_width="26dp",
layout_marginLeft="-30dp",
},
{
TextView ,
text = txt ,
id=luajava.newId(tid.."t"),
layout_marginLeft="10dp",
layout_height = "wrap_content" ,
padding = "2dp",
textColor = "#ffffff",
textSize = "16sp" ,
gravity = "center",
layout_width = "wrap_content" ,
} ,
}
}
_ENV [tid] = luajava.loadlayout (
tmp)
end
luajava.getIdValue(tid.."t"):setTypeface(typeface)
return _ENV [tid]
end
function MX.text(txt,color,size)
if not txt then txt = "未设置文字" end
if not color then color = "#ffffff" end
if not size then size = "12sp" end
local rest=luajava.loadlayout(
{
TextView,
text = txt,
textSize = size,
textColor = color,
gravity="left",
layout_width = "wrap_content",
})
rest:setTypeface(typeface)
return rest
end
function MX.flashtext(a,b)
if not b then
b = "11sp"
end
flashtext=luajava.loadlayout{ShimmerTextView,
Typeface=font,
text=a,
textSize=b,
textColor="#FFC42C",
reflectionColor='#000000',
gravity='center',
layout_height='20dp',
layout_width='match_parent',
}
return flashtext
end
function MX.image(img,height,width,pad,func)
if not func then func=function() end end
if not pad then pad="0dp" end
if not height then height="80dp" end
if not width then width="80dp" end
return luajava.loadlayout({
LinearLayout,
layout_height="wrap_content",
layout_width="fill_parent",
gravity="center",
{
ImageView,
layout_height=height,
layout_width=width,
padding=pad,
src=获取图片(img),
onClick=function() luajava.newThread(func):start() end,
}})
end
corb = true
function 开关(name,func1,func2)
if func1 == nil then func1 = "" end
if func2 == nil then func2 = "" end
if type(func1) == "function" then
return function()
namers = _ENV[name]
if namers ~= "开" then
_ENV[name] = "开"
pcall(func1)
else
_ENV[name] = "关"
pcall(func2)
end
end
end
end
function tuichu()
window:removeView(floatWindow)
luajava.setFloatingWindowHide(false)
bloc("end")
end
checkon=getRes("radioon")
checkoff=getRes("radiooff")
radiog={}
function MX.radio (cklist)
local rid=guid()
radiog[rid]={}
rest = {
LinearLayout ,
layout_width = 'match_parent' ,
layout_height = "wrap_content" ,
layout_marginTop = "10dp" ,
gravity = "top" ,
orientation = "vertical" ,
}
if type (cklist [1]) == "string" then
local tmp=luajava.loadlayout({
TextView ,
gravity = "center" ,
padding="5dp",
text = cklist[1],
textSize = "17sp" ,
textColor = "#161616" ,
layout_width = 'fill_parent' ,
layout_height = 'wrap_content' ,
layout_marginLeft = "4dp" ,
layout_marginRight = "5dp" ,
layout_marginTop = "0dp" ,
layout_marginBottom = "0dp" ,
})
tmp:setTypeface(typeface)
rest [# rest + 1] = tmp
end
local restt={
LinearLayout ,
layout_width = 'match_parent' ,
layout_height = "wrap_content" ,
layout_marginTop = "1dp" ,
gravity = "top" ,
orientation = "vertical" ,
background=getVerticalBG({0xbb161616,0xbb161616},15),
padding={"0dp","14dp","0dp","10dp"},
}
for i = 2 , # cklist do
local name = cklist [i] [1]
local func1 = cklist [i] [2]
local func2 = cklist [i] [3]
local nid = cklist [i] [4]
if type (func1) == "table" then
os.exit ()
end
if not name then
name = "未设置"
end
nid = name..guid ()
radiog[rid][nid]=false
local func = radin(rid,nid,func1)
local tid = nid..guid ()
local tmp=luajava.loadlayout({
TextView ,
gravity = "top" ,
text = name ,
textColor = "#ffffff" ,
textSize="16sp",
layout_width = 'wrap_content' ,
layout_height = 'wrap_content' ,
layout_marginLeft = "0dp" ,
layout_marginRight = "5dp" ,
})
tmp:setTypeface(typeface)
_ENV [tid] = luajava.loadlayout ( {
LinearLayout ,
layout_width = '250dp' ,
layout_height = "30dp" ,
layout_marginTop = "5dp" ,
layout_marginBottom = "15dp" ,
layout_marginLeft = "4dp" ,
layout_marginRight = "10dp" ,
gravity = "center_vertical" ,
onClick = function ()
MX.controlWater (_ENV [tid],200)
func()
end,
{
ImageView ,
id = luajava.newId (nid) ,
layout_width = '20dp' ,
layout_height = "20dp" ,
layout_marginLeft = "5dp" ,
layout_marginRight = "10dp" ,
background = "/sdcard/MX/图片/radiooff" ,
} ,tmp
})
restt [# restt + 1] = _ENV [tid]
end
rest [# rest + 1] = restt
local rest=luajava.loadlayout(rest)
return rest
end
function radin(rid,nid,func)
return function()
for k,v in pairs(radiog[rid]) do
luajava.getIdValue(k):setBackground(checkoff)
if k==nid and v~=true then
luajava.getIdValue(k):setBackground(checkon)
v=true
luajava.newThread(function()
vibra:vibrate(4)
func()
end):start()
end
end
end
end
hardv1=getRes("star2")
hardv2=getRes("star1")
function hardware()
if hdw then
hdw=false
hardv:setBackground(hardv2)
parti = luajava.post(particle)
luajava.post(function() canv:addView(parti) end)
else
hdw=true
hardv:setBackground(hardv1)
luajava.post(function() canv:removeView(parti) end)
parti:destroy()
parti=nil
end
end
function MX.seek (name , bian , smin , smax , nows)
if _ENV [bian] == nil then
_ENV [bian] = nows
else
gg.alert("seek控件的变量名称:"..bian.."重复!\n请换一个名称") os.exit()
end
if not name then
name = "未设置"
end
local names = name..guid ()
local shuzhi=luajava.loadlayout({
TextView ,
gravity = "center" ,
text = tostring(nows) ,
id = luajava.newId (names) ,
layout_width = '50dp' ,
layout_marginLeft = "5dp" ,
layout_marginRight = "0dp" ,
})
local tmp1=luajava.loadlayout({TextView,
background=getVerticalBG({0xeeffffff,0xeeffffff},15,8,0xff161616),
layout_height="30dp",
layout_width="30dp",
gravity="center",
text="减",
textColor="#000000",
onClick=function()
vibra:vibrate(4)
if _ENV[bian]>smin then
_ENV[bian]=_ENV[bian]-1
luajava.getIdValue(names):setText(tostring(_ENV[bian]))
end
end,
})
local tmp2=luajava.loadlayout({TextView,
background=getVerticalBG({0xeeffffff,0xeeffffff},15,8,0xff161616),
layout_height="30dp",
layout_width="30dp",
gravity="center",
text="加",
textColor="#000000",
onClick=function()
vibra:vibrate(4)
if _ENV[bian]=9 then
luajava.post(function()
luajava.getIdView(gid):removeView(luajava.getIdView(gid..i))
end)
end
end
else
shous[gid]=false
luajava.post(function()
luajava.getIdView(gid):removeView(luajava.getIdView(gid..ii))
for i=1,ii-1 do
if i>=9 then
luajava.getIdView(gid):addView(luajava.getIdView(gid..i))
end
end
luajava.getIdView(gid):addView(luajava.getIdView(gid..ii))
end)
luajava.getIdView(gid..ii.."p"):setRotation(180)
end
end
opou=getRes("opou")
function MX.checkbox(gid,ii)
local func = function() 收起ck(gid,ii) end
if not name then name = "未设置" end
switchs[gid..ii] = {
LinearLayout,
id=luajava.newId(gid..ii),
layout_width = '70dp',
layout_height = "wrap_content",
layout_marginTop = "1dp",
layout_marginBottom = "1dp",
padding = "1dp",
{
LinearLayout,
padding="3dp",
onClick = func,
layout_width = 'fill_parent',
layout_height = "wrap_content",
gravity = "center_horizontal",
orientation="vertical",
--background=getVerticalBG({0xffFFFDF2,0xddffffff,0xffFFFDF2},15,8,0xffFFDA71),
{
ImageView,
id = luajava.newId(gid..ii.."p"),
src = opou,
background=ckbg,
gravity="center",
layout_width = '30dp',
layout_height = '30dp',
padding = "8dp",
},{
TextView,
Typeface=font,
id=luajava.newId(gid..ii.."t"),
gravity = "center",
text = "展开",
textColor="#FF8C8C8C",
textSize = "9sp",
--layout_marginLeft="8dp",
layout_width = 'match_parent',
layout_weight=1,
},
}
}
return switchs[gid..ii]
end
function 开关6(name,func1,func2,nid)
local sname = nid
local localname=name
name = name..guid()
_ENV[name] = "关"
if func1 == nil then func1 = "" end
if func2 == nil then func2 = "" end
if type(func1) == "function" then
return function()
namers = _ENV[name]
if namers ~= "开" then
vibra:vibrate(9)
luajava.runUiThread(function()
luajava.getIdValue(nid.."t"):setTextColor(0xff000000)
luajava.getIdValue(nid.."t2"):setTextColor(0xff000000)
luajava.getIdValue(nid.."p"):setColorFilter(0xff000000)
colorvs[nid.."p"]={true,"img"}
colorvs[nid.."t"]={true,"txt"}
colorvs[nid.."t2"]={true,"txt"}
OP.controlWater(switchs[nid],300)
end)
_ENV[name] = "开"
pcall(func1)
else
vibra:vibrate(9)
luajava.runUiThread(function()
luajava.getIdValue(nid.."t"):setTextColor(0xffFF8C8C8C)
luajava.getIdValue(nid.."p"):setColorFilter(0xffFF8C8C8C)
luajava.getIdValue(nid.."t2"):setTextColor(0xffFF8C8C8C)
colorvs[nid.."p"]={false,"img"}
colorvs[nid.."t"]={false,"txt"}
colorvs[nid.."t2"]={false,"txt"}
OP.controlWater(switchs[nid],300)
end)
_ENV[name] = "关"
pcall(func2)
end
end
end
end
function 卡片开关1(name,func1,func2,nid)
local sname = nid
local localname=name
name = name..guid()
_ENV[name] = "关"
if func1 == nil then func1 = "" end
if func2 == nil then func2 = "" end
if type(func1) == "function" then
return function()
namers = _ENV[name]
if namers ~= "开" then
vibra:vibrate(9)
luajava.runUiThread(function()
luajava.getIdValue(nid.."t"):setTextColor(0xff000000)
luajava.getIdValue(nid.."p"):setColorFilter(0xff000000)
colorvs[nid.."p"]={true,"img"}
colorvs[nid.."t"]={true,"txt"}
OP.controlWater(switchs[nid],300)
end)
_ENV[name] = "开"
pcall(func1)
else
vibra:vibrate(9)
luajava.runUiThread(function()
luajava.getIdValue(nid.."t"):setTextColor(0xffFF8C8C8C)
luajava.getIdValue(nid.."p"):setColorFilter(0xffFF8C8C8C)
colorvs[nid.."p"]={false,"img"}
colorvs[nid.."t"]={false,"txt"}
OP.controlWater(switchs[nid],300)
end)
_ENV[name] = "关"
pcall(func2)
end
end
end
end
function MX.card(卡片)
if #卡片==0 then return nil end
local rest = {
LinearLayout,
layout_width = 'fill_parent',
layout_height = "wrap_content",
gravity = "center",
orientation="vertical",
layout_marginTop="5dp",
layout_marginBottom="5dp",
}
for i = 1, #卡片,2 do
local tempTable = {LinearLayout,
layout_width = 'fill_parent',
layout_height = "wrap_content",
gravity = "left",
orientation="horizontal"
}
for j = 0, 1 do
if 卡片[i + j] ~= nil then
local name = 卡片[i + j][1]
local func1 = 卡片[i + j][2]
local func2 = 卡片[i + j][3]
local name2 = 卡片[i + j][4]
if not name then name = "未设置" end
local gid=guid()
rstt = MX.intcard(name,name2,func1,func2,1,gid)
table.insert(tempTable, rstt)
else
table.insert(tempTable, {LinearLayout,
layout_width = 'match_parent',
layout_weight=1,})
end
end
table.insert(rest, tempTable)
end
return luajava.loadlayout(rest)
end
界面宽度="250dp"
界面长度="90dp"
OP={}
OP.controlWater = function(control,time)
luajava.runUiThread(function()
import "android.animation.ObjectAnimator"
ObjectAnimator():ofFloat(control,"scaleX",{1, 0.8, 0.9, 1}):setDuration(time):start()
ObjectAnimator():ofFloat(control,"scaleY",{1,0.8,0.9,1}):setDuration(time):start()
end) end
function particletext(text1,text2,text3,color)
local webView = luajava.webView(function(webView)
webView:loadData([[
]]..text1..[[纯CSS实现文本背景扫光效果