package com.dreamspace.uucampus.ui.base; import android.content.Intent; import android.os.Bundle; import android.support.design.widget.Snackbar; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.view.Menu; import android.view.MenuItem; import android.view.MotionEvent; import android.view.View; import android.widget.Toast; import com.dreamspace.uucampus.R; import com.dreamspace.uucampus.common.VaryViewHelperController; import com.dreamspace.uucampus.common.utils.CommonUtils; import butterknife.ButterKnife; import retrofit.RetrofitError; /** * Created by Administrator on 2015/7/25 0025. */ public abstract class AbsActivity extends AppCompatActivity { protected Toolbar mToolBar; private VaryViewHelperController mVaryViewHelperController = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(getContentView()); initToolBar(); if (null != getLoadingTargetView()) { mVaryViewHelperController = new VaryViewHelperController(getLoadingTargetView()); } prepareDatas(); initViews(); } protected abstract int getContentView(); protected abstract void prepareDatas(); protected abstract void initViews(); protected abstract View getLoadingTargetView(); @Override public boolean onCreateOptionsMenu(Menu menu) { return super.onCreateOptionsMenu(menu); } @Override public boolean onOptionsItemSelected(MenuItem item) { int id = item.getItemId(); if (id == android.R.id.home) { onBackPressed(); } return super.onOptionsItemSelected(item); } protected void initToolBar() { mToolBar = (Toolbar) findViewById(R.id.tl_custom); setSupportActionBar(mToolBar); getSupportActionBar().setDefaultDisplayHomeAsUpEnabled(true); getSupportActionBar().setDisplayHomeAsUpEnabled(true); ButterKnife.bind(this); } /** * startActivity * * @param clazz */ protected void readyGo(Class<?> clazz) { Intent intent = new Intent(this, clazz); startActivity(intent); overridePendingTransition(R.anim.in_from_right,R.anim.out_to_left); } /** * startActivity with bundle * * @param clazz * @param bundle */ protected void readyGo(Class<?> clazz, Bundle bundle) { Intent intent = new Intent(this, clazz); if (null != bundle) { intent.putExtras(bundle); } startActivity(intent); overridePendingTransition(R.anim.in_from_right,R.anim.out_to_left); } /** * startActivity then finish * * @param clazz */ protected void readyGoThenKill(Class<?> clazz) { Intent intent = new Intent(this, clazz); startActivity(intent); overridePendingTransition(R.anim.in_from_right,R.anim.out_to_left); finish(); } /** * startActivity with bundle then finish * * @param clazz * @param bundle */ protected void readyGoThenKill(Class<?> clazz, Bundle bundle) { Intent intent = new Intent(this, clazz); if (null != bundle) { intent.putExtras(bundle); } startActivity(intent); overridePendingTransition(R.anim.in_from_right,R.anim.out_to_left); finish(); } /** * startActivityForResult * * @param clazz * @param requestCode */ protected void readyGoForResult(Class<?> clazz, int requestCode) { Intent intent = new Intent(this, clazz); startActivityForResult(intent, requestCode); overridePendingTransition(R.anim.in_from_right,R.anim.out_to_left); } /** * startActivityForResult with bundle * * @param clazz * @param requestCode * @param bundle */ protected void readyGoForResult(Class<?> clazz, int requestCode, Bundle bundle) { Intent intent = new Intent(this, clazz); if (null != bundle) { intent.putExtras(bundle); } startActivityForResult(intent, requestCode); overridePendingTransition(R.anim.in_from_right,R.anim.out_to_left); } /** * show toast * * @param msg */ protected void showToast(String msg) { if (null != msg && !CommonUtils.isEmpty(msg)) { Toast.makeText(this, msg, Toast.LENGTH_SHORT).show(); // Snackbar.make(getWindow().getDecorView(), msg, Snackbar.LENGTH_SHORT).show(); } } protected void showNetWorkError() { showToast(getResources().getString(R.string.network_error_tips)); } protected void showInnerError(RetrofitError error) { if (error != null) if(error.getBody() == null){ showToast(getString(R.string.request_time_out)); }else{ showToast(CommonUtils.getErrorInfo(error).getReason()); } } /** * toggle show loading * * @param toggle */ protected void toggleShowLoading(boolean toggle, String msg) { if (null == mVaryViewHelperController) { throw new IllegalArgumentException("You must return a right target view for loading"); } if (toggle) { mVaryViewHelperController.showLoading(msg); } else { mVaryViewHelperController.restore(); } } /** * toggle show empty * * @param toggle */ protected void toggleShowEmpty(boolean toggle, String msg, View.OnClickListener onClickListener) { if (null == mVaryViewHelperController) { throw new IllegalArgumentException("You must return a right target view for loading"); } if (toggle) { mVaryViewHelperController.showEmpty(msg, onClickListener); } else { mVaryViewHelperController.restore(); } } /** * toggle show error * * @param toggle */ protected void toggleShowError(boolean toggle, String msg, View.OnClickListener onClickListener) { if (null == mVaryViewHelperController) { throw new IllegalArgumentException("You must return a right target view for loading"); } if (toggle) { mVaryViewHelperController.showError(msg, onClickListener); } else { mVaryViewHelperController.restore(); } } /** * toggle show network error * * @param toggle */ protected void toggleNetworkError(boolean toggle, View.OnClickListener onClickListener) { if (null == mVaryViewHelperController) { throw new IllegalArgumentException("You must return a right target view for loading"); } if (toggle) { mVaryViewHelperController.showNetworkError(onClickListener); } else { mVaryViewHelperController.restore(); } } protected void toggleRestore(){ mVaryViewHelperController.restore(); } @Override protected void onDestroy() { super.onDestroy(); ButterKnife.unbind(this); } @Override public void onBackPressed() { super.onBackPressed(); overridePendingTransition(R.anim.in_from_left, R.anim.out_to_right); } }