[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] 实现返回键操作思路的更多相关文章
- Android Activity返回键控制的两种方式
Android Activity返回键监听的两种方式 1.覆写Activity的OnBackPressed方法 官方解释: Called when the activity has detected ...
- android双击返回键退出程序
今天给大家简单说一下,android双击返回键退出程序. @Override public boolean onKeyDown(int keyCode, KeyEvent event) { ...
- ionic中android的返回键
ionic中android的返回键 在ionic框架中已经注册了几个返回事件,分别是 view sideMenu modal actionSheet popup loading 他们的优先级分别是 v ...
- React Native 适配Android物理返回键,实现连续两次点击退出
一直使用iPhone作为测试机开发,提交给测试同事Android版本后发现很多适配问题,其中一个非常明显的是,弹出一个modal后,点击Android的返回键,modal不会消失,直接navigati ...
- Unity响应Android的返回键,退出当前Activity
一:使用 Application.Quit() public void Update() { if(Input.GetKeyDown(KeyCode.Escape)) Application.Quit ...
- Android监视返回键
android在发展中,监视键返回到后事件经常被用来,在下面的例子来说明什么android返回键事件监听器. public class BackKeyTest extends Activity { / ...
- RN—Android 物理返回键监听
A → B 使用 navigator 导航,用 goBack() 返回的时候传递参数 在 A 页面 this.props.navigation.navigate("B", { ca ...
- android 实现返回键执行home键方法
在公司的产品开发,中老板很是执着于,不要看到启动界面,但是又不想去掉启动界面. so 实现返回键执行home键方法. public boolean onKeyDown(int keyCode, Key ...
- android双击返回键退出程序的实现
/** * 菜单.返回键响应 */ @Override public boolean onKeyDown(int keyCode, KeyEvent event) { // TODO Auto-gen ...
随机推荐
- 让子类使用父类的Logger
参考博客:https://blog.csdn.net/zx1323/article/details/71262613 1.让子类使用父类的Logger,这是一种语法思路,可以减少代码臃肿. 2.使用的 ...
- luoguP3702 [SDOI2017]序列计数
https://www.luogu.org/problemnew/show/P3702 题目让我们在 $ [1, m] $ 从中选出 $ n $ 个数,当中要有 > $ 0 $ 个质数,和是 $ ...
- [Flex] 组件Tree系列 —— 利用firstVisibleItem属性,设置或取得第一个显示节点
mxml: <?xml version="1.0" encoding="utf-8"?> <!--功能描述: 利用firstVisibleIt ...
- 【redis基础】
基础知识 http://www.runoob.com/redis/redis-partitioning.html redis性能分析 https://www.cnblogs.com/mushroom/ ...
- java 优秀文章集锦
一个简易的静态网页服务器 https://www.cnblogs.com/longfurcat/p/10355514.html 浅析Servlet执行原理 https://www.cnblo ...
- Flink学习笔记:Flink开发环境搭建
本文为<Flink大数据项目实战>学习笔记,想通过视频系统学习Flink这个最火爆的大数据计算框架的同学,推荐学习课程: Flink大数据项目实战:http://t.cn/EJtKhaz ...
- ghj1222被坑记录[不持续更新]
考试注意事项:link1 link2 (密码:wangle) 调不出来bug,可以先透彻一会儿或者是上个厕所或者坐一会别的题(间隔至少20min),然后通读代码 -1. 考试先读题,读题之后搞出一个做 ...
- leetcode-119-Pascal's Triangle II(生成某一行的帕斯卡三角形)
题目描述: Given a non-negative index k where k ≤ 33, return the kth index row of the Pascal's triangle ...
- 前端统计图 echarts 实现简单柱状图
前端统计图 echarts实现简单柱状图 1. 引入 ECharts <!DOCTYPE html> <html> <head> <meta charse ...
- [转] 在Jenkins Pipeline DSL中 遍历 groovy list
[From] https://stackoverflow.com/questions/36360097/iterating-a-groovy-list-in-jenkins-pipeline-dsl ...