全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

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<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小时内与您取得联系。