Android实现返回键功能

 更新时间:2016年06月29日 10:15:28   作者:陶士涵  
本文给大家介绍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实现返回键功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

相关文章

  • 21天学习android开发教程之MediaPlayer

    21天学习android开发教程之MediaPlayer

    21天学习android开发教程之MediaPlayer,MediaPlayer可以播放音频和视频,操作相对简单,感兴趣的小伙伴们可以参考一下
    2016-02-02
  • Android面试题问答整理

    Android面试题问答整理

    今天小编就为大家分享一篇关于Android面试题问答整理,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12
  • android md5加密与rsa加解密实现代码

    android md5加密与rsa加解密实现代码

    本文将详细介绍android上的MD5和RSA的加解密实现代码分享,需要了解更多的朋友可以参考下
    2012-12-12
  • Android自定义View实现饼状图带动画效果

    Android自定义View实现饼状图带动画效果

    这篇文章主要为大家详细介绍了Android自定义View实现饼状图带动画效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-12-12
  • Android编程设计模式之中介者模式详解

    Android编程设计模式之中介者模式详解

    这篇文章主要介绍了Android编程设计模式之中介者模式,结合实例形式详细分析了Android中介者模式的概念、原理、使用场景、用法及相关操作注意事项,需要的朋友可以参考下
    2017-12-12
  • Android星级评分条的实现代码

    Android星级评分条的实现代码

    这篇文章主要为大家详细介绍了Android星级评分条的实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-09-09
  • Flutter 使用Navigator进行局部跳转页面的方法

    Flutter 使用Navigator进行局部跳转页面的方法

    这篇文章主要介绍了Flutter 使用Navigator进行局部跳转页面的方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-05-05
  • Android开源项目PullToRefresh下拉刷新功能详解2

    Android开源项目PullToRefresh下拉刷新功能详解2

    这篇文章主要为大家进一步的介绍了Android开源项目PullToRefresh下拉刷新功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-09-09
  • Android NDK开发简单程序分享(Hello Word!)

    Android NDK开发简单程序分享(Hello Word!)

    本文主要对Android NDK开发简单程序(Hello Word!)的实现步骤及方法进行详细介绍。具有很好的参考价值,需要的朋友一起来看下吧
    2016-12-12
  • Android自动提示控件AutoCompleteTextView

    Android自动提示控件AutoCompleteTextView

    这篇文章主要介绍了Android自动提示控件AutoCompleteTextView的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-12-12

最新评论