Android开发笔记(一)
该图片由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:theme” 一栏,将对应的内容替换为:android:theme="@style/Theme.AppCompat.NoActionBar"
然后就可以成功去掉标题栏啦。
Webview的net:: ERR_CACHE_MISS错误
出现这个错误的原因是应用程序缺少联网的权限,在AndroidManifest.xml文件的</application>
下新加一行,填上<uses-permission android:name="android.permission.INTERNET" />
就好了。
除另有声明外,本博客文章均采用 知识共享(Creative Commons) 署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可,转载请注明文章出处。