细节一,
当页面回到开始页面的时候双击退出应用程序
关键点:
- 重写OnKeyDown方法,监听返回按钮点击事件
- 开启一个子线程实现双击退出
- 退出应用程序的方法
关键点一,在需要实现双击跳转的页面重写该方法
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode==KeyEvent.KEYCODE_BACK){
exitBy2Click(); //调用双击退出函数
}
return false;
}
关键点二,双击退出应用的函数
/**
* 双击退出函数
*/
private static Boolean isExit=false;
private void exitBy2Click(){
Timer tExit=null;
if(isExit==false){
isExit = true; // 准备退出
Toast.makeText(this, "再按一次退出程序", Toast.LENGTH_SHORT).show();
tExit = new Timer();
tExit.schedule(new TimerTask() {
@Override
public void run() {
isExit = false; // 取消退出
}
},2000);// 如果2秒钟内没有按下返回键,则启动定时器取消掉刚才执行的任务
}else {
//关键点三,退出程序方法
finish();
System.exit(0);
}
}
细节二
描述:点击屏幕空白页面,关闭软键盘
在项目的BaseActivity中复写onTouchEvent()方法,其他Activity继承该Activity即可
public class BaseActivity extends AppCompatActivity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
if(event.getAction()==MotionEvent.ACTION_DOWN){
if(BaseActivity.this.getCurrentFocus()!=null){
if(BaseActivity.this.getCurrentFocus().getWindowToken()!=null){
imm.hideSoftInputFromWindow(BaseActivity.this.getCurrentFocus().getWindowToken(),
InputMethodManager.HIDE_NOT_ALWAYS);
}
}
}
return super.onTouchEvent(event);
}
}
细节3,
设置EditTextView 默认不获取焦点
给EditTextView的父布局设置一个焦点,这样EditTextView就不会得到焦点
android:focusable="true"
android:focusableInTouchMode="true"