Android Activity与Fragment基类封装

2021-10-19更新

增加:

  • 加载弹框优化
  • 增加吐司
  • 返回键处理
  • 进入退出增加动画

Android 单例模式封装Toast

Activity进入退出动画


2021-8-11更新

增加:

  • 使用ButterKnife
  • 使用Activity管理
  • 增加加载弹框

前提:

Android ButterKnife基础篇

单例模式封装Activity管理类

等待弹框使用Dialog封装

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);
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值