import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.graphics.Bitmap;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Message;
import android.support.v4.app.FragmentActivity;
import android.os.Bundle;
import android.view.View;
import android.view.WindowManager;
import android.view.animation.Animation;
import android.view.animation.ScaleAnimation;
import android.widget.ImageView;
import android.widget.Toast;
import com.android.volley.AuthFailureError;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.ImageLoader;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.yyekt.appliaciton.App;
import com.yyekt.bean.HomeItem;
import com.yyekt.utils.MyLog;
import com.yyekt.utils.VolleyUtils;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 启动扉页
*/
public class SplashActivity extends FragmentActivity implements Runnable {
private RequestQueue mRequestQueue;
private ImageLoader loader;
private ImageView imageView_splash_activity;
private android.os.Handler handler = new android.os.Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
if (msg != null) {
if (msg.what == 88) {
Intent intent = new Intent();
//TODO 如果没有显示欢迎页 ,那么显示启动欢迎页,否则直接启动首页
SharedPreferences sp =
getSharedPreferences(Constants.SP_NAME, MODE_PRIVATE);
//利用SP 保存字段,判断是否显示欢迎页,保存数值一定要是程序版本号
//利用当前程序版本号,和sp中的版本号进行比较,从而判断,这样更精确,兼容性好
int wsv = sp.getInt(Constants.SP_KEY_WELCOME_SHOW_VER, -1);
if (BuildConfig.VERSION_CODE != wsv) {
//TODO 显示欢迎页
intent.setClass(SplashActivity.this, WelcomeActivity.class);
} else {
//TODO 显示主界面
intent.setClass(SplashActivity.this, MainActivity.class);
}
startActivity(intent);
finish();
}
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.splash_activity);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);//设置全屏
loader = VolleyUtils.getLoader(this);
mRequestQueue = Volley.newRequestQueue(this);
imageView_splash_activity = (ImageView) findViewById(R.id.imageView_splash_activity);
downOpenAnimationData();
// Message message = Message.obtain();
// message.what = 88;
// handler.sendMessageDelayed(message, 2000);
// Thread thread=new Thread(this);
// thread.start();
}
//获取开场动画数据
private void downOpenAnimationData() {
String url = Constants.USING_LIBRARY + Constants.GETHOME + "?homeVersion=0";
StringRequest stringRequest = new StringRequest(StringRequest.Method.POST,
url,
new Response.Listener<String>() {
@Override
public void onResponse(String s) {
handleOpenAnimationList(s);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
Toast.makeText(SplashActivity.this, "网络错误", Toast.LENGTH_SHORT).show();
}
});
if (isNetworkAvailable(this)) {
mRequestQueue.add(stringRequest);
} else {
getFromDiskCache(url);
}
}
//判断网络是否可用
public static boolean isNetworkAvailable(Context context) {
try {
ConnectivityManager manger = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo info = manger.getActiveNetworkInfo();
//return (info!=null && info.isConnected());
if (info != null) {
return info.isConnected();
} else {
return false;
}
} catch (Exception e) {
return false;
}
}
//从磁盘读取缓存数据
private void getFromDiskCache(String url) {
if (mRequestQueue.getCache().get(url) != null) {
String s = new String((mRequestQueue.getCache().get(url).data));
handleOpenAnimationList(s);
}else{
imageView_splash_activity.setImageResource(R.mipmap.welcome);
setAnimation();
}
}
//处理开场动画返回数据
private void handleOpenAnimationList(String s) {
try {
JSONObject jsonObject = new JSONObject(s);
boolean success = jsonObject.getBoolean("success");
if (success) {
JSONObject jsonResult = jsonObject.getJSONObject("result");
JSONArray bannerArray = jsonResult.getJSONArray("openAnimationList");
TypeToken<List<HomeItem>> token = new TypeToken<List<HomeItem>>() {
};
Gson gson = new Gson();
List<HomeItem> list = gson.fromJson(bannerArray.toString(), token.getType());
viewShowImage(list.get(0).getImgUrl());
}
} catch (JSONException e) {
e.printStackTrace();
}
}
//为imageview显示图片
private void viewShowImage(String url){
loader.get(url, new ImageLoader.ImageListener() {
@Override
public void onResponse(ImageLoader.ImageContainer imageContainer, boolean b) {
Bitmap bitmap = imageContainer.getBitmap();
imageView_splash_activity.setImageBitmap(bitmap);
if (bitmap != null && bitmap.isRecycled()) {
bitmap.recycle();
}
bitmap = null;
setAnimation();
}
@Override
public void onErrorResponse(VolleyError volleyError) {
MyLog.e("kkk", "NewHomeFragment--viewShowImage--onErrorResponse");
}
});
}
//为imageview背景设置动画
private void setAnimation(){
final ScaleAnimation animation = new ScaleAnimation(1.0f, 1.1f, 1.0f, 1.1f,
Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF,
0.8f);
animation.setDuration(2000);//设置动画持续时间
animation.setFillAfter(true);//动画执行完后是否停留在执行完的状态
imageView_splash_activity.setAnimation(animation);
animation.startNow();
animation.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
Message message = Message.obtain();
message.what = 88;
handler.sendMessage(message);
}
@Override
public void onAnimationRepeat(Animation animation) {
}
});
}
@Override
public void run() {
try {
Thread.sleep(2000)
;
} catch (InterruptedException e) {
e.printStackTrace();
}
Intent intent = new Intent();
//TODO 如果没有显示欢迎页 ,那么显示启动欢迎页,否则直接启动首页
SharedPreferences sp =
getSharedPreferences(Constants.SP_NAME, MODE_PRIVATE);
//利用SP 保存字段,判断是否显示欢迎页,保存数值一定要是程序版本号
//利用当前程序版本号,和sp中的版本号进行比较,从而判断,这样更精确,兼容性好
int wsv = sp.getInt(Constants.SP_KEY_WELCOME_SHOW_VER, -1);
if (BuildConfig.VERSION_CODE != wsv) {
//TODO 显示欢迎页
intent.setClass(this, WelcomeActivity.class);
} else {
//TODO 显示主界面
intent.setClass(this, MainActivity.class);
}
startActivity(intent);
finish();
}
@Override
protected void onDestroy() {
super.onDestroy();
}
}
闪屏页工具类
最新推荐文章于 2021-04-15 10:05:14 发布