记录用户点击的操作历史,使用栈数据结构,频繁的操作栈顶(添加,获取,删除),使用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 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实现返回键操作思路相关推荐

  1. Android三大按钮,模拟Android导航栏三大金刚按键点击

    模拟Android导航栏三大金刚按键点击 这里需要使用的是AccessibilityService无障碍辅助服务,可以全局监听界面所有的变化: 1.构建无障碍服务 public class Float ...

  2. Html怎样设置返回按钮,ppt怎么设置返回按钮

    在制作幻灯片的时候,要怎么在幻灯片中设置一个返回按钮呢?下面学习啦小编就为你介绍ppt怎么设置返回按钮的方法啦! ppt怎么设置按钮的方法: 打开幻灯片文件,然后在菜单栏中点击"插入&quo ...

  3. iOS 自定义返回按钮,保留系统滑动返回

    1.简介 使用苹果手机,最喜欢的就是用它的滑动返回.作为一个开发者,我们在编写很多页面的时候,总是会因为这样那样的原因使得系统的滑动返回不可用.使用导航栏push出一个控制器,我们在控制器中自定义了一 ...

  4. android 中间按钮突出,Android 实现 按钮从两边移到中间动画效果

    Android 实现 按钮从两边移到中间动画效果html package org.shuxiang.test; import android.app.Activity; import android. ...

  5. android中按钮间隔,Android布局有2个均匀间隔的按钮

    我有这个布局正常工作,相对布局与文本视图和两个按钮均匀分布在它下面. android:layout_width="fill_parent" android:layout_heigh ...

  6. android eclipse 按钮事件,android eclipse按钮的OnClick事件 - java

    我有2个文件:main_activity.xml和home.xml.我在main_activity.xml中做了一个按钮 这是代码片段: xmlns:tools="http://schema ...

  7. android开发按钮颜色,Android编程实现简单设置按钮颜色的方法

    本文实例讲述了Android编程实现简单设置按钮颜色的方法.分享给大家供大家参考,具体如下: 1.工程目录 a.在res目录-新建drawble文件夹放入自定义图片 2.main.xml androi ...

  8. android 方形按钮代码,Android中实现图文并茂的按钮实例代码

    效果图如下所示: 代码: android:orientation="horizontal" android:layout_width="match_parent" ...

  9. kotlin android获取按钮,Kotlin Android按钮

    Android Button是用于在单击时执行事件的按钮.它是android.widget.Button类下的一个UI组件.要了解有关Android Button的更多信息, 请参阅Android B ...

  10. android 去掉按钮阴影效果,Android去掉button阴影

    鼠标右击[我的电脑]选择[属性] 在[属性]窗口中选择[高级]标签 在[高级]标签页面下选择[性能] [设置] 在打开的窗口中把:[在桌面上为图表标签使用阴影]前面选中,确定退出,就OK了. 今天弄一 ...

最新文章

  1. java 虚拟机 参数_Java虚拟机的参数
  2. python嵌入式系统开发_Python在开发实时嵌入式系统中的作用
  3. IT Monitor
  4. css - clearfix-清除浮动
  5. 听说你还不懂哈夫曼树和哈夫曼编码
  6. 【转载】(Git)用动图展示10大Git命令
  7. 计算机辅助设计利用计算机的,计算机基础知识:计算机辅助设计
  8. js中出现missing ) after argument list
  9. C# image转byte[] byte[]转image
  10. 第三章CDMA的原理和应用(1)
  11. 用R语言进行数据可视化的综合指南(一)
  12. Python 数据恢复实战 - 恢复U盘中的chk文件,以及误删的文件
  13. 【图像修复】论文阅读笔记 ----- 《Image inpainting based on deep learning: A review》
  14. 荣耀 MagicBook 系列新品发布会汇总:多款锐龙本、平板电脑登场~~~
  15. 隐私保护 举例_完美保护隐私
  16. java eav_entity-framework-4 – 实体框架4和ddd中的EAV
  17. 概念一: python 中列表 ,数组, 集合,字典;
  18. poj 1205 :Water Treatment Plants (DP+高精度)
  19. 华为手机的分类有何区别_华为手机系列如何选择-华为手机分类四个系列那个系列好-PC6教学视频...
  20. openal android 编译,Android OpenAL编译

热门文章

  1. 详解:MySQL数据库的权限管理和运维实操
  2. 剑指offer面试题09. 用两个栈实现队列(队列、栈)
  3. python实现人脸检测及识别(3)---- 识别真正的boss
  4. 核方法(kernel method)的主要思想
  5. leetcode 682. 棒球比赛(Baseball Game)
  6. FatFs源码剖析(转)
  7. 《PRML.Translation》pdf
  8. 使用HslCommunication实现PLC数据的远程客户端监视,以及web端实时监视,远程操作设备示例...
  9. 转件工程--实践者的研究方法阅读笔记1
  10. View的事件处理流程