Android封裝BaseActivity
Activity在我們的日常開發(fā)中應(yīng)該是最為常用的組件了蓖议,基礎(chǔ)的使用大家肯定都是會(huì)用的,但是有的時(shí)候我們需要把它封裝一下俺榆,功能大概如下:
- 抽象出公共方法,增強(qiáng)代碼復(fù)用的邏輯
- 統(tǒng)一管理ActionBar
- 統(tǒng)一管理Toast,Log,Dialog
直接上代碼吧,好像沒什么可說的了
//BaseActivity.java
public abstract class BaseActivity extends AppCompatActivity implements DialogControl, BaseViewInterface {
private boolean _isVisible = false;
protected LayoutInflater mInflater;
protected ViewGroup mActionBar;
private LoadingUtils loading;
private String mActionBarTitle;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
onBeforeSetContentLayout();
if (getLayoutId() != 0) {
LinearLayout layout = new LinearLayout(this);
layout.setOrientation(LinearLayout.VERTICAL);
if (hasBackButton()) {
mActionBar = (ViewGroup) LayoutInflater.from(this).inflate(R.layout.action_bar_layout, null);
TextView tv = (TextView) mActionBar.findViewById(R.id.action_bar_title);
tv.setText(getActionBarTitle());
mActionBar.findViewById(R.id.action_bar_back).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Log.e("lin", "---lin---> 111111111111111111111111");
finish();
}
});
layout.addView(mActionBar);
}
View view = LayoutInflater.from(this).inflate(getLayoutId(), null);
layout.addView(view);
setContentView(layout);
}
ButterKnife.bind(this);
init(savedInstanceState);
initData();
initViews();
}
@Override
protected void onPause() {
super.onPause();
}
@Override
protected void onResume() {
super.onResume();
}
protected void onBeforeSetContentLayout() {
}
protected int getLayoutId() {
return 0;
}
protected View inflateView(int resId) {
return mInflater.inflate(resId, null);
}
protected String getActionBarTitle() {
return mActionBarTitle;
}
protected boolean hasBackButton() {
return false;
}
protected boolean hasActionBar() {
return false;
}
protected void init(Bundle savedInstanceState) {
}
@Override
public void showWaitDialog() {
if (_isVisible) {
return;
}
_isVisible = true;
loading = new LoadingUtils(this).setMessage("正在加載,請(qǐng)稍后...");
loading.show();
}
@Override
public void hideWaitDialog() {
if (_isVisible && loading != null) {
_isVisible = false;
loading.dismiss();
}
}
}
//DialogControl.java
public interface DialogControl {
public abstract void showWaitDialog();
public abstract void hideWaitDialog();
}
//BaseViewInterface.java
public interface BaseViewInterface {
void initViews();
void initData();
}
以上便是對(duì)Activity的封裝~