中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android中怎么動態切換Splash啟動圖

發布時間:2021-07-12 11:34:32 來源:億速云 閱讀:233 作者:Leah 欄目:移動開發

Android中怎么動態切換Splash啟動圖,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

Glide的緩存下載

Glide中的downloadOnly方法可實現圖片的下載功能

圖片下載

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();                 
       }                            
     }                              
   });

每次啟動的時候去獲取

 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的本地下載

考慮到項目中用到的client是okhttp并統一了Interceptor攔截器,在用到下載圖片,所以就單獨提出來了。

  1. 創建一個service,并在配置文件AndroidManifest.xml中注冊

  2. 在獲取到圖片地址之后startService(),并傳遞到service中

  3. 在service的onStartCommand()方法中獲取到圖片地址,并創建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();
              //增加下載進度的獲取
              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();
        }
      });

獲取到的圖片重新命名再進行顯示。

關于Android中怎么動態切換Splash啟動圖問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

大荔县| 福建省| 理塘县| 当阳市| 丰原市| 吐鲁番市| 佛坪县| 新化县| 探索| 廉江市| 乌拉特前旗| 安乡县| 兴安盟| 色达县| 包头市| 泗水县| 武鸣县| 育儿| 昔阳县| 德安县| 武定县| 沧源| 大城县| 高阳县| 廊坊市| 和政县| 丰台区| 凤冈县| 临湘市| 句容市| 江山市| 云和县| 安西县| 泸州市| 黑河市| 日土县| 吉水县| 宁河县| 邓州市| 武强县| 库车县|