Skip to content

Commit d4d3b39

Browse files
committed
add local lua
1 parent bb704c9 commit d4d3b39

12 files changed

+7944
-1
lines changed
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{"version":"1.3.0"}
1+
{"version":"1.3.3"}

Resources/VideoPlsResources.bundle/lua/os_bubble_asmp_hotspot.lua

Lines changed: 458 additions & 0 deletions
Large diffs are not rendered by default.

Resources/VideoPlsResources.bundle/lua/os_bubble_ec_hotspot.lua

Lines changed: 1552 additions & 0 deletions
Large diffs are not rendered by default.

Resources/VideoPlsResources.bundle/lua/os_chain_asmp_hotspot.lua

Lines changed: 535 additions & 0 deletions
Large diffs are not rendered by default.

Resources/VideoPlsResources.bundle/lua/os_cloud_asmp_hotspot.lua

Lines changed: 966 additions & 0 deletions
Large diffs are not rendered by default.

Resources/VideoPlsResources.bundle/lua/os_cloud_food_hotspot.lua

Lines changed: 778 additions & 0 deletions
Large diffs are not rendered by default.

Resources/VideoPlsResources.bundle/lua/os_cloud_hotspot.lua

100755100644
File mode changed.

Resources/VideoPlsResources.bundle/lua/os_mix_stand_hotspot.lua

Lines changed: 1460 additions & 0 deletions
Large diffs are not rendered by default.

Resources/VideoPlsResources.bundle/lua/os_stand_cloud_hotspot.lua

Lines changed: 480 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 321 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,321 @@
1+
--
2+
-- Create by bolo on 2019/12/27
3+
--
4+
require "os_config"
5+
require "os_string"
6+
require "os_constant"
7+
require "os_util"
8+
require "os_track"
9+
10+
sideBar = object:new()
11+
12+
local DEEPLINK_H5_URL = "http://op-plat.videojj.com/toufangzhongjianye/deeplink.html"
13+
local OS_ICON_WEDGE_CLOSE = "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"
14+
local CLOUD_ID_MIDDLE = "0014"
15+
16+
local adTypeName = "cloud"
17+
local scale = getScale()
18+
local sideBarWidth
19+
local sideBarHeight
20+
21+
local function widgetEvent(eventType, adID, adName, actionType, linkUrl, deepLink, selfLink)
22+
23+
local actionString = ""
24+
if (linkUrl ~= nil and string.len(linkUrl) > 0) then
25+
actionString = linkUrl
26+
elseif (deepLink ~= nil and string.len(deepLink) > 0) then
27+
actionString = deepLink
28+
elseif (selfLink ~= nil and string.len(selfLink) > 0) then
29+
actionString = selfLink
30+
end
31+
32+
if Native.widgetNotify then
33+
34+
local notifyTable = {}
35+
36+
notifyTable["eventType"] = eventType
37+
notifyTable["adID"] = adID
38+
notifyTable["adName"] = adName
39+
notifyTable["actionType"] = actionType
40+
notifyTable["actionString"] = actionString
41+
42+
if (linkUrl ~= nil) then
43+
notifyTable["linkUrl"] = linkUrl
44+
end
45+
46+
if (deepLink ~= nil) then
47+
notifyTable["deepLink"] = deepLink
48+
end
49+
50+
if (selfLink ~= nil) then
51+
notifyTable["selfLink"] = selfLink
52+
end
53+
54+
Native:widgetNotify(notifyTable)
55+
else
56+
Native:widgetEvent(eventType, adID, adName, actionType, actionString)
57+
end
58+
end
59+
60+
local function onEventTrack(key)
61+
if (sideBar.data.middle_page_st == nil) then
62+
return
63+
end
64+
local trackLink = sideBar.data.middle_page_st[key]
65+
print("exposureLink::" .. tostring(trackLink))
66+
if (trackLink == nil) then
67+
return
68+
end
69+
Native:get(trackLink)
70+
end
71+
72+
local function getVideoSize()
73+
local videoWidth, videoHeight = Native:getVideoSize(2)
74+
local w, h
75+
w = math.max(videoWidth, videoHeight)
76+
h = math.min(videoWidth, videoHeight)
77+
sideBarWidth = 178 * scale
78+
sideBarHeight = 210 * scale
79+
return w, h
80+
end
81+
82+
local function rotationScreen(isPortrait)
83+
if (isPortrait) then
84+
if (System.ios()) then
85+
sideBar.sideBarView:hide()
86+
else
87+
sideBar.webView:hide()
88+
sideBar.button:hide()
89+
end
90+
sideBar.closeView:hide()
91+
else
92+
if (System.ios()) then
93+
sideBar.sideBarView:show()
94+
else
95+
sideBar.webView:show()
96+
sideBar.button:show()
97+
end
98+
sideBar.closeView:show()
99+
end
100+
end
101+
102+
local function registerMedia()
103+
local media = Media()
104+
-- body
105+
-- 注册window callback通知
106+
local callbackTable = {
107+
--0: 竖屏小屏幕,1 竖屏全凭,2 横屏全屏
108+
onPlayerSize = function(type)
109+
if (type == 0) then
110+
rotationScreen(true)
111+
elseif (type == 1) then
112+
rotationScreen(true)
113+
elseif (type == 2) then
114+
rotationScreen(false)
115+
end
116+
end
117+
}
118+
media:mediaCallback(callbackTable)
119+
return media
120+
end
121+
122+
local function closeAnimation()
123+
Native:deleteBatchCacheData({ CLOUD_ID_MIDDLE })
124+
local distance = sideBarWidth
125+
local view
126+
if (System.ios()) then
127+
view = sideBar.sideBarView
128+
else
129+
view = sideBar.webView
130+
Animation():translationX(distance):duration(0.5):with(sideBar.button):start()
131+
end
132+
Animation():translationX(distance):duration(0.5):with(view):onEnd(function()
133+
Native:destroyView()
134+
end):start()
135+
end
136+
137+
local function startAnimation()
138+
local view
139+
if (System.ios()) then
140+
view = sideBar.sideBarView
141+
else
142+
view = sideBar.webView
143+
sideBar.webView:translationX(sideBarWidth)
144+
sideBar.button:translationX(sideBarWidth)
145+
Animation():translationX(0):duration(0.5):with(sideBar.button):start()
146+
end
147+
Animation():translationX(0):duration(0.5):with(view):onEnd(function()
148+
onEventTrack("page_load")
149+
onEventTrack("button_show")
150+
if (not Native:isPortraitScreen()) then
151+
sideBar.closeView:show()
152+
end
153+
end):start()
154+
end
155+
156+
local function setLuaViewSize(luaview, isPortrait) --设置当前容器大小
157+
if (luaview == nil) then
158+
return
159+
end
160+
local screenWidth, screenHeight = Native:getVideoSize(2)
161+
if (isPortrait) then
162+
local _, videoHight, y = Native:getVideoSize(0)
163+
if System.android() then
164+
y = 0.0
165+
end
166+
luaview:frame(0, y, math.min(screenWidth, screenHeight), videoHight)
167+
else
168+
luaview:frame(0, 0, math.max(screenWidth, screenHeight), math.min(screenWidth, screenHeight))
169+
end
170+
end
171+
172+
local function createButton()
173+
local buttonHeight = 30 * scale
174+
sideBar.button = GradientView()
175+
sideBar.button:gradient(0xfad15b, 0xf67a27)
176+
177+
local textSize = 12
178+
local label = Label(Native)
179+
label:textSize(textSize)
180+
label:textColor(0x000000)
181+
label:textAlign(TextAlign.CENTER)
182+
label:textBold()
183+
sideBar.button:addView(label)
184+
185+
local text = "打开淘宝APP"
186+
label:text(text)
187+
if (System.ios()) then
188+
sideBar.button:frame(0, sideBarHeight - buttonHeight, sideBarWidth, buttonHeight)
189+
sideBar.sideBarView:addView(sideBar.button)
190+
label:size(sideBarWidth, buttonHeight)
191+
label:align(Align.CENTER)
192+
else
193+
sideBar.button:align(Align.RIGHT, Align.BOTTOM)
194+
label:align(Align.CENTER)
195+
local _, videoHeight = getVideoSize()
196+
sideBar.button:size(sideBarWidth, 30 * scale)
197+
sideBar.button:margin(0, 0, 0, (videoHeight - sideBarHeight) / 2)
198+
sideBar.button:corner(0, 0, 0, 0, 0, 0, scale * 10, scale * 10)
199+
end
200+
sideBar.button:onClick(function()
201+
onEventTrack("button_click")
202+
local deepLink = sideBar.data.deepLink
203+
local linkUrl = sideBar.data.linkUrl
204+
local extraLink
205+
if (deepLink == nil or string.len(deepLink) <= 0) then
206+
if(linkUrl == nil or string.len(linkUrl) <= 0) then
207+
return
208+
end
209+
extraLink = linkUrl
210+
end
211+
if (extraLink == nil or string.len(extraLink) <= 0) then
212+
extraLink = DEEPLINK_H5_URL .. "?deeplink=" .. Native:encode(deepLink)
213+
.. "&url=" .. Native:encode(linkUrl)
214+
end
215+
print("middel button on tap ::" .. tostring(extraLink))
216+
widgetEvent(eventTypeClick, "", adTypeName, actionTypeOpenUrl, extraLink, "", "")
217+
closeAnimation()
218+
end)
219+
end
220+
221+
local function createWebViewAndroid()
222+
sideBar.webView = WebView()
223+
sideBar.luaView:addView(sideBar.webView)
224+
sideBar.webView:align(Align.RIGHT, Align.BOTTOM)
225+
sideBar.luaView:alignRight()
226+
local _, videoHeight = getVideoSize()
227+
sideBar.webView:size(sideBarWidth, sideBarHeight - 30 * scale)
228+
sideBar.webView:margin(0, 0, 0,
229+
(videoHeight - sideBarHeight) / 2 + 30 * scale)
230+
231+
createButton()
232+
end
233+
234+
local function createWebViewIOS()
235+
236+
-- ios 需要圆角
237+
sideBar.sideBarView = GradientView()
238+
sideBar.webView = WebView()
239+
sideBar.sideBarView:corner(scale * 10, scale * 10, 0, 0, 0, 0, scale * 10, scale * 10)
240+
local videoWidth, videoHeight = getVideoSize()
241+
sideBar.sideBarView:frame(videoWidth - sideBarWidth, (videoHeight - sideBarHeight) / 2,
242+
sideBarWidth, sideBarHeight)
243+
sideBar.sideBarView:addView(sideBar.webView)
244+
sideBar.webView:size(sideBarWidth, sideBarHeight - 30 * scale)
245+
-- button
246+
createButton()
247+
248+
sideBar.sideBarView:translationX(sideBarWidth)
249+
end
250+
251+
local function createLuaView(isPortrait)
252+
local luaView
253+
if System.android() then
254+
luaView = View()
255+
else
256+
luaView = ThroughView()
257+
end
258+
setLuaViewSize(luaView, isPortrait)
259+
return luaView
260+
end
261+
262+
local function createCloseView()
263+
local closeButtonSize = 19 * scale
264+
local closeView = View()
265+
closeView:size(closeButtonSize, closeButtonSize)
266+
closeView:cornerRadius(19 * scale / 2)
267+
closeView:backgroundColor(0x000000, 0.5)
268+
local closeImage = Image(Native)
269+
closeImage:size(7 * scale, 7 * scale)
270+
closeImage:align(Align.CENTER)
271+
closeImage:image(Data(OS_ICON_WEDGE_CLOSE))
272+
closeView:addView(closeImage)
273+
closeView:hide()
274+
275+
local videoWidth, videoHeight = getVideoSize()
276+
if (System.ios()) then
277+
closeView:xy(videoWidth - 25 * scale, (videoHeight - sideBarHeight) / 2 + 6 * scale)
278+
else
279+
closeView:align(Align.RIGHT)
280+
closeView:margin(0, (videoHeight - sideBarHeight) / 2 + 6 * scale, 6 * scale, 0)
281+
end
282+
sideBar.closeView = closeView
283+
end
284+
285+
local function onCreate()
286+
local isPortrain = Native:isPortraitScreen()
287+
288+
sideBar.luaView = createLuaView(isPortrain)
289+
if (System.ios()) then
290+
createWebViewIOS()
291+
else
292+
createWebViewAndroid()
293+
end
294+
local middelUrl = sideBar.data.middle_page_url .."?" .. os.date("%Y-%m-%d-%H:%M:%S")
295+
print("middleUrl::" .. tostring(middelUrl))
296+
sideBar.webView:loadUrl(middelUrl)
297+
createCloseView()
298+
sideBar.closeView:onClick(function()
299+
sideBar.closeView:hide()
300+
closeAnimation()
301+
end)
302+
if (isPortrain) then
303+
rotationScreen(isPortrain)
304+
end
305+
startAnimation()
306+
Native:saveCacheData(CLOUD_ID_MIDDLE, tostring(eventTypeShow))
307+
end
308+
309+
function show(args)
310+
print("web side bar show 11111111111" .. Native:tableToJson(args))
311+
if (args == nil) then
312+
return
313+
end
314+
local dataTable = args.data
315+
if (dataTable == nil) then
316+
return
317+
end
318+
sideBar.data = dataTable
319+
registerMedia()
320+
onCreate()
321+
end

0 commit comments

Comments
 (0)