当前位置: 移动技术网 > 移动技术>移动开发>Android > Android实现返回键操作思路

Android实现返回键操作思路

2019年07月24日  | 移动技术网移动技术  | 我要评论
记录用户点击的操作历史,使用栈数据结构,频繁的操作栈顶(添加,获取,删除),使用linkedlist 捕获用户的返回键操作,响应返回键,返回上一个界面 mainacti

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持移动技术网。

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网