亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > Android > 正文

Android列表動圖展示的實現策略

2019-10-21 21:36:13
字體:
來源:轉載
供稿:網友

前言

在最近的時間里,短視頻流行了起來,隨著這股潮流,一種動圖封面的設計也被很多短視頻app采用:

Android,列表,動圖,策略

某音

而在app中,動圖的展示是比較消耗性能的操作,對于這種一頁非常多的動圖在展示時需要做對應的處理,今天我結合自己在項目中處理的經驗分享一下多動圖的處理策略。

圖片加載框架選擇

對于動圖的加載,尤其是webp格式的動圖,Fresco真是不二的選擇,而且fresco本身對內存的處理也很棒,本文是基于Fresco 1.0.10版本,如果使用低版本Fresco出現無解的問題時,不妨可以試著升級Fresco版本。

圖片展示的策略

只在當前頁展示

我們知道,動圖是由一幀一幀的靜圖組成的,通常來說我們需要這個動圖一直播放,也就是說動圖從加載完成之后會不停的渲染每一幀,拿某音舉例:

Android,列表,動圖,策略

首頁

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

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

只在可見區域展示

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

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

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

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

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

 ControllerListener controllerListener = new BaseControllerListener<ImageInfo>() { @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的時候都對狀態進行了判斷。

圖片的規格尺寸

規格

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

幀率

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

大小

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

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

總結:

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VEVB武林網的支持。


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
色偷偷噜噜噜亚洲男人| 日韩美女免费线视频| 欧洲精品在线视频| 欧美成人午夜视频| 久久不射电影网| 九九久久久久久久久激情| 97热在线精品视频在线观看| 黑人巨大精品欧美一区免费视频| 日韩最新免费不卡| 欧美精品中文字幕一区| 97视频在线观看免费| 精品久久久久久中文字幕一区奶水| 国产精品91在线| 欧美电影免费在线观看| 久久人体大胆视频| 久久精品视频99| 日韩av第一页| 亚洲精品欧美一区二区三区| 国产999精品久久久影片官网| 欧美日韩国产综合视频在线观看中文| 麻豆精品精华液| 亚洲自拍偷拍色图| 91chinesevideo永久地址| 91九色单男在线观看| 97精品视频在线观看| 欧美另类老女人| 国产精品久久91| 成人免费直播live| 日韩精品视频免费专区在线播放| 欧美成aaa人片在线观看蜜臀| 亚洲色图50p| 一本色道久久88精品综合| 国产精品久久综合av爱欲tv| 少妇高潮 亚洲精品| 69久久夜色精品国产7777| 91精品久久久久| 欧美激情免费看| 91av在线精品| 在线成人激情黄色| 日韩电影中文字幕av| 欧美亚洲成人免费| 日韩免费观看视频| 色偷偷偷亚洲综合网另类| 亚洲第一精品夜夜躁人人爽| 九九精品在线播放| 亚洲黄色在线看| 色yeye香蕉凹凸一区二区av| 91精品国产91久久久久久久久| 亚洲一区二区三区视频播放| 亚洲欧美激情另类校园| 国产a级全部精品| 久久中文久久字幕| 精品国产欧美成人夜夜嗨| 不卡伊人av在线播放| 欧美xxxx做受欧美.88| 亚洲日韩欧美视频| 精品国产乱码久久久久久天美| 成人a级免费视频| 九九热99久久久国产盗摄| 久久久久久久久久久免费精品| 91精品视频免费看| 欧美日韩一二三四五区| 欧美日韩国产成人在线| 亚洲美女av网站| 亚洲精品一区二区三区不| 色偷偷av一区二区三区| 日韩精品极品在线观看播放免费视频| 国模吧一区二区三区| 欧美成人三级视频网站| 欧美一级片免费在线| 国产欧美久久久久久| 欧美日韩在线免费观看| 日韩在线视频国产| 日韩成人高清在线| 美女扒开尿口让男人操亚洲视频网站| 久久国产精品首页| 久久久久久国产三级电影| 韩剧1988在线观看免费完整版| 亚洲xxx自由成熟| 国产精品91在线观看| 国产欧美欧洲在线观看| 国产婷婷成人久久av免费高清| 久久久久亚洲精品| 91在线免费观看网站| 91精品在线观看视频| 国产成人aa精品一区在线播放| 狠狠色噜噜狠狠狠狠97| 国产精品成人一区二区| 成人有码视频在线播放| 久久久免费电影| 色青青草原桃花久久综合| 视频在线一区二区| 亚洲国产免费av| 国产精品无码专区在线观看| 国语自产精品视频在线看一大j8| 久久久国产一区| 欧美电影在线观看完整版| 亚洲自拍偷拍网址| 亚洲男人天堂2024| 久久影视免费观看| 日韩av在线网站| 性欧美激情精品| 91视频-88av| 在线不卡国产精品| 欧美理论在线观看| 91国产视频在线播放| 一区二区三区视频免费在线观看| 欧美精品在线免费观看| 久久久天堂国产精品女人| 美女撒尿一区二区三区| 国产精品狠色婷| 久久影视电视剧凤归四时歌| 亚洲有声小说3d| 久久久人成影片一区二区三区| 国产精品第1页| 亚洲综合中文字幕在线观看| 亚洲美女黄色片| 69久久夜色精品国产7777| 日本欧美爱爱爱| 久久久精品999| 色婷婷亚洲mv天堂mv在影片| 久久久av亚洲男天堂| 人人澡人人澡人人看欧美| 亚洲国产成人久久综合一区| 成人国产精品日本在线| 亚洲人午夜精品| 91成人在线视频| 奇米成人av国产一区二区三区| 成人午夜在线视频一区| 国产精品美女999| 欧美精品videofree1080p| 欧洲永久精品大片ww免费漫画| 欧美黑人巨大xxx极品| 国产精品第三页| 精品国产一区二区三区久久| 久久天天躁狠狠躁夜夜躁2014| 最近2019中文字幕第三页视频| 成人在线免费观看视视频| 亚洲天堂网站在线观看视频| 97热精品视频官网| 国产丝袜精品第一页| 一区二区三区日韩在线| 亚洲激情第一页| 成人妇女淫片aaaa视频| 国产亚洲欧美日韩一区二区| 亚洲最大的成人网| 亚洲欧洲xxxx| 欧美日韩在线视频观看| 成人福利视频网| 国产aⅴ夜夜欢一区二区三区| 国产91对白在线播放| 77777亚洲午夜久久多人| 欧美国产日韩一区二区在线观看| 97av视频在线| 欧美大胆在线视频| 欧美片一区二区三区| 久久国内精品一国内精品| 欧美俄罗斯性视频| 国内精品久久久久久影视8| 福利视频第一区| 日韩免费在线视频| 久久成人一区二区| 欧美成年人视频网站欧美| 日本道色综合久久影院|