让你的Android项目更加整洁与清晰
2016-03-29 16:42
357 查看
Activity与Fragment作为Android UI布局中最重要的两种形式。
有些人喜欢将臃肿的逻辑代码全部写在activity里的onCreate()方法或者是fragment的onCreateView()里,
也有些人喜欢将Activity生命周期里的onCreate()中需要调用的方法封装在外部,使得Activity的生命周期整洁明了。
第一种人写的代码,在下称之为“臃肿代码”,第二种方式的人写的代码还有优化的地方。
第二种人仅仅是在单个Activity里的优化,可不可以在更多的Activity做同样的优化?
我们看一下我们的工程目录:
![](https://img-blog.csdn.net/20160329171640273?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
正如我们在一个Activity里一般都是三部:
①实例化控件,
②设置控件的适配器,
③设置控件子选项的点击监听事件;
那么让我们一起优化我们的代码吧。将大量Activity重复的步骤抽象出一个接口,让全部Activity实现这个接口,同时所有的Activity继承BaseActivity基类。例子:
一、定义一个接口ActivityMethod,声明所需要的方法。(方法多少和数目根据实际项目而定)
二、创建一个Activity的基类BaseActivity。
(注意:此处onCreate方法不需要setContentView指定相关的xml布局文件。)
把所有Activity都需要的方法放在他们的父类,即基类BaseActivity里。
Activity可以这么做,相信Fragment的类似优化对于你来说也不难。
当你的工程有10个Activity或者10个Fragment,也就可以让自己的代码整洁些。
有些人喜欢将臃肿的逻辑代码全部写在activity里的onCreate()方法或者是fragment的onCreateView()里,
也有些人喜欢将Activity生命周期里的onCreate()中需要调用的方法封装在外部,使得Activity的生命周期整洁明了。
第一种人写的代码,在下称之为“臃肿代码”,第二种方式的人写的代码还有优化的地方。
第二种人仅仅是在单个Activity里的优化,可不可以在更多的Activity做同样的优化?
我们看一下我们的工程目录:
正如我们在一个Activity里一般都是三部:
①实例化控件,
②设置控件的适配器,
③设置控件子选项的点击监听事件;
那么让我们一起优化我们的代码吧。将大量Activity重复的步骤抽象出一个接口,让全部Activity实现这个接口,同时所有的Activity继承BaseActivity基类。例子:
一、定义一个接口ActivityMethod,声明所需要的方法。(方法多少和数目根据实际项目而定)
package com.czz.note.library; public interface ActivityMethod { // 初始化控件 public void initView(); // 设置适配器 public void initAdapter(); // 设置监听事件 public void setListener(); }
二、创建一个Activity的基类BaseActivity。
(注意:此处onCreate方法不需要setContentView指定相关的xml布局文件。)
把所有Activity都需要的方法放在他们的父类,即基类BaseActivity里。
package com.czz.note.activity; import android.app.Activity; import android.content.Intent; import android.os.Bundle; public class BaseActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 这里不需要setContentView } // 界面跳转 public void startAnimActivity(Class<?> cla) { this.startActivity(new Intent(this, cla)); } }三、创建你的MainActivity,继承BaseActivity,并实现ActivityMethod接口。
package com.czz.note.activity; import com.czz.note.R; import com.czz.note.library.ActivityMethod; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.Toast; public class MainActivity extends BaseActivity implements ActivityMethod { private Button btn_jiaGouShi; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); initAdapter(); setListener(); } @Override public void initView() { Toast.makeText(MainActivity.this, "initView", Toast.LENGTH_SHORT).show(); btn_jiaGouShi = (Button) findViewById(R.id.btn_jiaGouShi); } @Override public void initAdapter() { Toast.makeText(MainActivity.this, "initAdapter", Toast.LENGTH_SHORT).show(); } @Override public void setListener() { Toast.makeText(MainActivity.this, "setListener", Toast.LENGTH_SHORT).show(); btn_jiaGouShi.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // 跳转到下一个界面,用到的确是BaseActivity里的方法 startAnimActivity(SecondActivity.class); } }); } }四、创建你的第二个Activity,你就可以轻松继承BaseActivity和实现ActivityMethod接口。
package com.czz.note.activity; import com.czz.note.R; import com.czz.note.library.ActivityMethod; import android.os.Bundle; import android.widget.Toast; public class SecondActivity extends BaseActivity implements ActivityMethod { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_second); // 假设没有控件需要适配器,这里就不需要initAdapter() initView(); setListener(); } @Override public void initView() { Toast.makeText(SecondActivity.this, "initView", Toast.LENGTH_SHORT).show(); } @Override public void initAdapter() { Toast.makeText(SecondActivity.this, "initAdapter", Toast.LENGTH_SHORT).show(); } @Override public void setListener() { Toast.makeText(SecondActivity.this, "setListener", Toast.LENGTH_SHORT).show(); } }
Activity可以这么做,相信Fragment的类似优化对于你来说也不难。
当你的工程有10个Activity或者10个Fragment,也就可以让自己的代码整洁些。
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories