Lua布局fusionapp收藏功能与历史记录实现
Lua布局fusionapp收藏功能与历史记录实现第⼀部分 程序启动时会执⾏的事件
--程序启动时会执⾏的事件
--清除缓存
function clr()
--导⼊File类
import "java.io.File"
--显⽰多选框
items={"浏览记录","缓存⽂件"}
多选对话框=AlertDialog.Builder(this)
.setTitle("清除记录")
--勾选后执⾏
.
setPositiveButton("确定",function()
if clearhistory==1 and clearall==1 then
File(lstads).delete()
File(lstwebads).delete()
lst={}
lstweb={}
elseif clearhistory==0 and clearall==1 then
elseif clearhistory==1 and clearall==0 then
File(lstads).delete()
File(lstwebads).delete()
lst={}
lstweb={}
else return nil
end
end)
--选择事件
.setMultiChoiceItems(items, nil,{ onClick=function(v,p)
--清除历史
if p==0 then clearhistory=1
end
-
-清除缓存
if p==1 then clearall=1
end
end})
多选对话框.show();
clearhistory=0
clearall=0
end
--1.地址
favads="/data/data/"..PackageName().."/fav.lua"
favwebads="/data/data/"..PackageName().."/favweb.lua"
-
-2.序列化
function slz(obj)
local lua = ""
local t = type(obj)
if t == "number" then
lua = lua .. obj
elseif t == "boolean" then
lua = lua .. tostring(obj)
elseif t == "string" then
lua = lua .. string.format("%q", obj)
elseif t == "table" then
lua = lua .. "{\n"
for k, v in pairs(obj) do
lua = lua .. "[" .. slz(k) .. "]=" .. slz(v) .. ",\n"
end
local metatable = getmetatable(obj)
if metatable ~= nil and type(metatable.__index) == "table" then
for k, v in pairs(metatable.__index) do
lua = lua .. "[" .. slz(k) .. "]=" .. slz(v) .. ",\n"
end
end
lua = lua .. "}"
elseif t == "nil" then
return nil
else
error("can not serialize a " .. t .. " type.")
end
return lua
end
function rslz(lua)
local t = type(lua)
if t == "nil" or lua == "" then
return {}
elseif t == "number" or t == "string" or t == "boolean" then    lua = tostring(lua)
else
error("can not unserialize a " .. t .. " type.")
end
lua = "return " .. lua
local func = loadstring(lua)
if func == nil then
return nil
end
恢复历史浏览记录return func()
end
-
-3.读取收藏⽂件
function read_fav()
import "java.io.File"
File(favads).createNewFile()
sfav=io.open(favads):read("*a")
File(favwebads).createNewFile()
sfavweb=io.open(favwebads):read("*a")
--转换成table
fav=rslz(sfav)
favweb=rslz(sfavweb)
end
-
-4.存储收藏⽂件
function save_fav()
--转换成string
sfav=slz(fav)
sfavweb=slz(favweb)
--保存
file=io.open(favads,"w+")
io.output(file)
io.write(sfav)
io.flush()
io.close(file)
file=io.open(favwebads,"w+")
io.output(file)
io.write(sfavweb)
io.flush()
io.close(file)
end
--5.收藏夹布局
function favshow()
favlayout={
LinearLayout,
orientation="1",
gravity="center",
layout_width="wrap_content",
layout_height="wrap_content",
{
TextView,
text="",
gravity="center",
layout_width="wrap_content",
textSize="0sp",
background="#000000",
layout_height="15dp",},
layout_height="15dp",},
{
TextView,
text="收藏夹",
gravity="center",
layout_width="wrap_content",
textSize="30sp",
textStyle="bold",
layout_height="50dp",},
{
ListView,
id="favlv",
items=fav,
layout_width="fill",
layout_height="wrap_content",
},
}
end
--6.收藏夹显⽰
function show_fav()
read_fav()
favshow()
fl=AlertDialog.Builder(activity)
.setView(loadlayout(favlayout))
.setNegativeButton("取消",DialogInterface.OnClickListener{    onClick=function()
end
})
.create()
fl.show()
加载⽹页(favweb[b])
fl.dismiss()
end
od=b
popwin(od)
return true
end
end
--7.收藏夹编辑框布局
function efavshow(e1,e2)
efavlayout={
LinearLayout,
orientation="1",
Focusable=true,
FocusableInTouchMode=true,
{
EditText,
id="efav",
text=e1,
layout_marginTop="5dp",
layout_width="80%w",
layout_gravity="center",
},
{
EditText,
id="efavweb",
text=e2,
layout_margiTop="5dp",
layout_width="80%w",
layout_gravity="center",
},
}
end
--8.显⽰编辑框
function show_efav(b)
read_fav()
local e1=fav[b]
local e2=favweb[b]
efavshow(e1,e2)
efl=AlertDialog.Builder(activity)
efl=AlertDialog.Builder(activity)
.setTitle("编辑收藏")
.setView(loadlayout(efavlayout))
.setPositiveButton("确认",DialogInterface.OnClickListener{    onClick=function()
if (=="" =="") then
print("请填写完整")
else
fav[b]=
favweb[b]=
save_fav()
print("修改成功")
efl.dismiss()
show_fav()
end
end})
.setNegativeButton("取消",DialogInterface.OnClickListener{    onClick=function()
show_fav()
end})
.setNeutralButton("删除",DialogInterface.OnClickListener{    onClick=function()
对话框()
.设置消息("确定要删除吗?")
.设置积极按钮("确定",function()
save_fav()
print("删除成功")
efl.dismiss()
show_fav()
end)
.设置消极按钮("取消",function()
show_fav()
end)
.显⽰()
end})
.create()
efl.show()
end
--9.添加收藏
function add_fav()
read_fav()
Title()
Url()
local rpt=0
local nfav=#fav
for i=1,nfav do
if favweb[i]==Url() then
rpt=1
break
end
end
if rpt==1 then
print("该⽹页已在收藏夹")
else
efavshow(e1,e2)
afl=AlertDialog.Builder(activity)
.setTitle("添加收藏")
.setView(loadlayout(efavlayout))
.setPositiveButton("添加",DialogInterface.OnClickListener{      onClick=function()
if (=="" =="") then
print("请填写完整")
else
table.insert(fav,)
table.insert(favweb,)
save_fav()
print("收藏成功")
rpt=nil
end
end})
.setNegativeButton("取消",DialogInterface.OnClickListener{      onClick=function() end})
.create()
afl.show()
end
end
--10.收藏排序
function upfav(b)
if b~=1 then
ufav=fav[b]
ufavweb=favweb[b]
table.insert(fav,b-1,ufav)
table.insert(favweb,b-1,ufavweb)
end
save_fav()
show_fav()
end
--11.长按弹窗
function popwin(od)
local win1="向上移动"
local win2="编辑"
local win3="向下移动"
local wina={win1,win2,win3}
local winb={win2,win3}
local winc={win1,win2}
if od==1 then
win=winb
elseif od==#fav then
win=winc
else
win=wina
end
winlayout={
LinearLayout,
orientation="vertical",
{ListView,
id="winlv",
items=win,
layout_width="fill_parent",
layout_height="wrap_content",},
}
winl=AlertDialog.Builder(activity)
.setView(loadlayout(winlayout))
.create()
winl.show()
if win[b]==win1 then
fl.dismiss()
upfav(od)
elseif win[b]==win2 then
fl.dismiss()
show_efav(od)
elseif win[b]==win3 then
fl.dismiss()
downfav(od)
end
winl.dismiss()
end
end
function downfav(b)
if b~=#fav then
dfav=fav[b]
dfavweb=favweb[b]
table.insert(fav,b+1,dfav)
table.insert(favweb,b+1,dfavweb)
end
save_fav()
show_fav()

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。