您的位置:首页 > 其它

Splash启动页后台配置图片的处理

2017-06-20 23:38 120 查看
一个很简单的需求,启动页背景图片是后台配置的,客户端需要做的就是拉取图片使用

1.我的处理是将图片保存到本地,在应用启动时读取图片

2.看代码实现

if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)
== PackageManager.PERMISSION_GRANTED) {
downLoadSplashAd();
} else {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);
}

@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
MainActivityPermissionsDispatcher.onRequestPermissionsResult(this, requestCode, grantResults);

if (requestCode == 1) {
if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) ==
PackageManager.PERMISSION_GRANTED) {
downLoadSplashAd();
}
}
}


public void downLoadSplashAd() {
//启动页广告
String dataString = FSUserConfig.getDataString(mContext, FSUserConfig.JKEY_AD_CONFIG_0001, "");
LogUtils.d("download", "下载图片: " + dataString);
if (dataString.length() > 0) {
try {
JSONArray array = new JSONArray(dataString);
for (int i = 0; i < array.length(); i++) {
JSONObject object = (JSONObject) array.get(i);
String image_url = object.getString("image_url");
saveUrlImg(image_url);
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}


private void saveUrlImg(String image_url) {
new GetImg().execute(image_url);
}


/**
* 将url转换成bitmap异步任务
*/
private class GetImg extends AsyncTask<String, Void, Bitmap> {

@Override
protected Bitmap doInBackground(String... strings) {
HttpURLConnection con = null;//访问网络
InputStream is = null;
Bitmap bitmap = null;
try {
URL url = new URL(strings[0]);
con = (HttpURLConnection) url.openConnection();
con.setConnectTimeout(5 * 1000);
con.setReadTimeout(5 * 1000);
/*http 响应吗
* 200:成功
* 404:未找到
* 500:发生错误
*/
if (con.getResponseCode() == 200) {
is = con.getInputStream();
bitmap = BitmapFactory.decodeStream(is);
return bitmap;
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (is != null) {
is.close();
}
} catch (IOException e) {
e.printStackTrace();
}
if (con != null) {
con.disconnect();
}
}
return null;
}

// onPostExecute在UI线程中执行命令
@Override
protected void onPostExecute(Bitmap bitmap) {
super.onPostExecute(bitmap);
String path = Environment.getExternalStorageDirectory().toString() + "/fs_img/chache";
File path1 = new File(path);
if (!path1.exists()) {
path1.mkdirs();
}
//TODO 暂时只考虑保存一张图片
File file = new File(path1, "splash.jpg");
String filePath = file.getAbsolutePath();
saveFileByBitmap(bitmap, filePath);

LogUtils.d("download", "保存路径:" + filePath);
}
}


/**
* 保存图片到本地
*
* @param bitmap
* @param newImagePath
*/
private void saveFileByBitmap(Bitmap bitmap, String newImagePath) {
File file = new File(newImagePath);
try {
FileOutputStream out = new FileOutputStream(file);
if (bitmap.compress(Bitmap.CompressFormat.JPEG, 100, out)) {
out.flush();
out.close();
//保存图片路径
FSUserConfig.setData(mContext, GlobalVariables.JKEY_AD_SPLASHIMAG_PATH, newImagePath);
}
} catch (Exception e) {
e.printStackTrace();
}
}


3.启动页读取图片

//显示后台配置启动页广告
String path = FSUserConfig.getDataString(this, GlobalVariables.JKEY_AD_SPLASHIMAG_PATH, "")
4000
;
if (VsUtil.fileIsExists(path)) {
Bitmap bitmap = BitmapFactory.decodeFile(path);
splash_iamg.setImageBitmap(bitmap);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐