如何在Android应用中实现一个返回键功能

发布时间:2020-11-23 16:28:56

来源:亿速云

阅读:89

作者:Leah

今天就跟大家聊聊有关如何在Android应用中实现一个返回键功能,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

记录用户点击的操作历史,使用栈数据结构,频繁的操作栈顶(添加,获取,删除),使用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 HISTORY=new LinkedList();

/**

* 处理返回键

* @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 baseViewClass) {

BaseView baseView=null;

//判断是否存在

String key=baseViewClass.getSimpleName();

if(VIEWCACHE.containsKey(key)){

baseView=VIEWCACHE.get(key);

}else{

try {

Constructor 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中的后退功能,如何在Android应用中实现一个返回键功能相关推荐

  1. android 虚拟返回键功能_Android返回键功能的实现方法

    本文实例讲述了Android返回键功能的实现方法.分享给大家供大家参考.具体如下: 在开发android应用时,常常通过按返回键(即keyCode == KeyEvent.KEYCODE_BACK)就 ...

  2. android 返回功能,Android实现返回键功能

    记录用户点击的操作历史,使用栈数据结构,频繁的操作栈顶(添加,获取,删除),使用LinkedList 捕获用户的返回键操作,响应返回键,返回上一个界面 MainActivity.java /** * ...

  3. java 线程中创建线程_如何在Java 8中创建线程安全的ConcurrentHashSet?

    java 线程中创建线程 在JDK 8之前,还没有办法在Java中创建大型的线程安全的ConcurrentHashSet. java.util.concurrent包甚至没有一个名为Concurren ...

  4. android led闪烁功能,如何在Android应用层中制作一个LED指示灯效果

    如何在Android应用层中制作一个LED指示灯效果 发布时间:2020-12-08 16:12:59 来源:亿速云 阅读:86 作者:Leah 本篇文章给大家分享的是有关如何在Android应用层中 ...

  5. android开发 转跳功能,如何在Android中利用Intent实现一个页面跳转功能

    如何在Android中利用Intent实现一个页面跳转功能 发布时间:2021-02-20 17:06:31 来源:亿速云 阅读:113 作者:Leah 本篇文章为大家展示了如何在Android中利用 ...

  6. android 文本后图标_如何在Android中更改文本,图标等的大小

    android 文本后图标 Let's face it: no matter how good the screens are on our phones and tablets, the text ...

  7. android模拟器模拟拨号电话号码,如何在Android的Genymotion模拟器中拨打电话?

    如何在Genymotion模拟器中为Android拨打电话? 我正在使用Genymotion模拟器来运行和测试我的应用程序. 在本机模拟器DDMS中,我们可以进行虚假的呼叫. 这可以使用Genymot ...

  8. android怎样添加图片锐化功能,如何在android处理图片(图像二值化锐化转换格式).doc...

    如何在android处理图片(图像二值化锐化转换格式) 链接:如何在android处理图片( 图像二值化.锐化.转换格式) /thread-36559-1-1.html package net.wea ...

  9. android studio点击图片,如何在Android Studio中的模拟器图库中添加图像?

    如何在Android Studio中的模拟器图库中添加图像? 我正在开发图像过滤器应用程序. 但是,如果我没有任何图像,就无法真正尝试. 我知道我可以在电话中对其进行测试,但这并不相同,因为我需要错误 ...

最新文章

  1. 在关联枚举中使用Codable
  2. 转:Siri之父:语音交互或将主导未来十年发展
  3. myeclipse 自动生成注释
  4. 使用Scala实现Java项目的单词计数:串行及Actor版本
  5. java类只读怎么办_如何在Java中制作一个只读类?
  6. Nginx命令行控制
  7. Spring 学习一 @Autowired
  8. Comic Life 3 for Mac(漫画创作工具)
  9. SylixOS学习三—— SylixOS的引导与安装1
  10. 360浏览器cookie的导出
  11. 联合分布及其随机变量
  12. java的 jre是什么_Java中JRE介绍,JRE是什么
  13. c语言printf分析,C语言 printf详解
  14. ysoserial exploit/JRMPListener原理剖析
  15. python产生0101_GitHub - zhl0101/Python-100-Days: Python - 100天从新手到大师
  16. echart旭日图_echarts之用饼图制作带labelline的旭日图(一)
  17. 如何以软文宣传的方式成功推广洗发水的新产品上市?
  18. 如何在ARM平台编译NAMD
  19. OpenCv-C++-SURF特征检测
  20. HapiJS开发手册

热门文章

  1. ASP.NET GridView控件在列上格式化时间
  2. C# 判断一字符串是否为合法数字(正则表达式)
  3. 使用代理时服务变量的变化
  4. SVM支持向量机-手写笔记(超详细:拉格朗日乘数法、KKT条件、对偶性质、最优化、合页损失、核函数...)
  5. 创建SpringBoot项目时出现Cannot resolve plugin org.springframework的解决方法
  6. Ajax:异步js和xml
  7. ajax获取返回随机数,AJAX
  8. linux java输出到文件,linux java输出到文件内容
  9. 前端填空题_一年前端面试总结|入职字节|2020.8
  10. 谷粒商城三阶段课件_苏科版初中物理九年级上册二、变阻器公开课优质课课件教案视频...