Android开发笔记(一)

  1. 1. 将界面始终保持为横屏或竖屏
  2. 2. 自定义退出确认框
  3. 3. 终止一个Activity
  4. 4. 去掉默认的绿色标题栏
  5. 5. Webview的net:: ERR_CACHE_MISS错误

本文记录了对于安卓开发的一些功能实现的学习。

该图片由Engin AkyurtPixabay上发布,本人结合了Android Logo。

在真正去开发一个独立的APP的过程中,我渐渐意识到将一些功能单独写成函数,一方面可以减少OnCreate()中的代码量,一方面在某一功能出现问题时可以折叠其他功能。整体说来将功能函数化可以方便修改和阅读,因此在那之后许多代码我都进行了修改,比如对于获取TextView的输入这个例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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();
}
});

此后需要使用同样的功能时我会这样写:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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);

自定义退出确认框

我们在使用返回手势或返回键时,许多应用会弹出来一个对话框询问你是否要退出,这一部分内容可以通过以下代码实现:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
@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,如以下代码所示:

1
2
3
4
5
6
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" />就好了。