对Activity的封装
public abstract class BaseActivity extends ActionBarActivity implements
DialogControl, VisibilityControl, View.OnClickListener {
protected LayoutInflater mInflater;
private ActionBar mActionBar;
private TextView mTvActionTitle;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (!hasActionBar()) {
supportRequestWindowFeature(Window.FEATURE_NO_TITLE);
}
onBeforeSetContentLayout();
if (getLayoutId() != 0) {
setContentView(getLayoutId());
}
mActionBar = getSupportActionBar();
mInflater = getLayoutInflater();
if (hasActionBar()) {
initActionBar(mActionBar);
}
init(savedInstanceState);
}
//是否有ActionBar
protected boolean hasActionBar() {
return true;
}
//布局文件
protected int getLayoutId() {
return 0;
}
protected View inflateView(int resId) {
return mInflater.inflate(resId, null);
}
//导航标题
protected int getActionBarTitle() {
return R.string.app_name;
}
//导航标题
public void setActionBarTitle(String title) {
if (hasActionBar()) {
if (mTvActionTitle != null) {
mTvActionTitle.setText(title);
}
mActionBar.setTitle(title);
}
}
//后退按钮
protected boolean hasBackButton() {
return false;
}
//初始化ActionBar
protected void initActionBar(ActionBar actionBar) {
if (actionBar == null)//若原本就通过系统没有获得该ActionBar,则直接进行返回
return;
if (hasBackButton()) {//判断是否有后退按钮
//设置显示方式,
actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
//获取系统自带的Actionbar的layout
int layoutRes = getActionBarCustomView();
//若没有,则执行为默认的layout(有后退按钮)
View view = inflateView(layoutRes == 0 ? R.layout.v2_actionbar_custom_backtitle
: layoutRes);
//找到后退按钮
View back = view.findViewById(R.id.btn_back);
if (back == null) {
throw new IllegalArgumentException(
"can not find R.id.btn_back in customView");
}
//设置后退按钮的Click事件
back.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//关闭当前的Activity
onBackPressed();
}
});
//获取title
mTvActionTitle = (TextView) view
.findViewById(R.id.tv_actionbar_title);
if (mTvActionTitle == null) {
throw new IllegalArgumentException(
"can not find R.id.tv_actionbar_title in customView");
}
int titleRes = getActionBarTitle();
if (titleRes != 0) {
mTvActionTitle.setText(titleRes);
}
//设置布局
LayoutParams params = new LayoutParams(LayoutParams.MATCH_PARENT,
LayoutParams.MATCH_PARENT);
actionBar.setCustomView(view, params);
} else {
//若没有后退按钮,则设置显示方式为只显示标题
actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_TITLE);
actionBar.setDisplayUseLogoEnabled(false);
int titleRes = getActionBarTitle();
if (titleRes != 0) {
//设置标题内容
actionBar.setTitle(titleRes);
}
}
}
//titile
public void setActionBarTitle(int resId) {
if (resId != 0) {
setActionBarTitle(getString(resId));
}
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
onBackPressed();
break;
default:
break;
}
return super.onOptionsItemSelected(item);
}
}