该圖片由Engin Akyurt在Pixabay上發布,本人結合了 Android Logo。
在真正去開發一個獨立的 APP 的過程中,我漸漸意識到將一些功能單獨寫成函數,一方面可以減少 OnCreate () 中的代碼量,一方面在某一功能出現問題時可以折疊其他功能。整體說來將功能函數化可以方便修改和閱讀,因此在那之後許多代碼我都進行了修改,比如對於獲取 TextView 的輸入這個例子:
username.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
username_text = s.toString();
}
});
此後需要使用同樣的功能時我會這樣寫:
OnCreate(){
username.addTextChangedListener(textwatcher);
}
TextWatcher textwatcher = new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
username_text = s.toString();
}
};
這樣對我進行修改維護而言方便了許多,我只需要去關注 OnCreate 外自己需要關注的部分,其餘部分可以被我折疊而不用去管。
將界面始終保持為橫屏或豎屏#
比如說我們在使用一些社交平台的 APP 時,如果某些界面會自動旋轉,一定程度上會使用戶體驗變得糟糕,因此不如固定其界面始終為橫屏 / 豎屏,如以下代碼便是將界面始終保持為豎屏:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
自定義退出確認框#
我們在使用返回手勢或返回鍵時,許多應用會彈出來一個對話框詢問你是否要退出,這一部分內容可以通過以下代碼實現:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
AlertDialog.Builder bdr = new AlertDialog.Builder(this);
bdr.setMessage(R.string.app_name);
bdr.setIcon(R.drawable.icon);
bdr.setMessage(R.string.whether_quit);
bdr.setNegativeButton(R.string.exit, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
finish();
}
});
bdr.setPositiveButton(R.string.cancel, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
bdr.show();
return true;
}
return super.onKeyDown(keyCode, event);
}
注意,由於這段代碼是對 onKeyDown 函數進行複寫,故 @override 不能省略。代碼中使用了 AlertDialog,setMessage 為要顯示的字符串,通常在 string.xml 文件中進行了定義(便於國際化),setIcon 則是用來放圖標,NegativeButton 和 PositiveButton 你可以只當作兩個按鈕來用,根據你設置的它們顯示的文字分別在 OnClick 中配置對應的功能即可。
終止一個 Activity#
如果我們的程式中有返回上一層這種按鈕,我們要真正實現返回上一層,而不是新打開一個 Activity,則應在點擊事件中使用 finish (); 來關閉當前 Activity,如以下代碼所示:
backtoindex.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
去掉默認的綠色標題欄#
默認生成的應用都有標題欄,十分不美觀,因此個人傾向想辦法去掉。在 AndroidManifest.xml 文件中,“android” 一欄,將對應的內容替換為:android:theme="@style/Theme.AppCompat.NoActionBar"
然後就可以成功去掉標題欄啦。
Webview 的 net:: ERR_CACHE_MISS 錯誤#
出現這個錯誤的原因是應用程式缺少聯網的權限,在 AndroidManifest.xml 文件的</application>
下新加一行,填上<uses-permission android:name="android.permission.INTERNET" />
就好了。