国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

兩行代碼搞定ViewPager的過渡動畫

2019-11-08 00:14:56
字體:
來源:轉載
供稿:網友

ViewPager自帶了一種默認的頁面滑動切換動畫,但是如果產品想要更炫的滑動效果的時候怎么辦呢?不要怕,我們可以使用support library的 PagerTransformer,API11 (Honeycomb) 及以上android版本都支持這個類。 用法很方便,

viewpager.setPageTransformer(false, new ViewPager.PageTransformer() { @Override public void transformPage(View page, float position) { // do transformation here }});

transformPage(View page, float position)方法有兩個參數,page參數代表當前view 或 fragment,position參數就是它的位置的值?;瑒拥臅r候,起始page和目標page的各自的transformPage()就會被同時觸發調用。一個page的position為0代表它處于中間,為1代表它完全處于右邊,為-1代表它完全處于左邊。

官方文檔是這樣說的,position是一個page相對于屏幕中心的位置。position的值跟隨用戶滑動page而變化。當page填充屏幕完全可見的時候,它的position是0;page位于屏幕右邊,它的position是1。兩個page同時滑動到一半的時候,左邊page的position是-0.5,右邊page的position是0.5。(因為左右是對稱的)所以,為了不考慮正負值,我們取position的絕對值:

final float normalizedposition = Math.abs(Math.abs(position) - 1);

現在左右兩個page各自有了一個0到1之間的normalizedposition值(左邊在遞減[1,0],右邊在遞增[0,1]),怎么用就靠你了。比如,首先,我們可以做一個淡入淡出效果。

@Overridepublic void transformPage(View page, float position) { final float normalizedposition = Math.abs(Math.abs(position) - 1); page.setAlpha(normalizedposition);}

這里寫圖片描述

尺寸大小變化效果:

@Overridepublic void transformPage(View page, float position) {final float normalizedposition = Math.abs(Math.abs(position) - 1); page.setScaleX(normalizedposition / 2 + 0.5f); page.setScaleY(normalizedposition / 2 + 0.5f);}

這里寫圖片描述

最后一個例子是使page沿Z軸方向旋轉30度:

@Overridepublic void transformPage(View page, float position) { page.setRotationY(position * -30);}

這里寫圖片描述

上面是一些簡單的例子,這里官方給了兩個例子。也可以把PagerTransformer和PagerTitleStrip/ PagerTabStrip結合在一起。

原文 http://andraskindler.com/blog/2013/create-viewpager-transitions-a-pagertransformer-example/young YoungPeanut.github.io博客 http://youngpeanut.github.io/2016-01-17/android-viewpager-transform/
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 萨迦县| 乌兰察布市| 高碑店市| 民丰县| 鄯善县| 乌拉特前旗| 城步| 洛阳市| 佛冈县| 民和| 孟州市| 得荣县| 成都市| 荔波县| 长顺县| 和林格尔县| 泗阳县| 松桃| 盐亭县| 抚顺县| 青神县| 沈丘县| 桂林市| 贵溪市| 嘉义市| 宁明县| 曲阳县| 萝北县| 孝昌县| 南阳市| 文登市| 监利县| 浪卡子县| 尤溪县| 海城市| 榆中县| 翼城县| 星子县| 卢氏县| 集贤县| 桃园县|