该图片由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" />
就好了。