在真正去开发一个独立的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 国际许可协议 进行许可,转载请注明文章出处。