2021-10-19更新
增加:
- 加载弹框优化
- 增加吐司
- 返回键处理
- 进入退出增加动画
2021-8-11更新
增加:
- 使用ButterKnife
- 使用Activity管理
- 增加加载弹框
前提:
BaseActivity
public abstract class BaseActivity extends AppCompatActivity implements IBaseView {
/**
* 加载弹框
*/
private Dialog loadingDialog;
/**
* 获取布局文件ID
*
* @return 返回布局ID
*/
protected abstract int getContentViewId();
/**
* 初始化控件
*/
protected void initView() {
}
/**
* 初始化数据
*/
protected void initData() {
}
/**
* 初始化设备
*/
protected void initDevice() {
}
/**
* 初始化监听器
*/
protected void addListeners() {
}
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
AppManager.getInstance().addActivity(this);
//进入动画
overridePendingTransition(R.anim.activity_next_enter, R.anim.activity_next_exit);
setContentView(getContentViewId());
//绑定ButterKnife
ButterKnife.bind(this);
init();
}
/**
* 初始化
*/
private void init() {
initView();
initData();
initDevice();
addListeners();
}
/**
* 销毁当前页面
*/
public void backEvent() {
AppManager.getInstance().finishActivity(this);
//退出动画
overridePendingTransition(R.anim.activity_up_enter, R.anim.activity_up_exit);
}
/**
* 吐司
*/
@Override
public void showToast(String message) {
ToastUtil.getInstance().showToast(message, R.layout.toast_message);
}
@Override
public void showLoading(String message) {
hideLoading();
loadingDialog = new WaitDialog(this).setCancelable(false).setText(message).builder();
loadingDialog.show();
}
@Override
public void showLoading() {
hideLoading();
loadingDialog = new WaitDialog(this).setCancelable(false).setText(getString(R.string.loading)).builder();
loadingDialog.show();
}
@Override
public void hideLoading() {
if (null != loadingDialog && loadingDialog.isShowing()) {
loadingDialog.dismiss();
}
}
/**
* 控制物理返回键是否可用
*/
protected boolean backKeyEnable() {
return false;
}
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
//处理返回按键 统一关闭Activity的方法
if (event.getKeyCode() == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN && event.getRepeatCount() == 0) {
if (backKeyEnable()) {
backEvent();
}
return true;
}
return super.dispatchKeyEvent(event);
}
@Override
public Context getContext() {
return this;
}
@Override
protected void onDestroy() {
super.onDestroy();
AppManager.getInstance().removeActivity(this);
}
}
BaseFragment
public abstract class BaseFragment extends Fragment implements IBaseView {
private Unbinder unbinder;
private Dialog loadingDialog;
/**
* 获取布局文件ID
*
* @return 返回布局ID
*/
protected abstract int getContentViewId();
/**
* 初始化控件
*/
protected void initView() {
}
/**
* 初始化数据
*/
protected void initData() {
}
/**
* 初始化设备
*/
protected void initDevice() {
}
/**
* 初始化监听器
*/
protected void addListeners() {
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View rootView = inflater.inflate(getContentViewId(), container, false);
unbinder = ButterKnife.bind(this, rootView);
return rootView;
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
init();
}
/**
* 初始化
*/
private void init() {
initView();
initData();
initDevice();
addListeners();
}
@Override
public void showToast(String message) {
ToastUtil.getInstance().showToast(message, R.layout.toast_message);
}
@Override
public void showLoading() {
hideLoading();
loadingDialog = new WaitDialog(getActivity()).setCancelable(false).setText(getString(R.string.loading)).builder();
loadingDialog.show();
}
@Override
public void showLoading(String message) {
hideLoading();
loadingDialog = new WaitDialog(getActivity()).setCancelable(true).setText(message).builder();
loadingDialog.show();
}
@Override
public void hideLoading() {
if (null != loadingDialog && loadingDialog.isShowing()) {
loadingDialog.dismiss();
}
}
@Override
public Context getContext() {
return getActivity();
}
@Override
public void onDestroyView() {
super.onDestroyView();
unbinder.unbind();
}
}
IBaseView
public interface IBaseView {
Context getContext();
void showLoading(String message);
void showLoading();
void hideLoading();
void showToast(String message);
}