懒人精灵吧 关注:365贴子:819
  • 13回复贴,共1

无障碍环境下滑动源码

只看楼主收藏回复

屏幕={宽度=0,高度=0}
屏幕.宽度,屏幕.高度 = getDisplaySize()--初始化参数
function bezier_curves(cp,t)
cx = 3.0 * (cp[2].x - cp[1].x);
bx = 3.0 * (cp[3].x - cp[2].x) - cx;
ax = cp[4].x - cp[1].x - cx - bx;
cy = 3.0 * (cp[2].y - cp[1].y);
by = 3.0 * (cp[3].y - cp[2].y) - cy;
ay = cp[4].y - cp[1].y - cy - by;
tSquared = t * t;
tCubed = tSquared * t;
result = {x= 0,y= 0}
result.x = (ax * tCubed) + (bx * tSquared) + (cx * t) + cp[1].x;
result.y = (ay * tCubed) + (by * tSquared) + (cy * t) + cp[1].y;
--print(result)
return result;
end
function RandomSwipe(qx, qy, zx, zy, time)---起点x,起点y,终点x,终点y,耗时
time=time or 2000
local gesture = Gesture:new() --创建一个手势滑动对象
local path = Path:new() --创建一个轨迹路径
path:setStartTime(100) --从触发事件的第100毫秒后开始滑动
path:setDurTime(time) --滑动的时间
local xxy = {time}
local point = {}
local dx0 = {x=qx,y=qy}
local dx1 = {x= rnd(qx - (屏幕.宽度 / 4) * 0.25, qx + (屏幕.宽度 / 4) * 0.25),y= rnd(qy, qy + 50)}
local dx2 = {x= rnd(zx - (屏幕.宽度 / 4) * 0.25, zx + (屏幕.宽度 / 4) * 0.25),y=


IP属地:河南来自Android客户端1楼2023-04-20 17:22回复
    额。。。好像内容过长没发全


    IP属地:河南来自Android客户端2楼2023-04-20 17:23
    收起回复
      2026-01-06 23:05:47
      广告
      不感兴趣
      开通SVIP免广告
      屏幕={宽度=0,高度=0}
      屏幕.宽度,屏幕.高度 = getDisplaySize()--初始化参数
      function bezier_curves(cp,t)
      cx = 3.0 * (cp[2].x - cp[1].x);
      bx = 3.0 * (cp[3].x - cp[2].x) - cx;
      ax = cp[4].x - cp[1].x - cx - bx;
      cy = 3.0 * (cp[2].y - cp[1].y);
      by = 3.0 * (cp[3].y - cp[2].y) - cy;
      ay = cp[4].y - cp[1].y - cy - by;
      tSquared = t * t;
      tCubed = tSquared * t;
      result = {x= 0,y= 0}
      result.x = (ax * tCubed) + (bx * tSquared) + (cx * t) + cp[1].x;
      result.y = (ay * tCubed) + (by * tSquared) + (cy * t) + cp[1].y;
      --print(result)
      return result;
      end
      function RandomSwipe(qx, qy, zx, zy, time)---起点x,起点y,终点x,终点y,耗时
      time=time or 2000
      local gesture = Gesture:new() --创建一个手势滑动对象
      local path = Path:new() --创建一个轨迹路径
      path:setStartTime(100) --从触发事件的第100毫秒后开始滑动
      path:setDurTime(time) --滑动的时间
      local xxy = {time}
      local point = {}
      local dx0 = {x=qx,y=qy}
      local dx1 = {x= rnd(qx - (屏幕.宽度 / 4) * 0.25, qx + (屏幕.宽度 / 4) * 0.25),y= rnd(qy, qy + 50)}
      local dx2 = {x= rnd(zx - (屏幕.宽度 / 4) * 0.25, zx + (屏幕.宽度 / 4) * 0.25),y= rnd(zy, zy + 50)}
      local dx3 = {x= zx,y= zy}
      local dx={dx0,dx1,dx2,dx3}
      for i=1,4 do
      --print("i:",i)
      table.insert(point,dx[i])
      end
      --print(point)
      for i=1,#point do
      --print("point:",point[i])
      end
      for var=0,1,0.08 do
      local xy=bezier_curves(point,var)
      path:addPoint(math.floor(xy.x),math.floor(xy.y)) --轨迹上的第一个点
      end
      gesture:addPath(path) --添加一个滑动路径
      function onFinishEvent(type) --执行结果回调函数 type为0执行完成,为1是执行中途被取消
      print("event:"..type)
      end
      local r = gesture:dispatch(onFinishEvent)
      if r then
      print("执行成功")
      else
      print("执行失败")
      end
      end
      function 滑动_坐标_换算(方向)
      local w,h
      w,h = getDisplaySize()---获取屏幕长宽计算滑动距离
      local x1,x2,y1,y2
      if 方向=="左" then
      x1=math.ceil(w*0.9)
      y1=math.ceil(h*0.5)
      x2=math.ceil(w*0.1)
      y2=math.ceil(h*0.5)
      elseif 方向=="右"then
      x1=math.ceil(0.1*w)
      y1=math.ceil(0.5*h)
      x2=math.ceil(0.9*w)
      y2=math.ceil(0.5*h)
      elseif 方向=="上"then
      x1=math.ceil(0.5*w)
      y1=math.ceil(0.9*h)
      x2=math.ceil(0.5*w)
      y2=math.ceil(0.1*h)
      elseif 方向=="下"then
      x1=math.c


      IP属地:河南来自Android客户端3楼2023-04-20 17:23
      收起回复
        不错,感谢楼主提供的思路。楼主,我有个问题要问下,stopApp()这个函数在无障碍模式下无法生效,只能在root模式下生效。想请问下楼主,有其他关闭app的思路吗?


        IP属地:上海4楼2023-07-07 09:56
        收起回复
          想问问 无障碍模式下设置多个点的滑动 到达每个坐标后是否可以自定义一个sleep延时?


          IP属地:广东5楼2023-09-10 20:39
          收起回复
            1


            IP属地:河南来自Android客户端6楼2024-11-14 11:21
            回复