知乎客户端淡入淡出的Banner的一种实现

新版知乎客户端发现页面上有一个淡入淡出的banner

最初的想法就是拿viewpager实现,重写protected void onPageScrolled(int position, float offset, int offsetPixels)方法,但是应该我得拿到所有page,去改变两个page的不同状态。转念一想,ViewPager有一个PageTransformer,不如拿这个去实现

QQ截图20161128125301.png

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

大概的代码会是
左边的page得叠加他的位置,让他看起来会向左移动, 右边的page应该先移动到位,然后阻止他的移动,最后改变两个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方便

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 172,930评论 25 708
  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 12,767评论 0 33
  • 昨天一个人骑着小黄车去了附近的万达看了这场电影,在看之前,就听说好评如潮,票房一路飙升,所以想亲自领略一下这是一部...
    一缕清风如你阅读 888评论 0 3
  • 出书训练营到今天是第16天了,我已经写了16天。真的如老师所说:写作是一种修行,滋润自己的内心! 为什么要参加出书...
    在亮阅读 416评论 1 0
  • 20岁的年纪,只要卯足了劲奔向你的大好前程不就行了
    劳资迷死你阅读 225评论 0 0