让你的Android项目更加整洁与清晰

Activity与Fragment作为Android UI布局中最重要的两种形式。

有些人喜欢将臃肿的逻辑代码全部写在activity里的onCreate()方法或者是fragment的onCreateView()里,

也有些人喜欢将Activity生命周期里的onCreate()中需要调用的方法封装在外部,使得Activity的生命周期整洁明了。

第一种人写的代码,在下称之为“臃肿代码”,第二种方式的人写的代码还有优化的地方。

第二种人仅仅是在单个Activity里的优化,可不可以在更多的Activity做同样的优化?

我们看一下我们的工程目录:

让你的Android项目更加整洁与清晰_第1张图片

正如我们在一个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,也就可以让自己的代码整洁些。

你可能感兴趣的:(Android)