package com.partynetwork.iparty.app.ui;
import com.partynetwork.dataprovider.anim.SplashAnim;
import com.partynetwork.dataprovider.util.ApiKeyUtil;
import com.partynetwork.dataprovider.util.T;
import com.partynetwork.dataprovider.util.Util;
import com.partynetwork.iparty.R;
import com.partynetwork.iparty.app.AppConfig;
import com.partynetwork.iparty.app.AppContext;
import com.partynetwork.iparty.app.api.URLs;
import com.partynetwork.iparty.base.UpdateManager;
import com.baidu.android.pushservice.PushConstants;
import com.baidu.android.pushservice.PushManager;
import com.lidroid.xutils.HttpUtils;
import com.lidroid.xutils.exception.HttpException;
import com.lidroid.xutils.http.ResponseInfo;
import com.lidroid.xutils.http.callback.RequestCallBack;
import com.lidroid.xutils.http.client.HttpRequest.HttpMethod;
import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.os.Handler;
import android.os.Handler.Callback;
import android.os.Message;
import android.view.animation.Animation;
import android.view.animation.Animation.AnimationListener;
import android.widget.RelativeLayout;
/**
* 闪屏画面 com.dongcemedia.iparty.ui.Splash
*
* @author 沈跃双 Create at 2013-12-9 下午3:52:31
*/
public class Splash extends Activity implements Callback {
SplashAnim mSplash = new SplashAnim(2000);
private RelativeLayout mRelativeLayoutLogo;
/** 登陆进度提示框 */
boolean isFirstIn = false;
private static final int GO_HOME = 1000;
private static final int GO_GUIDE = 1001;
private static final String SHAREDPREFERENCES_NAME = "first_pref";
private Handler mHandler;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 设置闪屏视图布局
setContentView(R.layout.splash);
mHandler=new Handler(this);
getIpartyCode();
init();
}
/**
* 初始化方法
*/
private void init() {
mRelativeLayoutLogo = (RelativeLayout) findViewById(R.id.splash_rl);
// 设置动画
mSplash.mSlplashAlph.setAnimationListener(new AnimationListener() {
public void onAnimationEnd(Animation arg0) {
if (!Util.isNetworkOk(Splash.this)) {
T.showTips(Splash.this, R.drawable.tips_error,
R.string.net_error_tip);
finish();
}
// 读取SharedPreferences中需要的数据
// 使用SharedPreferences来记录程序的使用次数
SharedPreferences preferences = getSharedPreferences(
SHAREDPREFERENCES_NAME, MODE_PRIVATE);
// 取得相应的值,如果没有该值,说明还未写入,用true作为默认值
isFirstIn = preferences.getBoolean("isFirstIn", true);
// 判断程序与第几次运行,如果是第一次运行则跳转到引导界面,否则跳转到主界面
if (!isFirstIn) {
// 使用Handler的postDelayed方法,3秒后执行跳转到MainActivity
mHandler.sendEmptyMessage(GO_HOME);
} else {
mHandler.sendEmptyMessage(GO_GUIDE);
}
}
public void onAnimationRepeat(Animation arg0) {
}
public void onAnimationStart(Animation arg0) {
}
});
// 开始动画
mRelativeLayoutLogo.startAnimation(mSplash.mSlplashAlph);
}
/** 请求的回调对象 */
private RequestCallBack<String> requestCallBack = new RequestCallBack<String>() {
@Override
public void onSuccess(ResponseInfo<String> responseInfo) {
// 请求成功
AppConfig appConfig = AppConfig.getAppConfig(AppContext
.getInstance());
appConfig.setIpartyCode(responseInfo.result);
// 开启百度推送服务
// 以apikey的方式登录,一般放在主Activity的onCreate中
PushManager.startWork(getApplicationContext(),
PushConstants.LOGIN_TYPE_API_KEY,
ApiKeyUtil.getMetaValue(Splash.this, "api_key"));
}
@Override
public void onFailure(HttpException error, String msg) {
// 请求失败
getIpartyCode();
}
};
/**
* 获取验证码
*/
public void getIpartyCode() {
HttpUtils mHttpUtils = new HttpUtils();
mHttpUtils.send(HttpMethod.POST, URLs.URL_API_HOST
+ "/Public/echoIcode", requestCallBack);
}
@Override
protected void onStart() {
super.onStart();
PushManager.activityStarted(this);
}
@Override
protected void onStop() {
super.onStop();
PushManager.activityStoped(this);
}
@Override
protected void onResume() {
super.onResume();
}
@Override
protected void onNewIntent(Intent intent) {
// 如果要统计Push引起的用户使用应用情况,请实现本方法,且加上这一个语句
setIntent(intent);
handleIntent(intent);
}
/**
* 处理Intent
*
* @param intent
* intent
*/
private void handleIntent(Intent intent) {
}
/**
* Handler:跳转到不同界面
*/
@Override
public boolean handleMessage(Message msg) {
switch (msg.what) {
case GO_HOME:
new UpdateManager(Splash.this).checkUpdate();
break;
case GO_GUIDE:
Intent intent = new Intent(Splash.this, GuideActivity.class);
Splash.this.startActivity(intent);
Splash.this.finish();
break;
}
return false;
}
}