| | |
| | | import androidx.appcompat.app.AppCompatActivity; |
| | | import androidx.databinding.DataBindingUtil; |
| | | import androidx.databinding.ViewDataBinding; |
| | | import androidx.drawerlayout.widget.DrawerLayout; |
| | | import androidx.lifecycle.Observer; |
| | | import androidx.lifecycle.ViewModelProvider; |
| | | |
| | | import com.android.app_base.action.TitleBarAction; |
| | | import com.android.app_base.base.BaseApplication; |
| | | import com.android.app_base.base.action.ClickAction; |
| | | import com.android.app_base.base.viewmodel.BaseViewModel; |
| | | import com.android.app_base.base.StateViewEnum; |
| | | import com.android.app_base.utils.ScreenSizeUtils; |
| | | import com.blankj.utilcode.util.ToastUtils; |
| | | import com.gyf.immersionbar.ImmersionBar; |
| | | import com.hjq.bar.TitleBar; |
| | |
| | | /** |
| | | * Activity基类,所有的 Activity 都要继承此类 |
| | | */ |
| | | public abstract class BaseActivity<V extends ViewDataBinding,VM extends BaseViewModel> extends AppCompatActivity implements TitleBarAction, ClickAction { |
| | | protected V binding; |
| | | public abstract class BaseActivity<VDB extends ViewDataBinding,VM extends BaseViewModel> extends AppCompatActivity implements TitleBarAction, ClickAction { |
| | | protected VDB binding; |
| | | protected VM viewModel; |
| | | private int viewModelId; |
| | | |
| | | /** |
| | | * 标题栏对象 |
| | | */ |
| | |
| | | * 状态栏沉浸 |
| | | */ |
| | | private ImmersionBar mImmersionBar; |
| | | |
| | | |
| | | |
| | | @Override |
| | | protected void onCreate(@Nullable Bundle savedInstanceState) { |
| | |
| | | initView(); |
| | | //页面事件监听的方法,用于ViewModel层转到View层的事件注册 |
| | | initLiveDataObserve(); |
| | | |
| | | } |
| | | @Override |
| | | protected void onResume() { |
| | |
| | | initStateView(); |
| | | //初始化沉浸式状态栏和 titleBar |
| | | initStatusBar(); |
| | | initSoftKeyboard(); |
| | | } |
| | | |
| | | /** |
| | |
| | | */ |
| | | protected void initViewDataBindingAndViewModel() { |
| | | if (getLayoutId() > 0) { |
| | | binding = DataBindingUtil.setContentView(this, getLayoutId()); |
| | | initSoftKeyboard(); |
| | | binding = initViewBinding(); |
| | | } |
| | | viewModelId = getVariableId(); |
| | | viewModel = initViewModel(); |
| | |
| | | //让ViewModel拥有View的生命周期感应 |
| | | getLifecycle().addObserver(viewModel); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 初始化ViewBinding |
| | | */ |
| | | protected VDB initViewBinding() { |
| | | return DataBindingUtil.setContentView(this, getLayoutId()); |
| | | } |
| | | /** |
| | | * 初始化ViewModel |
| | |
| | | return new ViewModelProvider(this, (ViewModelProvider.Factory) ViewModelProvider.AndroidViewModelFactory.getInstance(getApplication())).get(vmClass); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 对状态视图liveData进行观察监听 |
| | | */ |