細節處理
阿新 • • 發佈:2019-02-13
細節一,
當頁面回到開始頁面的時候雙擊退出應用程式
關鍵點:
- 重寫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"