編輯:關於Android編程
記錄用戶點擊的操作歷史,使用棧數據結構,頻繁的操作棧頂(添加,獲取,刪除),使用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);
}
以上所述是小編給大家介紹的Android實現返回鍵功能,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對本站網站的支持!
chromium for android 硬件渲染流程總結
render進程中 一.webkit模塊 webkit引擎會為網頁內容同時創建Dom tree, Render tree和RenderLayer tree. 這三棵樹之間
Android 安全加密:Https編程詳解
Android安全加密專題文章索引 Android安全加密:對稱加密 Android安全加密:非對稱加密 Android安全加密:消
Android性能優化之利用Rxlifecycle解決RxJava內存洩漏詳解
前言:其實RxJava引起的內存洩漏是我無意中發現了,本來是想了解Retrofit與RxJava相結合中是如何通過適配器模式解決的,結果卻發現了RxJava是會引起內存洩
Android基礎入門教程——8.3.8 Paint API之—— Xfermode與PorterDuff詳解(五)
本節引言: 好的,上一節中,我們又寫了一個關於Xfermode圖片混排的例子——擦美女衣服的Demo,加上前面的 利用Xfermode