android实现返回顶部|Android实现返回键操作思路

更新时间:2021-06-17    来源:php常用代码    手机版     字体:

【www.bbyears.com--php常用代码】

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

捕获用户的返回键操作,响应返回键,返回上一个界面

MainActivity.java

 代码如下

/**

 * 返回键处理

 */

@Override

publicbooleanonKeyDown(intkeyCode, KeyEvent event) {

  if(keyCode==KeyEvent.KEYCODE_BACK){

    booleanresult=MiddleManager.getInstance().goBack();

    if(!result){

      Toast.makeText(MainActivity.this,"是否退出应用",1).show();

    }

    returnfalse;

  }

  returnsuper.onKeyDown(keyCode, event);

}

MiddleManager.java

 代码如下

//操作历史栈

privateLinkedList HISTORY=newLinkedList();

/**

 * 处理返回键

 * @return

 */

publicbooleangoBack() {

  //如果为空会抛异常

  if(HISTORY.size()>0){

    if(HISTORY.size()==1){

      returnfalse;

    }

     

    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;

      returntrue;

    }

  }

  returnfalse;

}

 代码如下

/**

 * 加载界面

 */

publicvoidloadView(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);

}

本文来源:http://www.bbyears.com/jiaocheng/124365.html