本文记录了对于安卓开发的一些功能实现的学习。
该图片由Engin Akyurt 在Pixabay 上发布,本人结合了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" />
就好了。