package com.llf.basemodel.base; import android.content.Context; import android.content.Intent; import android.graphics.Color; import android.os.Build; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v7.app.AppCompatActivity; import android.view.LayoutInflater; import android.view.View; import android.view.Window; import android.view.WindowManager; import android.widget.TextView; import com.llf.basemodel.R; import com.llf.basemodel.dialog.DialogTools; import com.llf.basemodel.utils.AppManager; import com.llf.basemodel.utils.ToastUtil; import butterknife.ButterKnife; import rx.subscriptions.CompositeSubscription; /** * Created by llf on 2017/3/1. * 基础的Activity */ public abstract class BaseActivity extends AppCompatActivity { private CompositeSubscription mSubscriptions; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); //透明状态栏 // if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { // getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); // } AppManager.instance.addActivity(this); setContentView(getLayoutId()); ButterKnife.bind(this); this.initView(); } @Override protected void onStart() { super.onStart(); } @Override protected void onResume() { super.onResume(); } @Override protected void onPause() { super.onPause(); } @Override protected void onStop() { super.onStop(); } @Override protected void onNewIntent(Intent intent) { super.onNewIntent(intent); //当模式为singleTop和SingleInstance会回调到这里 } @Override protected void onDestroy() { super.onDestroy(); AppManager.instance.removeActivity(this); ButterKnife.unbind(this); if (mSubscriptions != null) { mSubscriptions.clear(); } BaseApplication.getRefWatcher(this).watch(this); } public void startActivity(Class<?> cls) { startActivity(cls, null); } /** * 含有Bundle通过Class跳转界面 **/ public void startActivity(Class<?> cls, Bundle bundle) { Intent intent = new Intent(this, cls); if (bundle != null) { intent.putExtras(bundle); } startActivity(intent); } public void startActivityForResult(Class<?> cls, int requestCode) { startActivityForResult(cls, null, requestCode); } public void startActivityForResult(Class<?> cls, Bundle bundle, int requestCode) { Intent intent = new Intent(this, cls); if (bundle != null) { intent.putExtras(bundle); } startActivityForResult(intent, requestCode); } /** * 跳转界面并关闭当前界面 * * @param clazz 目标Activity */ protected void startThenKill(Class<?> clazz) { startThenKill(clazz, null); } /** * @param clazz 目标Activity * @param bundle 数据 */ protected void startThenKill(Class<?> clazz, Bundle bundle) { startActivity(clazz, bundle); finish(); } /** * 5.0以上系统状态栏透明,国产手机默认透明 */ protected void setTranslucentStatus() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { Window window = getWindow(); window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE); window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); window.setStatusBarColor(Color.TRANSPARENT); } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); } } /** * 读取状态栏的高度 * * @param context * @return */ protected int getStatusBarHeight(Context context) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { int resourceId = context.getResources().getIdentifier("status_bar_height", "dimen", "android"); return resourceId > 0 ? context.getResources().getDimensionPixelSize(resourceId) : 0; } else { return 0; } } /** * 开启加载效果 */ public void startProgressDialog() { DialogTools.showWaittingDialog(this); } /** * 关闭加载 */ public void stopProgressDialog() { DialogTools.closeWaittingDialog(); } /** * 显示错误的dialog */ public void showErrorHint(String errorContent) { View errorView = LayoutInflater.from(this).inflate(R.layout.app_error_tip, null); TextView tvContent = (TextView) errorView.findViewById(R.id.content); tvContent.setText(errorContent); new ToastUtil(errorView); } /** * 显示普通的toast * * @return */ public void showToast(String str) { ToastUtil.sToastUtil.shortDuration(str).setToastBackground(Color.WHITE, R.drawable.toast_radius).show(); } //获取布局 protected abstract int getLayoutId(); //初始化布局和监听 protected abstract void initView(); }