知乎客戶端淡入淡出的Banner的一種實(shí)現(xiàn)

新版知乎客戶端發(fā)現(xiàn)頁面上有一個淡入淡出的banner

最初的想法就是拿viewpager實(shí)現(xiàn),重寫protected void onPageScrolled(int position, float offset, int offsetPixels)方法,但是應(yīng)該我得拿到所有page,去改變兩個page的不同狀態(tài)。轉(zhuǎn)念一想,ViewPager有一個PageTransformer,不如拿這個去實(shí)現(xiàn)

QQ截圖20161128125301.png

position返回的是front-and-center,可以理解為0是中心01是右邊的page;-10是左邊的page

大概的代碼會是
左邊的page得疊加他的位置,讓他看起來會向左移動, 右邊的page應(yīng)該先移動到位,然后阻止他的移動,最后改變兩個page的透明度。

int pageWidth = view.getWidth();

if (position <= 1) {
    if (position < 0) {
        view.setTranslationX( - pageWidth * position);
    } else {
        view.setTranslationX(pageWidth);
        view.setTranslationX( - pageWidth * position);
    }
    float alpha = Math.max(0, 1 - Math.abs(position));
    view.setAlpha(alpha);
} else {
    view.setAlpha(0f);
}

這就完成了viewpager的淡入淡出,感覺比重寫onPageScrolled方便

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,000評論 25 709
  • 背景 一年多以前我在知乎上答了有關(guān)LeetCode的問題, 分享了一些自己做題目的經(jīng)驗(yàn)。 張土汪:刷leetcod...
    土汪閱讀 12,907評論 0 33
  • 昨天一個人騎著小黃車去了附近的萬達(dá)看了這場電影,在看之前,就聽說好評如潮,票房一路飆升,所以想親自領(lǐng)略一下這是一部...
    一縷清風(fēng)如你閱讀 940評論 0 3
  • 出書訓(xùn)練營到今天是第16天了,我已經(jīng)寫了16天。真的如老師所說:寫作是一種修行,滋潤自己的內(nèi)心! 為什么要參加出書...
    在亮閱讀 447評論 1 0
  • 20歲的年紀(jì),只要卯足了勁奔向你的大好前程不就行了
    勞資迷死你閱讀 279評論 0 0

友情鏈接更多精彩內(nèi)容