package com.fly.tour.common.base; import android.content.pm.ActivityInfo; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v7.widget.Toolbar; import android.text.TextUtils; import android.view.View; import android.view.ViewStub; import android.widget.TextView; import com.fly.tour.common.R; import com.fly.tour.common.event.common.BaseActivityEvent; import com.fly.tour.common.manager.ActivityManager; import com.fly.tour.common.mvp.BaseView; import com.fly.tour.common.util.NetUtil; import com.fly.tour.common.view.LoadingInitView; import com.fly.tour.common.view.LoadingTransView; import com.fly.tour.common.view.NetErrorView; import com.fly.tour.common.view.NoDataView; import com.trello.rxlifecycle2.components.support.RxAppCompatActivity; import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.Subscribe; import org.greenrobot.eventbus.ThreadMode; /** * Description:
* Author: mxdl
* Date: 2018/1/16
* Version: V1.0.0
* Update:
*/ public abstract class BaseActivity extends RxAppCompatActivity implements BaseView { protected static final String TAG = BaseActivity.class.getSimpleName(); protected TextView mTxtTitle; protected Toolbar mToolbar; protected NetErrorView mNetErrorView; protected NoDataView mNoDataView; protected LoadingInitView mLoadingInitView; protected LoadingTransView mLoadingTransView; private boolean isrefresh = false; private ViewStub mViewStubToolbar; private ViewStub mViewStubContent; private ViewStub mViewStubInitLoading; private ViewStub mViewStubTransLoading; private ViewStub mViewStubNoData; private ViewStub mViewStubError; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); setContentView(R.layout.activity_root); initCommonView(); initView(); initListener(); initData(); EventBus.getDefault().register(this); ActivityManager.getInstance().addActivity(this); } protected void initCommonView() { mViewStubToolbar = findViewById(R.id.view_stub_toolbar); mViewStubContent = findViewById(R.id.view_stub_content); mViewStubContent = findViewById(R.id.view_stub_content); mViewStubInitLoading = findViewById(R.id.view_stub_init_loading); mViewStubTransLoading = findViewById(R.id.view_stub_trans_loading); mViewStubError = findViewById(R.id.view_stub_error); mViewStubNoData = findViewById(R.id.view_stub_nodata); if (enableToolbar()) { mViewStubToolbar.setLayoutResource(onBindToolbarLayout()); View view = mViewStubToolbar.inflate(); initToolbar(view); } mViewStubContent.setLayoutResource(onBindLayout()); mViewStubContent.inflate(); } protected void initToolbar(View view) { mToolbar = view.findViewById(R.id.toolbar_root); mTxtTitle = view.findViewById(R.id.toolbar_title); if (mToolbar != null) { setSupportActionBar(mToolbar); getSupportActionBar().setDisplayShowTitleEnabled(false); mToolbar.setNavigationOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { onBackPressed(); } }); } } @Override protected void onTitleChanged(CharSequence title, int color) { super.onTitleChanged(title, color); if (mTxtTitle != null && !TextUtils.isEmpty(title)) { mTxtTitle.setText(title); } //可以再次覆盖设置title String tootBarTitle = getTootBarTitle(); if (mTxtTitle != null && !TextUtils.isEmpty(tootBarTitle)) { mTxtTitle.setText(tootBarTitle); } } @Override protected void onDestroy() { super.onDestroy(); EventBus.getDefault().unregister(this); ActivityManager.getInstance().finishActivity(this); } public int onBindToolbarLayout() { return R.layout.common_toolbar; } public abstract int onBindLayout(); public abstract void initView(); public abstract void initData(); public void initListener() { } @Override public void finishActivity() { finish(); } public String getTootBarTitle() { return ""; } public boolean enableToolbar() { return true; } public void showInitLoadView() { showInitLoadView(true); } public void hideInitLoadView() { showInitLoadView(false); } @Override public void showTransLoadingView() { showTransLoadingView(true); } @Override public void hideTransLoadingView() { showTransLoadingView(false); } public void showNoDataView() { showNoDataView(true); } public void showNoDataView(int resid) { showNoDataView(true, resid); } public void hideNoDataView() { showNoDataView(false); } public void hideNetWorkErrView() { showNetWorkErrView(false); } public void showNetWorkErrView() { showNetWorkErrView(true); } private void showInitLoadView(boolean show) { if (mLoadingInitView == null) { View view = mViewStubInitLoading.inflate(); mLoadingInitView = view.findViewById(R.id.view_init_loading); } mLoadingInitView.setVisibility(show ? View.VISIBLE : View.GONE); mLoadingInitView.loading(show); } private void showNetWorkErrView(boolean show) { if (mNetErrorView == null) { View view = mViewStubError.inflate(); mNetErrorView = view.findViewById(R.id.view_net_error); mNetErrorView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (!NetUtil.checkNetToast()) { return; } hideNetWorkErrView(); initData(); } }); } mNetErrorView.setVisibility(show ? View.VISIBLE : View.GONE); } private void showNoDataView(boolean show) { if (mNoDataView == null) { View view = mViewStubNoData.inflate(); mNoDataView = view.findViewById(R.id.view_no_data); } mNoDataView.setVisibility(show ? View.VISIBLE : View.GONE); } private void showNoDataView(boolean show, int resid) { showNoDataView(show); if (show) { mNoDataView.setNoDataView(resid); } } private void showTransLoadingView(boolean show) { if (mLoadingTransView == null) { View view = mViewStubTransLoading.inflate(); mLoadingTransView = view.findViewById(R.id.view_trans_loading); } mLoadingTransView.setVisibility(show ? View.VISIBLE : View.GONE); mLoadingTransView.loading(show); } @Subscribe(threadMode = ThreadMode.MAIN) public void onEvent(BaseActivityEvent event) { } }