您的位置:首页 > 移动开发 > Android开发

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

2016-03-29 16:42 357 查看
Activity与Fragment作为Android UI布局中最重要的两种形式。

有些人喜欢将臃肿的逻辑代码全部写在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,也就可以让自己的代码整洁些。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android 优化 模块