package com.base;
import android.content.Context;
import android.databinding.DataBindingUtil;
import android.databinding.ViewDataBinding;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.app.AppCompatDelegate;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import com.apt.TRouter;
import com.base.util.MPermissionUtils;
import com.base.util.SpUtil;
import com.ui.main.R;
import com.view.widget.SwipeBackLayout;
public abstract class DataBindingActivity<B extends ViewDataBinding> extends AppCompatActivity {
protected Toolbar toolbar;
public Context mContext;
public B mViewBinding;
static {
AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
View rootView = getLayoutInflater().inflate(this.getLayoutId(), null, false);
mViewBinding = DataBindingUtil.bind(rootView);
this.setContentView(getLayoutId(), rootView);
TRouter.bind(this);
mContext = this;
initPresenter();
initToolBar();
initView();
}
protected void initPresenter() {
}
private void initToolBar() {
toolbar = (Toolbar) findViewById(R.id.toolbar);
if (toolbar != null) {
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
}
public void reload() {
AppCompatDelegate.setDefaultNightMode(SpUtil.isNight() ? AppCompatDelegate.MODE_NIGHT_YES : AppCompatDelegate.MODE_NIGHT_NO);
getWindow().setWindowAnimations(R.style.WindowAnimationFadeInOut);
recreate();
}
public void setContentView(int layoutResID, View rootView) {
boolean isNotSwipeBack = layoutResID == R.layout.activity_main || layoutResID == R.layout.activity_flash;
super.setContentView(isNotSwipeBack ? rootView : getContainer(rootView));
}
private View getContainer(View rootView) {
rootView.setBackgroundColor(getResources().getColor(R.color.alpha_white));
View container = getLayoutInflater().inflate(R.layout.activity_base, null, false);
SwipeBackLayout swipeBackLayout = (SwipeBackLayout) container.findViewById(R.id.swipeBackLayout);
swipeBackLayout.setDragEdge(SwipeBackLayout.DragEdge.LEFT);
View ivShadow = container.findViewById(R.id.iv_shadow);
swipeBackLayout.addView(rootView);
swipeBackLayout.setOnSwipeBackListener((fa, fs) -> ivShadow.setAlpha(1 - fs));
return container;
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
if (-1 != getMenuId()) getMenuInflater().inflate(getMenuId(), menu);
return true;
}
public int getMenuId() {
return -1;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == android.R.id.home) onBackPressed();
return super.onOptionsItemSelected(item);
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
MPermissionUtils.onRequestPermissionsResult(requestCode, permissions, grantResults);
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
public abstract int getLayoutId();
public abstract void initView();
}