QPython实例03-制作【ONE一个】可视化应用

一、前言

QPython 3c在大佬的改进下,拥有了基于sl4a的FullScreenWrapper2全屏框架。文章将用该框架制作我们的可视化应用【ONE一个】。

二、最终效果如下

三、准备工作

  • AIDE: 使用布局助手生成xml布局代码
  • QPython 3C: 使用FullScreenWrapper2制作可视化应用

以上应用在后台回复应用名称即可获取下载链接,如【AIDE】

四、实现思路

  1. 使用AIDE生成布局代码
  2. 分析网站获取ONE api
  3. 使用FullScreenWrapper完成可视化应用

使用AIDE生成布局代码

在aide新建项目,在app/src/main/res/layout下新建xml,点击右上角的图片按钮进入设计界面,按照以下进行设计,在qpython中展示可能需要做调整。

然后返回,复制xml代码,xml代码如下:


分析网站请求获取ONE api

  • 分析步骤参考:https://www.jianshu.com/p/e9617107b748

将其中代码改写为python版本

class OneApi(object):def __init__(self):self.TOKEN=''self.API='http://m.wufazhuce.com/one/ajaxlist/'self.COOKIES=''def getToken(self):if self.TOKEN:return self.TOKENurl='http://m.wufazhuce.com/one'try:res=requests.get(url)if res.status_code==200:self.COOKIES=res.headers['Set-Cookie']_token=res.text.split("One.token = '")[1].split("'")[0]if _token and len(_token)==40:self.TOKEN=_tokenreturn _tokenelse:print('未获取到token')return ""except Exception:passdef getData(self,page=0):token=self.getToken()url=self.API + str(page) + '?_token=' + tokenheaders = {'Cookie':self.COOKIES}res=requests.get(url,headers=headers)   if res.status_code==200:return json.loads(res.text)['data']else:return None

使用FullScreenWrapper完成可视化应用

class OnePic(Layout):def __init__(self):self.api=apiself.index=0self.page=0self.articles=self.api.getData(self.page)super(OnePic,self).__init__(xmldata,"ONE一个")def on_show(self):# 给按钮注册事件,以及初始化self.add_event(key_EventHandler(handler_function=self.close_app))self.views.btn_share.add_event(click_EventHandler(self.views.btn_share,self.share))self.views.btn_exit.add_event(click_EventHandler(self.views.btn_exit,self.close_app))self.views.btn_prev.add_event(click_EventHandler(self.views.btn_prev,self.btn_prev))self.views.btn_next.add_event(click_EventHandler(self.views.btn_next,self.btn_next))article=self.articles[self.index]self.views.title.text=article['title']self.views.date.text=article['date']url=api.getPic(article["id"], article["img_url"])self.views.pic.src="file://"+urlself.views.pic_author.text=article["picture_author"]self.views.content.text=article["content"]self.views.text_author.text=article["text_authors"]def on_close(self):# 关闭应用时执行的passdef close_app(self,view,event):# 退出appFullScreenWrapper2App.exit_FullScreenWrapper2App()def btn_prev(self,view,event):# 按钮上一个的事件函数article=self.prev()if article:self.views.title.text=article['title']self.views.date.text=article['date']url=api.getPic(article["id"], article["img_url"])self.views.pic.src="file://"+urlself.views.pic_author.text=article["picture_author"]self.views.content.text=article["content"]self.views.text_author.text=article["text_authors"]def btn_next(self,view,event):# 按钮下一个的事件函数article=self.next()if article:self.views.title.text=article['title']self.views.date.text=article['date']url=api.getPic(article["id"], article["img_url"])self.views.pic.src="file://"+urlself.views.pic_author.text=article["picture_author"]self.views.content.text=article["content"]self.views.text_author.text=article["text_authors"]def share(self, view, event):# 按钮分享的事件函数,分享至微信action="android.intent.action.SEND"mime="text/plain"article=self.articles[self.index]extras={"android.intent.extra.SUBJECT":"分享","android.intent.extra.TEXT":article["content"]+"——"+article["text_authors"]}flags=268435456packageName="com.tencent.mm"className="com.tencent.mm.ui.tools.ShareImgUI"intent=droid.makeIntent(action=action,type=mime,extras=extras,flags=flags,packagename=packageName,classname=className)droid.startActivityIntent(intent.result)def prev(self):if self.index==0:if self.page!=0:self.page=self.articles[0]['id']self.articles=self.api.getData()self.index=len(self.articles)-1return self.articles[self.index]else:droid.makeToast("暂无更多数据")return Noneelse:self.index=self.index-1return self.articles[self.index]def next(self):if self.index==len(self.articles)-1:self.page=self.articles[len(self.articles)-1]["id"]self.articles=self.api.getData(self.page)self.index=0return self.articles[self.index]else:self.index=self.index+1return self.articles[self.index]

完整代码

后台回复【one一个】即可获取源码下载链接。将

不足之处

  • 下载的图片未做清除处理,请求得越多,图片会下载,占用手机空间
  • 分享功能不完善,能分享多个渠道更好,比如qq、微博等
  • 用户的浏览数据未做配置化,都是从第一页开始,不能从上次的位置接着看

注意:将fullscreenwrapper2_py3.py放置在storage/emulated/0/qpython/lib/python3.11/site-packages

五。总结

本文主要用于学习python知识,让大家在实操中完成技能学习。如有不足之处,请大家评论区留言评论。

本文由【产品经理不是经理】gzh 同步发布,欢迎关注


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部