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

一个很简单的需求,启动页背景图片是后台配置的,客户端需要做的就是拉取图片使用

  • 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, "");
            if (VsUtil.fileIsExists(path)) {
                Bitmap bitmap = BitmapFactory.decodeFile(path);
                splash_iamg.setImageBitmap(bitmap);
            }

你可能感兴趣的:(Splash启动页后台配置图片的处理)