Android实现返回键功能
记录用户点击的操作历史,使用栈数据结构,频繁的操作栈顶(添加,获取,删除),使用LinkedList
捕获用户的返回键操作,响应返回键,返回上一个界面
MainActivity.java
/** *返回键处理 */ @Override publicbooleanonKeyDown(intkeyCode,KeyEventevent){ 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<String>HISTORY=newLinkedList<String>(); /** *处理返回键 *@return */ publicbooleangoBack(){ //如果为空会抛异常 if(HISTORY.size()>0){ if(HISTORY.size()==1){ returnfalse; } HISTORY.removeFirst(); if(HISTORY.size()>0){ Stringkey=HISTORY.getFirst(); BaseViewtargetView=VIEWCACHE.get(key); mainContainer.removeAllViews(); Viewchild=targetView.getView(); mainContainer.addView(child); child.startAnimation(AnimationUtils.loadAnimation(mainContainer.getContext(),R.anim.left_to_right)); currentView=targetView; returntrue; } } returnfalse; } /** *加载界面 */ publicvoidloadView(Class<?extendsBaseView>baseViewClass){ BaseViewbaseView=null; //判断是否存在 Stringkey=baseViewClass.getSimpleName(); if(VIEWCACHE.containsKey(key)){ baseView=VIEWCACHE.get(key); }else{ try{ Constructor<?extendsBaseView>constructor; constructor=baseViewClass.getConstructor(Context.class); baseView=constructor.newInstance(mainContainer.getContext()); }catch(Exceptione){ e.printStackTrace(); } VIEWCACHE.put(key,baseView); } mainContainer.removeAllViews(); Viewchild=baseView.getView(); mainContainer.addView(child); child.startAnimation(AnimationUtils.loadAnimation(mainContainer.getContext(),R.anim.left_to_right)); currentView=baseView; //放入栈 HISTORY.addFirst(key); }
以上所述是小编给大家介绍的Android实现返回键功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!