Android實現返回鍵操作思路
更新時間:2017年02月11日 17:13:35 作者:陶士涵
這篇文章主要為大家詳細介紹了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 獲取APP的唯一標識applicationId的實例
下面小編就為大家分享一篇android 獲取APP的唯一標識applicationId的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-02-02
Android開發(fā)之AlarmManager的用法詳解
這篇文章主要介紹了Android開發(fā)之AlarmManager的用法,是Android應用開發(fā)中非常實用的技能,需要的朋友可以參考下2014-07-07
android中圖片的三級緩存cache策略(內存/文件/網絡)
實現圖片緩存也不難,需要有相應的cache策略。這里我采用 內存-文件-網絡 三層cache機制,其中內存緩存包括強引用緩存和軟引用緩存(SoftReference),其實網絡不算cache,這里姑且也把它劃到緩存的層次結構中2013-06-06
android 限制某個操作每天只能操作指定的次數(示例代碼詳解)
這篇文章主要介紹了android 限制某個操作每天只能操作指定的次數,本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-06-06
Android 滑動Scrollview標題欄漸變效果(仿京東toolbar)
這篇文章主要介紹了Android 滑動Scrollview標題欄漸變效果(仿京東toolbar),本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-01-01

