1. 程式人生 > >細節處理

細節處理

細節一

當頁面回到開始頁面的時候雙擊退出應用程式

關鍵點:

  1. 重寫OnKeyDown方法,監聽返回按鈕點選事件
  2. 開啟一個子執行緒實現雙擊退出
  3. 退出應用程式的方法

關鍵點一,在需要實現雙擊跳轉的頁面重寫該方法

@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"