欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android实现返回键功能

程序员文章站 2024-03-04 22:02:06
记录用户点击的操作历史,使用栈数据结构,频繁的操作栈顶(添加,获取,删除),使用linkedlist 捕获用户的返回键操作,响应返回键,返回上一个界面 mainacti...

记录用户点击的操作历史,使用栈数据结构,频繁的操作栈顶(添加,获取,删除),使用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实现返回键功能,希望对大家有所帮助