SplashActivity.java 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. package com.xzjmyk.pm.activity.ui;
  2. import android.annotation.SuppressLint;
  3. import android.content.Intent;
  4. import android.os.Bundle;
  5. import android.os.Handler;
  6. import android.util.Log;
  7. import android.view.View;
  8. import android.view.animation.Animation;
  9. import android.view.animation.AnimationUtils;
  10. import android.widget.Button;
  11. import android.widget.RelativeLayout;
  12. import com.android.volley.Response;
  13. import com.android.volley.VolleyError;
  14. import com.xzjmyk.pm.activity.AppConfig;
  15. import com.xzjmyk.pm.activity.MyApplication;
  16. import com.xzjmyk.pm.activity.bean.ConfigBean;
  17. import com.xzjmyk.pm.activity.helper.LoginHelper;
  18. import com.xzjmyk.pm.activity.ui.account.LoginActivity;
  19. import com.xzjmyk.pm.activity.ui.account.RegisterActivity;
  20. import com.xzjmyk.pm.activity.ui.base.BaseActivity;
  21. import com.xzjmyk.pm.activity.volley.Result;
  22. import com.xzjmyk.pm.activity.R;
  23. import com.xzjmyk.pm.activity.volley.ObjectResult;
  24. import com.xzjmyk.pm.activity.volley.StringJsonObjectRequest;
  25. /**
  26. * 启动页
  27. *
  28. * @author Dean Tao
  29. * @version 1.0
  30. */
  31. public class SplashActivity extends BaseActivity {
  32. private RelativeLayout mSelectLv;
  33. private Button mSelectLoginBtn;
  34. private Button mSelectRegBtn;
  35. private long mStartTimeMs;// 记录进入该界面时间,保证至少在该界面停留3秒
  36. private boolean mConfigReady = false;// 配置获取成功
  37. @Override
  38. protected void onCreate(Bundle savedInstanceState) {
  39. super.onCreate(savedInstanceState);
  40. setContentView(R.layout.activity_splash);
  41. mStartTimeMs = System.currentTimeMillis();
  42. mSelectLv = (RelativeLayout) findViewById(R.id.select_lv);
  43. mSelectLoginBtn = (Button) findViewById(R.id.select_login_btn);
  44. mSelectRegBtn = (Button) findViewById(R.id.select_register_btn);
  45. mSelectLoginBtn.setOnClickListener(new View.OnClickListener() {
  46. @Override
  47. public void onClick(View v) {
  48. startActivity(new Intent(mContext, LoginActivity.class));
  49. }
  50. });
  51. mSelectRegBtn.setOnClickListener(new View.OnClickListener() {
  52. @Override
  53. public void onClick(View v) {
  54. startActivity(new Intent(mContext, RegisterActivity.class));
  55. }
  56. });
  57. mSelectLv.setVisibility(View.INVISIBLE);
  58. initConfig();// 初始化配置
  59. }
  60. /**
  61. * 配置参数初始化
  62. */
  63. private void initConfig() {
  64. if (!MyApplication.getInstance().isNetworkActive()) {// 没有网络的情况下
  65. setConfig(new ConfigBean());
  66. return;
  67. }
  68. StringJsonObjectRequest<ConfigBean> request = new StringJsonObjectRequest<ConfigBean>(AppConfig.CONFIG_URL, new Response.ErrorListener() {
  69. @Override
  70. public void onErrorResponse(VolleyError arg0) {
  71. setConfig(new ConfigBean());// 读取网络配置失败,使用默认配置
  72. }
  73. }, new StringJsonObjectRequest.Listener<ConfigBean>() {
  74. @Override
  75. public void onResponse(ObjectResult<ConfigBean> result) {
  76. ConfigBean configBean = null;
  77. if (result == null || result.getResultCode() != Result.CODE_SUCCESS || result.getData() == null) {
  78. configBean = new ConfigBean();// 读取网络配置失败,使用默认配置
  79. } else {
  80. configBean = result.getData();
  81. }
  82. setConfig(configBean);
  83. }
  84. }, ConfigBean.class, null);
  85. addShortRequest(request);
  86. }
  87. private void setConfig(ConfigBean configBean) {
  88. MyApplication.getInstance().setConfig(AppConfig.initConfig(this, configBean));// 初始化配置
  89. mConfigReady = true;
  90. ready();
  91. }
  92. private void ready() {
  93. if (!mConfigReady) {
  94. return;
  95. }
  96. long currentTimeMs = System.currentTimeMillis();
  97. int useTime = (int) (currentTimeMs - mStartTimeMs);
  98. int delayTime = useTime > 2000 ? 0 : 2000 - useTime;
  99. new Handler().postDelayed(new Runnable() {
  100. @Override
  101. public void run() {
  102. jump();
  103. }
  104. }, delayTime);
  105. }
  106. @SuppressLint("NewApi")
  107. private void jump() {
  108. if (isDestroyed()) {
  109. return;
  110. }
  111. int userStatus = LoginHelper.prepareUser(mContext);
  112. Log.i("Arison", "jump() called with: " + "userStatus:"+userStatus);
  113. Intent intent = new Intent();
  114. switch (userStatus) {
  115. case LoginHelper.STATUS_USER_FULL://5
  116. case LoginHelper.STATUS_USER_NO_UPDATE://3
  117. case LoginHelper.STATUS_USER_TOKEN_OVERDUE://2
  118. //状态,进入主mainactivity
  119. intent.setClass(mContext, MainActivity.class);
  120. break;
  121. case LoginHelper.STATUS_USER_SIMPLE_TELPHONE:
  122. intent.setClass(mContext, LoginActivity.class);
  123. break;
  124. case LoginHelper.STATUS_NO_USER://0
  125. default:
  126. stay();
  127. return;// must return
  128. }
  129. startActivity(intent);
  130. finish();
  131. }
  132. // 停留在此界面
  133. private void stay() {
  134. mSelectLv.setVisibility(View.VISIBLE);
  135. Animation anim = AnimationUtils.loadAnimation(this, R.anim.alpha_in);
  136. mSelectLv.startAnimation(anim);
  137. }
  138. }