您好,登錄后才能下訂單哦!
Android中怎么動(dòng)態(tài)切換Splash啟動(dòng)圖,針對(duì)這個(gè)問題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問題的小伙伴找到更簡(jiǎn)單易行的方法。
Glide的緩存下載
Glide中的downloadOnly方法可實(shí)現(xiàn)圖片的下載功能
圖片下載
Observable.just(RetrofitHelper.API_BASE_URL + img) .subscribeOn(Schedulers.newThread()) .subscribe(new Action1<String>() { @Override public void call(String s) { try { Glide.with(getApplicationContext()) .load(s) .downloadOnly(720, 1280) .get(); } catch (InterruptedException | ExecutionException e) { e.printStackTrace(); } } });
每次啟動(dòng)的時(shí)候去獲取
File file = new File(sp_splash_logo); if (file.exists()) { Glide.with(getApplicationContext()).load(file).into(mIvSplash); } else { mIvSplash.setImageResource(R.mipmap.splash); }
Retofit+RxJava的本地下載
考慮到項(xiàng)目中用到的client是okhttp并統(tǒng)一了Interceptor攔截器,在用到下載圖片,所以就單獨(dú)提出來了。
創(chuàng)建一個(gè)service,并在配置文件AndroidManifest.xml中注冊(cè)
在獲取到圖片地址之后startService(),并傳遞到service中
在service的onStartCommand()方法中獲取到圖片地址,并創(chuàng)建ImgServise開始下載
下載的代碼如下
Retrofit retrofit = new Retrofit.Builder() .baseUrl(RetrofitHelper.API_BASE_URL) .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) .build(); ImgServise imgServise = retrofit.create(ImgServise.class); imgServise.downloadPicFromNet(img) .subscribeOn(Schedulers.newThread()) .subscribe(new Action1<ResponseBody>() { @Override public void call(ResponseBody responseBody) { try { long contentLength = responseBody.contentLength(); InputStream is = responseBody.byteStream(); File file = new File(Environment.getExternalStorageDirectory(), BuildConfig.APPLICATION_ID + "splash.png"); FileOutputStream fos = new FileOutputStream(file); BufferedInputStream bis = new BufferedInputStream(is); byte[] buffer = new byte[1024]; int len; long sum = 0L; while ((len = bis.read(buffer)) != -1) { fos.write(buffer, 0, len); sum += len; fos.flush(); //增加下載進(jìn)度的獲取 Log.d("TAG---", sum + "/" + contentLength); } fos.close(); bis.close(); is.close(); } catch (IOException e) { e.printStackTrace(); } finally { stopSelf(); } } }, new Action1<Throwable>() { @Override public void call(Throwable throwable) { stopSelf(); } });
獲取到的圖片重新命名再進(jìn)行顯示。
關(guān)于Android中怎么動(dòng)態(tài)切換Splash啟動(dòng)圖問題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識(shí)。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。