記錄用戶點(diǎn)擊的操作歷史,使用棧數(shù)據(jù)結(jié)構(gòu),頻繁的操作棧頂(添加,獲取,刪除),使用LinkedList
捕獲用戶的返回鍵操作,響應(yīng)返回鍵,返回上一個(gè)界面
MainActivity.java
/*** 返回鍵處理*/@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {if(keyCode==KeyEvent.KEYCODE_BACK){boolean result=MiddleManager.getInstance().goBack();if(!result){Toast.makeText(MainActivity.this, "是否退出應(yīng)用", 1).show();}return false;}return super.onKeyDown(keyCode, event);}MiddleManager.java
//操作歷史棧private LinkedList<String> HISTORY=new LinkedList<String>();/*** 處理返回鍵* @return */public boolean goBack() {//如果為空會(huì)拋異常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實(shí)現(xiàn)返回鍵功能,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)武林網(wǎng)網(wǎng)站的支持!
新聞熱點(diǎn)
疑難解答
圖片精選