真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯網站制作重慶分公司

怎么在Android中實現列表動圖展示-創(chuàng)新互聯

本篇文章為大家展示了怎么在Android中實現列表動圖展示,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

創(chuàng)新互聯是一家專注于網站設計制作、網站設計與策劃設計,霍城網站建設哪家好?創(chuàng)新互聯做網站,專注于網站建設十年,網設計領域的專業(yè)建站公司;建站業(yè)務涵蓋:霍城等地區(qū)?;舫亲鼍W站價格咨詢:028-86922220

首頁

假設下面的“首頁”“、”關注”、“消息”、“我”4個tab都有動圖,當我們點擊其他頁面時,當前頁被隱藏,而根據Fresco的官方文檔Fresco中文官方文檔通常只有當SimpleDrawView被移出屏幕才會停止播放動畫(我在測試中發(fā)現通常Activity生命周期級別的也會觸發(fā)),所以當tab頁隱藏時動圖依舊在被渲染,所以我們需要控制動圖的停止和播放,只有當前頁展示時,才播放動圖:

Animatable animatable = mSimpleDraweeView.getController().getAnimatable();
    if (animatable != null) {
      animatable.start();
       // later
      animatable.stop();
     }

只在可見區(qū)域展示

當我們做列表動圖的時候,無論控件是listview還是recyclerview,數據和item的綁定都會在屏幕外綁定,而此時站在性能優(yōu)化的角度上,是不需要渲染動圖的;當動圖滑動在列表邊界的時候,是不是說明用戶的焦點已經不在這張圖上了,所以此時可以提前在動圖滑出屏幕外之前停止動圖播放(在項目中我與產品商定動圖播放和停止的邊界值定為圖片的1/2,也就是說圖片滑入屏幕自身長度1/2的時候播放動圖,滑出屏幕自身長度1/2的時候停止播放);當快速滑動的時候也應當停止動圖渲染(平時加載靜圖可能不需要在意,但是在android老手機上加載很多動圖會使得cpu和內存大幅度浮動)。

也就是說當列表在做數據綁定的時候我們應當先去加載圖片但并不渲染動圖,動圖播放和停止唯一的判斷標準是滑入滑出屏幕的長度,如果是快速滑動則無視第二個規(guī)則直接停止所有的動圖。

上面的第二、第三個處理會有些許的代碼量,而且重點是時機的判斷不是動圖的處理,這里著重講策略,代碼就略過了。對于第一個處理,Fresco本身是支持的:

DraweeController controller = Fresco.newDraweeControllerBuilder()
    .setUri(uri)
     .setAutoPlayAnimations(false)
      . // 其他設置(如果有的話)
      .build();

setAutoPlayAnimations即表示是否在加載完成之后立即播放動圖,這里設置為false即可,滑入播放調用上一張圖的方法就行了??墒沁€有一種情況,動圖在我們滑入的時候還沒有加載完成,那么我們就可以設置一個標示來表示是否播放,因為SimpleDrwaView是可以拿到動圖加載的回調的:

 ControllerListener controllerListener = new BaseControllerListener() {
 @Override
 public void onFinalImageSet(
  String id,
  @Nullable ImageInfo imageInfo,
  @Nullable Animatable anim) {
  if (anim != null && tag == BEGAIN) {
   // 其他控制邏輯
   anim.start();
  }
 }
};

滑入屏幕時,就把tag 置為BEGAIN,滑出再置空就行了,并且這里我們不用擔心重復播放和停止的問題,這里的anim對象其實是AnimatedDrawble2對象,而該對象在start和stop的時候都對狀態(tài)進行了判斷。

圖片的規(guī)格尺寸

規(guī)格

相較于傳統的gif,同質量的webp體積更小,更能節(jié)省存儲空間,但是在解碼上webp更為耗時,所以能用webp盡量用webp,實在還是卡再考慮用gif。

幀率

目前調研發(fā)現的動圖幀率一般是10幀或者20幀,幀率不要太高了,不然會加大cpu的占用率,其實如果Fresco的使用方式沒出問題,內存的問題Fresco已經幫你搞定了,其他的優(yōu)化主要是針對cpu占用率優(yōu)化的。在項目中我們加載的動圖最后采用的是20幀(模仿騰訊謀產品的策略,最好控制在10幀其實,這款騰訊的產品在一頁上展示的動圖明顯比其他同類型產品展示的數量少)。

大小

動圖的大小也會影響解碼耗時,在手機端可以使用小圖,在項目中,我們手機端的動圖最多在200kb左右。

在實際的開發(fā)中,可能因為業(yè)務的關系,上述的策略不能保證全部都做到,這里時候就得根據業(yè)務形態(tài)做對應的取舍,這里可能是一個長久優(yōu)化的過程,畢竟這種新的動圖封面設計以前都沒有遇到過。

上述內容就是怎么在Android中實現列表動圖展示,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注創(chuàng)新互聯行業(yè)資訊頻道。


名稱欄目:怎么在Android中實現列表動圖展示-創(chuàng)新互聯
文章起源:http://weahome.cn/article/jgdsp.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部