draw.text('作者秋河and冷少', 200,200)draw.setColor('#FF0000') draw.text('4.8.8.3买车认准冷少', 100,100)draw.setColor('#0000FF') if (rlgg.VERSION < 2.09) then gg.alert('请使用大于等于2.09版本的RLGG') os.exit() end local colorvs = {} --控件颜色 local 音量键=true local 摇一摇=true local material3 = require 'material3' local context=material3:getContext() baseWindow=require('floatingWindowManager2') import("com.google.android.material.card.MaterialCardView") import("com.google.android.material.materialswitch.MaterialSwitch") import("com.google.android.material.slider.Slider") import("com.google.android.material.progressindicator.LinearProgressIndicator") import("com.google.android.material.progressindicator.CircularProgressIndicator") import("com.google.android.material.snackbar.Snackbar") import("com.google.android.material.dialog.MaterialAlertDialogBuilder") import("com.google.android.material.tabs.TabItem") import("com.google.android.material.tabs.TabLayout") import("com.google.android.material.textview.MaterialTextView") import("android.animation.LayoutTransition") import("android.view.animation.TranslateAnimation") import("android.content.res.ColorStateList") import("androidx.coordinatorlayout.widget.CoordinatorLayout") import("androidx.recyclerview.widget.RecyclerView") import("android.view.animation.LayoutAnimationController") import("android.view.animation.ScaleAnimation") import("android.view.animation.Animation") YoYoImpl=luajava.getYoYoImpl() baseWindow:darkMode() baseWindow:lightMode() context:setTheme(R.style.AppTheme) loadingBox = getLoadingBox("正在更新...") loadingBox['显示']() local window = require('windowManager') local ui = require('ui') vibra = context:getSystemService(Context.VIBRATOR_SERVICE) changan = {} local changan = changan local android = import('android.*') function write(fileName, content) file.write(fileName, content) end function panduan(rec) fille,err = io.open(rec) if fille == nil then return false else return true end end function read(fileName) f = assert(io.open(fileName, 'r')) content = f:read("*all") f:close() return content end function wtcf(lujing,neirong) write("/sdcard/林默/配置文件/"..lujing,neirong) end function rdcf(lujing) return read("/sdcard/林默/配置文件/"..lujing) end 开 = "开" 关 = "关" function checkimg(tmp,ii) if file.length("/sdcard/林默/资源/"..tmp[1],false)<200 then gg.toast("正在下载资源"..ii.."/"..#ckimg.."\n请耐心等待") luajava.download(tmp[2],"/sdcard/林默/资源/"..tmp[1]) end end ckimg = { {'hei_right','https://xuanmo.xyz/f/6RM7fj/hei_right'}, {'heic','https://xuanmo.xyz/f/JAxaIM/heic'}, {'heir','https://xuanmo.xyz/f/WDNLFG/heir'}, {'heis','https://xuanmo.xyz/f/YDB8CY/heis'}, {'heix','https://xuanmo.xyz/f/qW3nCd/heix'}, {'heisuo','https://xuanmo.xyz/f/nReJHA/heisuo'}, } for i = 1,#ckimg do checkimg(ckimg[i],i) end function 获取图片(txt) txt = string.url(txt,"de") ntxt = string.sub(string.gsub(txt,"/","-"),-10,-1) if string.find(tostring(txt),"http") ~= nil then if panduan("/sdcard/林默/资源/"..ntxt) == false then file.download(txt,"/sdcard/林默/资源/"..ntxt) else if file.length("/sdcard/林默/资源/"..ntxt) <= 1 then file.download(txt,"/sdcard/林默/资源/"..ntxt) end end txt = "/sdcard/林默/资源/"..ntxt end return luajava.getBitmapDrawable(txt) end function getRes(x) return 获取图片("/sdcard/林默/资源/"..x) end 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 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 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 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_TOUCH_MODAL -- 焦点设置Finish layoutParams.gravity = Gravity.TOP|Gravity.LEFT -- 重力设置 layoutParams.width = LayoutParams.WRAP_CONTENT -- 布局宽度 layoutParams.height = LayoutParams.WRAP_CONTENT -- 布局高度 return layoutParams end slctb = getVerticalBG({0xffefefef,0xffefefef},10) slcta = getHorizontalBG({0xff0077ff,0xff975DFF},10) function getSelector() selector = luajava.getStateListDrawable() selector:addState({ android.R.attr.state_pressed }, slcta) -- 点击时候的背景 selector:addState({ -android.R.attr.state_pressed }, slctb) -- 没点击的背景 return selector end hanshu=function(v,event) local Action=event:getAction() if Action==MotionEvent.ACTION_DOWN then RawX=event:getRawX() RawY=event:getRawY() x=mainLayoutParams.x y=mainLayoutParams.y elseif Action==MotionEvent.ACTION_MOVE then mainLayoutParams.x=tonumber(x) +(event:getRawX() - RawX) mainLayoutParams.y=tonumber(y) +(event:getRawY() - RawY) window:updateViewLayout(floatWindow,mainLayoutParams) elseif Action==MotionEvent.ACTION_UP then end end function getTimeStamp(t) local str = os.date("%H:%M:%S",t) return str end function 获取图片(txt) txt = string.url(txt,"de") ntxt = string.sub(string.gsub(txt,"/","-"),-10,-1) if string.find(tostring(txt),"http") ~= nil then if panduan("/sdcard/林默/资源/"..ntxt) == false then file.download(txt,"/sdcard/林默/资源/"..ntxt) else if file.length("/sdcard/林默/资源/"..ntxt) <= 1 then file.download(txt,"/sdcard/林默/资源/"..ntxt) end end txt = "/sdcard/林默/资源/"..ntxt end return luajava.getBitmapDrawable(txt) end import'android.hardware.*'; local sensor = luajava.createProxy('android.hardware.SensorEventListener', { onSensorChanged = functions.debounce(function() if 摇一摇==false then return 0 end if qhkai~=0 then qhkai=0 huiz() luajava.runUiThread(function() floatWindow:setVisibility(View.VISIBLE) YoYoImpl:with("FadeIn"):duration(300):playOn(floatWindow) end) else qhkai=1 draw.remove() 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() end):start() end end,500) }) dexloader=dex.loadfile('/sdcard/林默/资源/classes3.dex') MySensorManager = dexloader:loadClass('yaocn.rlyun.yaoyiyao.MySensorManager') luajava.runOnUiThread(function() MySensorManager(context, sensor) end) changan.menu = function(sview) 菜单页数=#sview 当前分区={} 分区页数={} 侧边={} 功能区={} 顶边={ LinearLayout, layout_height='match_parent', layout_width='75dp', orientation='vertical', gravity='center', } beij=getHorizontalBG({0xffffffff,0xffffffff},12)--0xffe9e9e9,0xffe9e9e9 侧边ui={ LinearLayout, layout_width="130dp", layout_height='match_parent', background=getVerticalBG({0xffffffff,0xffffffff},0) } 顶边ui= { LinearLayout, layout_height='match_parent', layout_width='75dp', background=getCorner({0xffE6EDF5,0xffE6EDF5},12,0,0xffE6EDF5,12,0,0,12), orientation='vertical', gravity='center', { LinearLayout, layout_height='85dp', layout_width='75dp', orientation='vertical', gravity='center', {ImageView, layout_height='65dp', layout_width='65dp', src=获取图片(左上角图标), onClick=隐藏, },{ TextView, layout_width='match_parent', gravity='center', layout_marginTop="5dp", textSize='11sp', textColor='#000000', __onFinish=function(v) --v:setTypeface(typeface) timet=v luajava.startThread(function() while true do luajava.runUiThread(function() timet:setText(getTimeStamp(os.date())) end) gg.sleep(1000) end end) end, },}, { ScrollView, layout_height='match_parent', layout_width='75dp', 顶边 }} jmbg={} for i = 1,菜单页数 do 分区页数[i]= #sview[i] table.insert(顶边, { LinearLayout, layout_height='63dp', layout_width='75dp', onClick=function() 切换(i) end, orientation='vertical', gravity='center', { ImageView, layout_marginTop="5dp", layout_height='30dp', layout_width='30dp', onClick=function(view) 切换(i) end, src=获取图片(sview[i]['图片链接A']), colorFilter=0xFF70777F, },{ TextView, layout_height='16dp', layout_width='65dp', text=sview[i]['分页名字'], textColor='#000000', textSize='12sp', gravity='center', id='ding'..i, elevation='2dp', layout_margin='4dp', }}) 功能区[i]={} jmbg[i]={} local cebian = { LinearLayout, layout_height = "wrap_content", layout_marginLeft="0dp", layout_width = "130dp",--+90dp gravity = "center", orientation='vertical', { TextView, text = sview[i]['分页名字'], layout_marginTop="5dp", layout_margin="8dp", layout_marginRight="25dp", -- gravity = "Left", textSize = "16sp", textColor = "#000000", }, } local layoutm={ LinearLayout, id = "layoutm"..i, padding='4dp', layout_width = "match_parent", orientation = "vertical", gravity = "center_horizontal", } for j = 1,分区页数[i] do jmbg[i][j]={ getVerticalBG({0xFFD4E3F6,0xFFD4E3F6},12,3,0xFF536F78), getVerticalBG({0x00f7f8fa,0x00f7f8fa},0) } cebian[#cebian+1] = { LinearLayout, layout_height = "45dp", layout_width = "100dp", background=getVerticalBG({0x00f7f8fa,0x00f7f8fa},0), id = "jm"..i..j, onClick=function() 分区(j) end, {ImageView, layout_marginTop="5dp", layout_height='35dp', layout_width='35dp', src=获取图片(sview[i][j]['图片链接B']), colorFilter=0xFF70777F, }, { LinearLayout, layout_height = "45dp", layout_width = "60dp", layout_marginLeft="0dp", orientation='vertical', { TextView, text = sview[i][j]['分区名字'], layout_marginTop="4dp", layout_marginLeft="4dp", gravity = "Left", textSize = "12sp", textColor = "#000000", id = "wz"..i..j, onClick=function() 分区(j) end, }, { TextView, layout_marginLeft="4dp", text = sview[i][j]['描述'], textSize = "9sp", textColor = "#aaaaaa", }} } local menulayout={ LinearLayout, layout_width='match_parent', layout_height='wrap_content', visibility = "gone", orientation = "vertical", id='menu'..i..j, } for k,v in pairs(sview[i][j]['功能配置']) do table.insert(menulayout,v) end local menulayout=luajava.loadlayout(menulayout) 功能区[i][j]=menulayout table.insert(layoutm,menulayout) end 侧边[i] = luajava.loadlayout( { ScrollView, visibility='gone', layout_height = "match_parent", layout_width = "wrap_content", cebian }) table.insert(侧边ui,侧边[i]) local menus={ LinearLayout, layout_width = "285dp", layout_height = "295dp", visibility = "gone", orientation = "vertical", onTouch=hanshu, background={ GradientDrawable, --color = "#000000", cornerRadius = 0 }, { LinearLayout, layout_width = "285dp", layout_height = "25dp", { ImageView, padding = "5dp", layout_gravity="center|right", src = getRes("remove"), -- colorFilter=0xff000000, layout_width = "40dp", layout_height = "40dp", layout_marginRight = "9dp", layout_marginLeft="245dp", onClick = 隐藏, onTouch = hanshu, }, }, { ScrollView, fillViewport = "true", gravity = "center", layout_width = "match_parent", layout_height = "270dp", orientation = "horizontal", -- onTouch=hanshu, layoutm }} _ENV["layout"..i] = luajava.loadlayout(menus) end 顶边={LinearLayout, layout_width='match_parent', layout_height='match_parent', layout_marginRight='100dp', onClick=function() end, onTouch=hanshu, 顶边 } ckou = { LinearLayout, layout_width = "wrap_content", layout_height = "wrap_content", {LinearLayout, layout_height='match_parent', layout_width='200dp', 顶边ui, 侧边ui} } for i = 1,菜单页数 do ckou[#ckou+1] = _ENV["layout"..i] end ckou = luajava.loadlayout(ckou) floatWindow = { FrameLayout, id = "motion", elevation = "10dp", onTouch = hanshu, onClick = function() end, layout_width = "wrap_content", orientation = "vertical", gravity = "center_vertical", layout_height = "wrap_content", {LinearLayout, orientation='vertical', id='chuangk', visibility='gone', ckou, }, {LinearLayout, visibility='gone', id = "control", {LinearLayout, layout_height='45dp', layout_width='95dp', gravity='center_vertical', onClick=隐藏, onTouch=hanshu, layout_margin='3dp', elevation='3dp', background=getVerticalBG({0xffE6EDF5,0xffE6EDF5},18,3,0xFF536F78), { ImageView, src=获取图片(悬浮窗图标), layout_height='40dp', layout_width='40dp', padding='2dp', id = "control2", layout_marginLeft='0dp', }, { TextView, layout_width='match_parent', layout_weight=1, text=小悬浮窗文字, gravity='center', textSize='12sp', textColor=0xFF536F78, layout_marginRight='5dp', } } } } local function invoke() local ok local RawX, RawY, x, y mainLayoutParams = getLayoutParams() floatWindow = luajava.loadlayout(floatWindow) local function invoke2() window:addView(floatWindow, mainLayoutParams) block('end') end local runnable = luajava.getRunnable(invoke2) local handler = luajava.getHandler() handler:post(runnable) block('join') local isMove end invoke(swib1,swib2) 切换(1) 分区(1) 隐藏() gg.setVisible(false) luajava.setFloatingWindowHide(true) qhkai = 0 qiehuan = function() if qhkai == 0 then qhkai = 1 draw.remove() luajava.runUiThread(function() YoYoImpl:with("FadeOut"):duration(300):playOn(floatWindow) end) gg.sleep(400) luajava.runUiThread(function() floatWindow:setVisibility(View.GONE) end) else qhkai = 0 huiz() luajava.runUiThread(function() floatWindow:setVisibility(View.VISIBLE) end) luajava.runUiThread(function() YoYoImpl:with("FadeIn"):duration(500):playOn(floatWindow) end) end end huiz() --draw.text('.', -9200,-9200) while true do if tuichu == 1 then break end jianting3(qiehuan) gg.sleep(300) end luajava.setFloatingWindowHide(false) end 当前ui = 1 function 分区(x) 当前分区[当前ui]=x luajava.runUiThread(function() for i=1,分区页数[当前ui] do _ENV['menu'..当前ui..i]:setVisibility(View.GONE) _ENV['wz'..当前ui..i]:setTextColor(0xFF000000) _ENV['jm'..当前ui..i]:setBackground(jmbg[当前ui][i][2]) end _ENV['menu'..当前ui..当前分区[当前ui]]:setVisibility(View.VISIBLE) _ENV['wz'..当前ui..当前分区[当前ui]]:setTextColor(0xff000000) _ENV['jm'..当前ui..当前分区[当前ui]]:setBackground(jmbg[当前ui][当前分区[当前ui]][1]) end) end function 切换(x) 当前ui = x luajava.runUiThread(function() if 当前分区[当前ui]==nil then 分区(1) end for i = 1,菜单页数 do _ENV["ding"..i]:setTextColor(0xFF464D57)--分区字体未点击颜色 _ENV["layout"..i]:setVisibility(View.GONE) 侧边[i]:setVisibility(View.GONE) end _ENV["ding"..当前ui]:setTextColor(0xFF1B565A)--分区字体点击颜色 _ENV["layout"..当前ui]:setVisibility(View.VISIBLE) 侧边[当前ui]:setVisibility(View.VISIBLE) end) end 显示 = 0 beij2 = luajava.loadlayout({ GradientDrawable, color = "#001E1C27", cornerRadius = 10 }) function controlSmall(control,time) luajava.runOnUiThread(function() 缩放动画=ScaleAnimation(1,0,1,0,Animation.RELATIVE_TO_SELF,0,Animation.RELATIVE_TO_SELF,0) -- 缩放动画=RotateAnimation(0, 360, Animation.RELATIVE_TO_SELF, 0, Animation.RELATIVE_TO_SELF, 0) 缩放动画:setDuration(time) control:startAnimation(缩放动画) end) end function controlBig(control,time) luajava.runOnUiThread(function() 缩放动画=ScaleAnimation(0,1,0,1,Animation.RELATIVE_TO_SELF,0,Animation.RELATIVE_TO_SELF,0) 缩放动画:setDuration(time) -- 缩放动画:setInterpolator(BounceInterpolator()) control:startAnimation(缩放动画) end) end 显示 = 0 function 隐藏() luajava.runUiThread(function() if tonumber(tostring(chuangk:getVisibility())) == 8.0 then control:setVisibility(View.GONE) 显示 = 1 chuangk:setVisibility(View.VISIBLE) _ENV["layout"..当前ui]:setVisibility(View.VISIBLE) YoYoImpl:with("FadeIn"):duration(500):playOn(floatWindow) floatWindow:setBackground(beij) mainLayoutParams.flags = LayoutParams.FLAG_NOT_TOUCH_MODAL window : updateViewLayout (floatWindow , mainLayoutParams) changan.controlRotation2(control2,2000) else chuangk:setVisibility(View.GONE) floatWindow:setBackground(beij2) mainLayoutParams.flags = LayoutParams.FLAG_NOT_FOCUSABLE window : updateViewLayout (floatWindow , mainLayoutParams) control:setVisibility(View.VISIBLE) 显示 = 0 _ENV["layout"..当前ui]:setVisibility(View.GONE) changan.controlRotation2(control2,2000) end end) end changan.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 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 yltype = 0 function jianting3(func) if 音量键==false then return 0 end 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 qhkai = 0 qiehuan = function() if qhkai == 0 then qhkai = 1 draw.remove() luajava.runUiThread(function() YoYoImpl:with("FadeOut"):duration(300):playOn(floatWindow) end) gg.sleep(300) luajava.runUiThread(function() floatWindow:setVisibility(View.GONE) end) else qhkai = 0 huiz() luajava.runUiThread(function() floatWindow:setVisibility(View.VISIBLE) YoYoImpl:with("FadeIn"):duration(500):playOn(floatWindow) 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 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 local function exit() tuichu = 1 luajava.setFloatingWindowHide(false) luajava.post(function() window:removeView(floatWindow) end) end setExitEvent(exit) changan.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 changan.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 changan.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 changan.controlRotation9 = function(control, time,t) luajava.runUiThread(function() import "android.view.animation.Animation" import "android.animation.ObjectAnimator" xuanzhuandonghua = ObjectAnimator:ofFloat(control, "rotation", { time,t }) xuanzhuandonghua:setRepeatCount(0) xuanzhuandonghua:setRepeatMode(Animation.RESTART) xuanzhuandonghua:setDuration(400) xuanzhuandonghua:start() end) end function getButtonBG() local selector = luajava.getStateListDrawable() selector:addState({ android.R.attr.state_pressed }, getVerticalBG({0x55d7d7d7,0x55d7d7d7},15)) selector:addState({ -android.R.attr.state_pressed }, getVerticalBG({0xFFDCDFE4,0xFFDCDFE4},15)) return selector end buts={} heir=getRes("heir") function changan.button(name, func, color) local nid = name..string.randomUUID(true) if not color then color = "0xff161616" end return { LinearLayout, id = luajava.newId(nid), layout_width='fill_parent', layout_height="40dp", layout_margin="4dp", gravity = "center", elevation = "2dp", background = getButtonBG(), onClick = function() changan.controlWater(luajava.getIdView(nid), 300) luajava.newThread(function() pcall(func) end):start() end, { TextView, text = name, textColor = color, textSize = "13sp", layout_weight = 1, layout_margin="10dp", layout_width = 'fill_parent', }, { ImageView, layout_weight = 1, src = "/sdcard/林默/资源/heir", layout_marginRight = "10dp", layout_height = "35dp", layout_width = "35dp", } } end function changan.switch(name,func1,func2) local nid=name..string.randomUUID(true) colorvs[#colorvs+1]={"switch",nid} if ""..name=="摇一摇隐藏UI" or ""..name=="音量键隐藏UI" then ztai=true else ztai=false end return{ LinearLayout, layout_width='fill_parent', layout_height="40dp", gravity="center", elevation="2dp", layout_margin="4dp", background={GradientDrawable,color=0xFFDCDFE4,cornerRadius=15}, paddingRight="6dp", { TextView, text=name, ellipsize="marquee", singleLine=true, selected=true, textColor="0xff161616", textSize="13sp", layout_weight=1, layout_width='fill_parent', layout_marginLeft="10dp", layout_marginRight="20dp", }, { MaterialSwitch, checked=ztai, id=luajava.newId(nid), -- TrackTintList=ColorStateList({{android.R.attr.state_checked}},{0xFF0062FF}), trackTintList=(ColorStateList({{android.R.attr.state_checked},{}},{"0xff"..RGBcolor,0x28FFFFFF})), thumbTintList=(ColorStateList({{android.R.attr.state_checked},{-android.R.attr.state_checked}},{0xFFFFFFFF,0xFF4B484F})), layout_weight=1, layout_marginTop="-3.5dp", layout_marginBottom="-3.5dp", layout_width='match_parent', layout_height='wrap_content', onCheckedChange=function(compoundButton,isChecked) if isChecked then luajava.newThread(function() pcall(func1) end):start() else luajava.newThread(function() pcall(func2) end):start() end end } } end function changan.intcheck(name,func1,func2) nid=name..string.randomUUID(true) colorvs[#colorvs+1]={"check",nid} if not name then name="未设置" end check={ LinearLayout, layout_width='match_parent', layout_height="42dp", layout_weight=1, layout_marginTop="1dp", layout_marginBottom="1dp", { CheckBox, id=luajava.newId(nid), buttonTintList=ColorStateList({{android.R.attr.state_checked},{-android.R.attr.state_checked}},{"0xff"..RGBcolor,0xff49454F}), layout_gravity="center", layout_width='match_parent', layout_height='wrap_content', text=name, onCheckedChange=function(compoundButton,isChecked) if isChecked then luajava.newThread(function() pcall(func1) end):start() else luajava.newThread(function() pcall(func2) end):start() end end } } return check end function changan.check(cklist) if #cklist==0 then return nil end local rest={ LinearLayout, layout_width='fill_parent', layout_height="wrap_content", layout_marginRight="4dp", layout_marginLeft="4dp", layout_marginTop="3.5dp", layout_marginBottom="3.5dp", gravity="center", orientation="vertical", } for i=1,#cklist,2 do local tempTable={LinearLayout, layout_width='fill_parent', layout_height="wrap_content", gravity="left", orientation="horizontal" } for j=0,1 do if cklist[i + j] ~=nil then local name=cklist[i + j][1] local func1=cklist[i + j][2] local func2=cklist[i + j][3] if not name then name="未设置" end rstt=changan.intcheck(name,func1,func2) table.insert(tempTable,rstt) else table.insert(tempTable,{LinearLayout, layout_width='match_parent', layout_weight=1,}) end end table.insert(rest,tempTable) end return rest end function visi (tid , ttid) vibra:vibrate(4) local tview = luajava.getIdValue (tid) local ttview = luajava.getIdValue (ttid) if not tview then return 0 end if tonumber (tostring (tview : getVisibility ())) == 8.0 then tview : setVisibility (View.VISIBLE) --YoYoImpl:with("FadeIn"):duration(200):playOn(boxes[tid]) changan.controlRotation9(boxpic[tid],0,90) boxpic[tid]:setColorFilter("0xff"..RGBcolor) else tview : setVisibility (View.GONE) --changan.controlWater (_ENV [tid.."6"] , 200) changan.controlRotation9(boxpic[tid],90,0) boxpic[tid]:setColorFilter(nil) end end boxes={} boxpic={} function changan.box(views) local tid="box"..string.randomUUID(true) colorvs[#colorvs+1]={"box",tid} boxpic[tid]=luajava.loadlayout { ImageView, src=getRes("hei_right"), layout_width="26dp", layout_height="26dp", ColorFilter="0xff161616", } local ttid=tid.."6" firadio={ LinearLayout, layout_width='fill_parent', background=luajava.loadlayout{GradientDrawable,color=0xFFDCDFE4,cornerRadius=15}, elevation="3dp", layout_height="wrap_content", layout_margin="4dp", orientation="vertical", LayoutTransition=LayoutTransition() } if type(views[1])=="string" or type(views[1])=="number" then firadio[# firadio + 1]={ LinearLayout, layout_width='fill_parent', layout_height="47dp", gravity="center_vertical", { LinearLayout, layout_width='fill_parent', layout_height="40dp", layout_marginRight="4dp", layout_marginLeft="4dp", gravity="center_vertical", onClick=function() visi(tid,ttid) end, background=getButtonBG(), { TextView, gravity="top", text=views[1], textColor="0xff161616", textSize="13sp", layout_weight=1, layout_marginTop="10dp", layout_marginBottom="10dp", layout_width='fill_parent', layout_marginLeft="10dp", layout_marginRight="20dp", }, { LinearLayout, padding={"0dp","0dp","10dp","0dp"}, layout_width="30dp", layout_height="30dp", gravity="center", boxpic[tid], } } }else gg.alert("changan.box 的 table 内第一个元素必须是 string") os.exit() end radios={ LinearLayout, layout_marginLeft="5dp", layout_marginRight="5dp", orientation="vertical", visibility="gone", id=luajava.newId(tid), layout_width='fill_parent', } for i=2,# views do radios[# radios + 1]=views[i] end boxes[tid]=luajava.loadlayout(radios) firadio[# firadio + 1]=boxes[tid] return firadio end function changan.edit(name,hint) _ENV[name]=name..string.randomUUID(true) if not hint then hint=name end return { LinearLayout, layout_width='fill_parent', layout_height="44dp", { EditText, background=getButtonBG(), gravity="center", hint=hint, textColor="#161616", textSize="13sp", elevation="2dp", layout_height="38dp", layout_gravity="center", layout_marginRight="4dp", layout_marginLeft="4dp", id=luajava.newId(_ENV[name]), layout_width='match_parent', } } end function changan.getedit(name) edit=tostring(luajava.getIdValue(_ENV[name]):getText()) return edit end function changan.seek(name,variable,min,max,now) local nid=name..string.randomUUID(true) colorvs[#colorvs+1]={"slider",nid} return{ LinearLayout, layout_width='fill_parent', layout_height="wrap_content", gravity="center", elevation="2dp", layout_margin="4dp", background={GradientDrawable,color=0xFFDCDFE4,cornerRadius=15}, paddingRight="6dp", { TextView, text=name, textColor="0xff161616", textSize="13sp", layout_weight=1, layout_width='150dp', layout_marginLeft="10dp", layout_marginRight="5dp", }, { Slider, id=luajava.newId(nid), trackStopIndicatorSize="0dp", layout_weight=1, stepSize=1, value=now, valueTo=max, valueFrom=min, trackHeight="13dp", ThumbHeight="20dp", tickVisible=false, thumbWidth="4dp", layout_marginTop="-3.5dp", layout_marginBottom="-3.5dp", layout_width='match_parent', layout_height='wrap_content', LabelBehavior = "floating",--悬浮显示标签 TrackActiveTintList=ColorStateList({{}},{"0xff"..RGBcolor}), TrackInactiveTintList=ColorStateList({{}},{"0x55"..RGBcolor}), ThumbTintList=ColorStateList({{}},{"0xff"..RGBcolor}), onClick = function() luajava.newThread(function() func() end):start() end, addOnChangeListener=function(slider,value,fromUser) _ENV[variable]=value end }, } end RGBcolor = "0062ff" 左上角图标 = "https://i.hd-r.cn/89bfd438-e5fd-4396-8b3a-b385e76a61b5.jpg" 小悬浮窗文字="大午辅助" 悬浮窗图标 = "https://i.hd-r.cn/89bfd438-e5fd-4396-8b3a-b385e76a61b5.jpg" function huiz()---绘制必须放在这里面 end 第一页 = {--创建分页,结尾调用 ['分页名字']="实用区", ['图片链接A']="https://i.hd-r.cn/89bfd438-e5fd-4396-8b3a-b385e76a61b5.jpg", [1]={--第一分区 ['分区名字']="马力区", ['图片链接B']="https://i.hd-r.cn/89bfd438-e5fd-4396-8b3a-b385e76a61b5.jpg", ['描述']="请购买v8.4.0", ['功能配置']={ changan.switch( "选择进程", function() gg.setProcessX() end, function() end), changan.switch( "2000匹", function() gg.clearResults() gg.setRanges(16384) gg.searchNumber("360", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(100) gg.editAll("2000", gg.TYPE_FLOAT) gg.clearResults() gg.clearResults() gg.setRanges(16384) gg.searchNumber("500", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(100) gg.editAll("3000", gg.TYPE_FLOAT) gg.clearResults() end, function() end), changan.switch( "斜秒专用", function() gg.clearResults() gg.setRanges(16384) gg.searchNumber("360", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(100) gg.editAll("1511", gg.TYPE_FLOAT) gg.clearResults() gg.clearResults() gg.setRanges(16384) gg.searchNumber("500", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(100) gg.editAll("2259", gg.TYPE_FLOAT) gg.clearResults() gg.clearResults() gg.setRanges(16384) gg.searchNumber("6300", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(100) gg.editAll("2022", gg.TYPE_FLOAT) gg.clearResults() gg.clearResults() gg.setRanges(16384) gg.searchNumber("3400", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(100) gg.editAll("2011", gg.TYPE_FLOAT) gg.toast("成功") gg.clearResults() end, function() end), changan.check({ { "自定义齿轮", function() gg.clearResults() gg.setRanges(32) gg.searchNumber("6", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(100) -- 补上这行,核心缺失代码 D = gg.prompt({'请输入你要的齿轮比'},{'输入'}, {'数字'}) -- 判断用户有没有输入内容,防止空值报错 if D[1] ~= nil and tonumber(D[1]) ~= nil then gg.editAll(D[1], gg.TYPE_FLOAT) gg.toast("修改成功") else gg.toast("输入无效,操作取消") end gg.clearResults() end, function() end }, }), }}, [2]={--第一分区 ['分区名字']="镀金区", ['图片链接B']="/sdcard/林默/资源/opo1", ['描述']="彩镀、暗镀、电镀", ['功能配置']={ changan.check({ { "彩镀", function() gg.alert("请先将镜面有反射拉满10秒钟后进行下一步操作") gg.sleep(10000) gg.alert("请去到换车页面10秒后刷新车辆") gg.sleep(10000) gg.clearResults() gg.setRanges(2) gg.searchNumber("1", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(99999) gg.editAll("-99;99;-125", gg.TYPE_FLOAT) gg.toast("没成功就再试一次,如果还是不成功就是车的问题") gg.clearResults() end, function() end }, { "暗镀", function() gg.alert("请先将镜面有反射拉满10秒钟后进行下一步操作") gg.sleep(10000) gg.alert("请去到换车页面10秒后刷新车辆") gg.sleep(10000) gg.clearResults() gg.setRanges(2) gg.searchNumber("1", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(99999) gg.editAll("-6", gg.TYPE_FLOAT) gg.toast("没成功就再试一次,如果还是不成功就是车的问题") gg.clearResults() end, function() end }, { "电镀", function() gg.alert("请先将镜面有反射拉满10秒钟后进行下一步操作") gg.sleep(10000) gg.alert("请去到换车页面10秒后刷新车辆") gg.sleep(10000) gg.clearResults() gg.setRanges(2) gg.searchNumber("1", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(99999) gg.editAll("99", gg.TYPE_FLOAT) gg.toast("没成功就再试一次,如果还是不成功就是车的问题") gg.clearResults() end, function() end }, }), }}, [3]={--第一分区 ['分区名字']="改套件", ['图片链接B']="/sdcard/林默/资源/opo1", ['描述']="套件", ['功能配置']={ } }, } 第二页 = { ['分页名字']="局内", ['图片链接A']="/sdcard/林默/资源/bm_ff", [1]={--第一分区 ['分区名字']="定飞", ['图片链接B']="/sdcard/林默/资源/opo1", ['描述']="无", ['功能配置']={ changan.switch( "升", function() gg.clearResults() gg.setRanges(32) gg.searchNumber("5000", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("5000", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(99999) gg.editAll("-30000", gg.TYPE_FLOAT) gg.clearResults() gg.clearResults() gg.clearResults() gg.setRanges(262207) gg.searchNumber("40000", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(99999) gg.editAll("1500000", gg.TYPE_FLOAT) gg.toast("成功") gg.clearResults() gg.clearResults() gg.setRanges(262207) gg.searchNumber("1500000", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(99999) gg.editAll("40000", gg.TYPE_FLOAT) gg.toast("成功") gg.clearResults() gg.searchNumber("20000", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(99999) gg.editAll("-30000", gg.TYPE_FLOAT) gg.toast("✓") gg.clearResults() gg.clearResults() gg.setRanges(32) gg.searchNumber("3.4E38", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(99999) gg.editAll("-30000", gg.TYPE_FLOAT) gg.toast("") gg.clearResults() end, function() gg.clearResults() gg.setRanges(32) gg.searchNumber("-30000", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(99999) gg.editAll("5000", gg.TYPE_FLOAT) gg.clearResults() end), changan.switch( "定", function() gg.clearResults() gg.setRanges(32) gg.searchNumber("-30000", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(99999) gg.editAll("-3.4e38", gg.TYPE_FLOAT) gg.clearResults() gg.clearResults() gg.setRanges(32) gg.searchNumber("20000", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(99999) gg.editAll("-3.4e38", gg.TYPE_FLOAT) gg.clearResults() end, function() gg.clearResults() gg.setRanges(32) gg.searchNumber("-3.4e38", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(99999) gg.editAll("5000", gg.TYPE_FLOAT) gg.clearResults() end), changan.switch( "降", function() gg.clearResults() gg.setRanges(32) gg.searchNumber("-30000", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(99999) gg.editAll("20000", gg.TYPE_FLOAT) gg.clearResults() gg.clearResults() gg.setRanges(32) gg.searchNumber("-3.4E38", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(99999) gg.editAll("20000", gg.TYPE_FLOAT) gg.clearResults() end, function() gg.clearResults() gg.setRanges(32) gg.searchNumber("20000", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(99999) gg.editAll("5000", gg.TYPE_FLOAT) gg.clearResults() end), } }, [2]={--第二分区 ['分区名字']="传送", ['图片链接B']="/sdcard/林默/资源/bm_gn", ['描述']="使用7.62mm子弹", ['功能配置']={ changan.switch( "传送", function() gg.setRanges(16384) gg.searchNumber("500", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(100) gg.editAll("-3.4e38", gg.TYPE_FLOAT) gg.toast("开了吧") end, function() gg.clearResults() gg.setRanges(16384) gg.searchNumber("-3.4e38", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(100) gg.editAll("500", gg.TYPE_FLOAT) gg.toast("开桂了") gg.clearResults() end), changan.switch( "稳定", function() gg.clearResults() gg.setRanges(16384) gg.searchNumber("1E7", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(100) gg.editAll("1.34E-37", gg.TYPE_FLOAT) gg.toast("成功") gg.clearResults() end, function() gg.clearResults() gg.setRanges(16384) gg.searchNumber("1.34E-37", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(100) gg.editAll("1E7", gg.TYPE_FLOAT) gg.toast("成功") gg.clearResults() end), } }, } 第三页={ ['分页名字']='无', ['图片链接A']="/sdcard/林默/资源/bm_mh", [1]={ ['分区名字']='无', ['图片链接B']="/sdcard/林默/资源/opo1", ['描述']="无", ['功能配置']={ } }, [2]={ ['分区名字']='无', ['图片链接B']="/sdcard/林默/资源/opo1", ['描述']="无", ['功能配置']={ } }, [3]={ ['分区名字']='无', ['图片链接B']="/sdcard/林默/资源/opo1", ['描述']="无", ['功能配置']={ } }, [4]={ ['分区名字']='', ['图片链接B']="/sdcard/林默/资源/opo1", ['描述']="无", ['功能配置']={ } }, [5]={ ['分区名字']='无', ['图片链接B']="/sdcard/林默/资源/opo1", ['描述']="无", ['功能配置']={ } }, [6]={ ['分区名字']='等待后续开发', ['图片链接B']="/sdcard/林默/资源/opo1", ['描述']="使用", ['功能配置']={ } }, } 第四页 = { ['分页名字']="设置", ['图片链接A']="/sdcard/林默/资源/bm_sz", [1]={--第一分区 ['分区名字']="脚本设置", ['图片链接B']="/sdcard/林默/资源/opo1", ['描述']="无", ['功能配置']={ changan.switch( "音量键隐藏UI", function() 音量键=true end, function() 音量键=false end), changan.switch( "摇一摇隐藏UI", function() 摇一摇=true end, function() 摇一摇=false end), changan.button( "退出", function() tuichu=1 end), } }, } if loadingBox~=nil then loadingBox['关闭']() end changan.menu({ 第一页,--调用上边的分页配置 第二页, 第三页, 第四页, })