导语:
正常Activity的活动总是多变的,如果一个大项目有太多重复散乱的Activity,中间每个Activity有很多重复代码的话显得项目很乱而且代码大量冗余,我们就抽出常用功能,做一个Activity的父类,集中管理我们的每个Activity;
先贴代码:
/**
* Created by Administrator on 2016/7/27.
*/
public class ManagementActivity extends AppCompatActivity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 添加Activity到堆栈
AppManager.getAppManager().addActivity(this);
// 修改状态栏颜色,4.4+生效
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
setTranslucentStatus();
}
SystemBarTintManager tintManager = new SystemBarTintManager(this);
tintManager.setStatusBarTintEnabled(true);
tintManager.setStatusBarTintResource(R.color.accentLight);//通知栏所需颜色
}
@Override
protected void onDestroy() {
super.onDestroy();
// 结束Activity从堆栈中移除
AppManager.getAppManager().finishActivity(this);
}
@TargetApi(19)
protected void setTranslucentStatus() {
Window window = getWindow();
// Translucent status bar
window.setFlags(
WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS,
WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
}
/*
* 指定findViewByID泛型
* */
protected <T extends View> T findView(int id){
return (T)findViewById(id);
}
//返回键逻辑
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if(keyCode==KeyEvent.KEYCODE_BACK)
{
this.finish();
overridePendingTransition(android.R.anim.slide_in_left,android.R.anim.slide_out_right);
}
return super.onKeyDown(keyCode, event);
}
}
怎么用这个类:
public class AdressChoseActivity extends ManagementActivity implements AdapterView.OnItemClickListener{
简单分析:
我们activity 有一些比如 被杀死时候的堆栈排序,初始化控件(findView),返回键的逻辑重写,这些小功能都是可以抽出来的,因此我们创造了这个“管理员类“,对一般的活动类目进行管理,以此类推,我们这种思想也可以抽象出Fragment管理类,各种工具类(下篇文章归纳),用这种思想去写代码,使干净清洁。