记录用户点击的操作历史,使用栈数据结构,频繁的操作栈顶(添加,获取,删除),使用LinkedList

捕获用户的返回键操作,响应返回键,返回上一个界面
MainActivity.java
/**
* 返回键处理
*/
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode==KeyEvent.KEYCODE_BACK){
boolean result=MiddleManager.getInstance().goBack();
if(!result){
Toast.makeText(MainActivity.this, "是否退出应用", 1).show();
}
return false;
}
return super.onKeyDown(keyCode, event);
}
MiddleManager.java
//操作历史栈
private LinkedList<String> HISTORY=new LinkedList<String>();
/**
* 处理返回键
* @return
*/
public boolean goBack() {
//如果为空会抛异常
if(HISTORY.size()>0){
if(HISTORY.size()==1){
return false;
}
HISTORY.removeFirst();
if(HISTORY.size()>0){
String key=HISTORY.getFirst();
BaseView targetView=VIEWCACHE.get(key);
mainContainer.removeAllViews();
View child=targetView.getView();
mainContainer.addView(child);
child.startAnimation(AnimationUtils.loadAnimation(mainContainer.getContext(), R.anim.left_to_right));
currentView=targetView;
return true;
}
}
return false;
}
/**
* 加载界面
*/
public void loadView(Class<? extends BaseView> baseViewClass) {
BaseView baseView=null;
//判断是否存在
String key=baseViewClass.getSimpleName();
if(VIEWCACHE.containsKey(key)){
baseView=VIEWCACHE.get(key);
}else{
try {
Constructor<? extends BaseView> constructor;
constructor = baseViewClass.getConstructor(Context.class);
baseView=constructor.newInstance(mainContainer.getContext());
} catch (Exception e) {
e.printStackTrace();
}
VIEWCACHE.put(key, baseView);
}
mainContainer.removeAllViews();
View child=baseView.getView();
mainContainer.addView(child);
child.startAnimation(AnimationUtils.loadAnimation(mainContainer.getContext(), R.anim.left_to_right));
currentView=baseView;
//放入栈
HISTORY.addFirst(key);
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# Android
# 返回键
# android中LinearLayoutManager一键返回顶部示例
# Android实现点击两次返回键退出
# 在Unity中捕捉Android的常用按钮返回事件
# Android实现返回键功能
# Android点击按钮返回顶部实现代码
# 数据结构
# 大家多多
# 为空
# 判断是否
# 加载
# return
# false
# makeText
# show
# Toast
# goBack
# private
# super
# size
# HISTORY
# key
# removeFirst
# lt
# getFirst
# gt
相关文章:
建站之星展会模版如何一键下载生成?
青浦网站制作公司有哪些,苹果官网发货地是哪里?
TestNG的testng.xml配置文件怎么写
兔展官网 在线制作,怎样制作微信请帖?
建站之星上传入口如何快速找到?
Python路径拼接规范_跨平台处理说明【指导】
网站制作公司广州有几家,广州尚艺美发学校网站是多少?
制作充值网站的软件,做人力招聘为什么要自己交端口钱?
c# Task.ConfigureAwait(true) 在什么场景下是必须的
无锡营销型网站制作公司,无锡网选车牌流程?
宿州网站制作公司兴策,安徽省低保查询网站?
建站之星logo尺寸如何设置最合适?
建站主机类型有哪些?如何正确选型
如何快速搭建高效WAP手机网站吸引移动用户?
如何通过VPS搭建网站快速盈利?
香港服务器建站指南:免备案优势与SEO优化技巧全解析
如何通过建站之星自助学习解决操作问题?
如何彻底卸载建站之星软件?
建站主机系统SEO优化与智能配置核心关键词操作指南
如何用花生壳三步快速搭建专属网站?
如何在阿里云虚拟主机上快速搭建个人网站?
如何用西部建站助手快速创建专业网站?
微信小程序 五星评分(包括半颗星评分)实例代码
东莞市网站制作公司有哪些,东莞找工作用什么网站好?
小说建站VPS选用指南:性能对比、配置优化与建站方案解析
公众号网站制作网页,微信公众号怎么制作?
网站制作中优化长尾关键字挖掘的技巧,建一个视频网站需要多少钱?
建站之星价格显示格式升级,你的预算足够吗?
公司网站建设制作费用,想建设一个属于自己的企业网站,该如何去做?
北京营销型网站制作公司,可以用python做一个营销推广网站吗?
香港服务器部署网站为何提示未备案?
专业的网站制作设计是什么,如何制作一个企业网站,建设网站的基本步骤有哪些?
如何选择高效可靠的多用户建站源码资源?
免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?
Swift开发中switch语句值绑定模式
建站OpenVZ教程与优化策略:配置指南与性能提升
南京做网站制作公司,南京哈发网络有限公司,公司怎么样,做网页美工DIV+CSS待遇怎么样?
活动邀请函制作网站有哪些,活动邀请函文案?
如何快速重置建站主机并恢复默认配置?
如何快速查询域名建站关键信息?
定制建站流程步骤详解:一站式方案设计与开发指南
Android自定义listview布局实现上拉加载下拉刷新功能
建站之星备案是否影响网站上线时间?
如何在IIS管理器中快速创建并配置网站?
如何快速生成专业多端适配建站电话?
如何在橙子建站中快速调整背景颜色?
Python lxml的etree和ElementTree有什么区别
建站之星导航菜单设置与功能模块配置全攻略
免费视频制作网站,更新又快又好的免费电影网站?
建设网站制作价格,怎样建立自己的公司网站?
*请认真填写需求信息,我们会在24小时内与您取得联系。