package com.luckymonkey.ui.base;
import android.app.Activity;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.content.Intent;
import android.content.pm.ActivityInfo;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.util.DisplayMetrics;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.Toast;
import com.luckymonkey.R;
import com.luckymonkey.util.SpUtil;
import com.umeng.analytics.MobclickAgent;
public abstract class BaseActivity extends FragmentActivity {
protected boolean mSlideFinish = false;
protected int mDownX = 0;
protected int finishAnimId = 0;
protected Intent mIntent;
protected boolean isStartActivity = false;
protected Toast mShortToast = null;
protected Toast mLongToast = null;
public SpUtil mSpUtil;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
mSpUtil = SpUtil.getInstance(this);
}
@Override
public void setContentView(int layoutResID) {
super.setContentView(layoutResID);
// 调用顺序
onInit();
onFindViews();
onInitViewData();
onBindListener();
}
public OnClickListener mBackClickListener = new OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
};
public void setUp() {
}
public void setTitle(String title) {
}
/**
* 初始�?优先顺序�?br/>
* <font color=red>onInit();</font><br/>
* onFindViews();<br/>
* onInitViewData();<br/>
* onBindListener();<br/>
*/
public abstract void onInit();
/**
* 查找控件 <br/>
* 优先顺序�?br/>
* onInit();<br/>
* <font color=red>onFindViews();</font><br/>
* onInitViewData();<br/>
* onBindListener();<br/>
*/
public abstract void onFindViews();
/**
* 初始化控件内�?优先顺序�?br/>
* onInit();<br/>
* onFindViews();<br/>
* <font color=red>onInitViewData();</font><br/>
* onBindListener();<br/>
*/
public abstract void onInitViewData();
/**
* 注册控件事件 优先顺序�?br/>
* onInit();<br/>
* onFindViews();<br/>
* onInitViewData();<br/>
* <font color=red>onBindListener();</font><br/>
*/
public abstract void onBindListener();
/**
* 打开滑动�?��此Activity的功�?<功能详细描述>
*
* @param isOpen
* @see [类�?�?方法、类#成员]
*/
public void setSlide2Finish(boolean isOpen) {
mSlideFinish = isOpen;
}
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
boolean res = super.dispatchTouchEvent(ev);
// YLog.i(this, "dispatchTouchEvent="+ev.getAction()+" "+res);
if (mSlideFinish) {
int action = ev.getAction();
switch (action) {
case MotionEvent.ACTION_DOWN:
mDownX = (int) ev.getRawX();
break;
case MotionEvent.ACTION_UP:
Window window = this.getWindow();
DisplayMetrics dm = new DisplayMetrics();
window.getWindowManager().getDefaultDisplay().getMetrics(dm);
if (Math.abs((ev.getRawX() - mDownX)) > (dm.widthPixels / 3)) {
this.finish();
}
break;
}
}
return res;
}
/**
* 结束此activity时动�?从左边移到右�?<功能详细描述>
*
* @see [类�?�?方法、类#成员]
*/
public void finishWithLeftAnim() {
finishAnimId = R.anim.from_left_out;
}
/**
* 结束此activity时动�?从上�?��移动 <功能详细描述>
*
* @see [类�?�?方法、类#成员]
*/
public void finishWithDownAnim() {
finishAnimId = R.anim.from_up_out;
}
/**
* Toast 短时间显�?<功能详细描述>
*
* @param message
* @see [类�?�?方法、类#成员]
*/
public void showToastShort(String message) {
Toast.makeText(this, message, Toast.LENGTH_SHORT).show();
}
public void showToastShort(int id) {
Toast.makeText(this, id, Toast.LENGTH_SHORT).show();
}
/**
* Toast 长时间显�?<功能详细描述>
*
* @param message
* @see [类�?�?方法、类#成员]
*/
public void showToastLong(String message) {
Toast.makeText(this, message, Toast.LENGTH_LONG).show();
}
/**
* Toast <功能详细描述>
*
* @param str资源ID
* @see [类�?�?方法、类#成员]
*/
public void showToast(int strResID) {
String msgStr = this.getResources().getString(strResID);
showToastLong(msgStr);
}
/**
* 显示提示
*
* @param message
*/
public void showToast(String message) {
showToastLong(message);
}
// jiang add
protected Dialog progressDialog;
protected Activity getActivity() {
return this;
}
protected void runOnUiThreadSafety(final Runnable runnable) {
Activity activity = getActivity();
if (activity == null) {
return;
}
if (runnable == null) {
return;
}
try {
activity.runOnUiThread(runnable);
} catch (Exception e) {
e.printStackTrace();
}
}
protected void toCloseProgressMsg() {
runOnUiThreadSafety(new Runnable() {
@Override
public void run() {
closeProgressDialog();
}
});
}
protected Dialog getProgressDialog(String msg) {
ProgressDialog dialog = new ProgressDialog(getActivity());
dialog.setMessage(msg);
return dialog;
}
private void closeProgressDialog() {
if (progressDialog != null && progressDialog.isShowing() && progressDialog.getWindow() != null) {
progressDialog.dismiss();
}
}
protected void toShowProgressMsg(final String msg) {
runOnUiThreadSafety(new Runnable() {
@Override
public void run() {
if (progressDialog != null && progressDialog.isShowing()) {
if (progressDialog instanceof ProgressDialog) {
((ProgressDialog) progressDialog).setMessage(msg);
} else {
try {
progressDialog.getClass().getMethod("setMessage", String.class).invoke(progressDialog, msg);
} catch (Exception e) {
e.printStackTrace();
}
}
} else {
progressDialog = getProgressDialog(msg);
progressDialog.show();
}
}
});
}
@Override
protected void onResume() {
super.onResume();
isStartActivity = false;
MobclickAgent.onResume(this);
}
@Override
protected void onPause() {
super.onPause();
MobclickAgent.onPause(this);
}
@Override
public void finish() {
super.finish();
if (finishAnimId != 0) {
overridePendingTransition(R.anim.none, finishAnimId);
}
}
@Override
protected void onDestroy() {
super.onDestroy();
}
}