记录用户点击的操作历史,使用栈数据结构,频繁的操作栈顶(添加,获取,删除),使用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 linkedListHISTORY=new linkedList (); 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);
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持考高分网。



