老生常談ViewPager的動畫效果

今天看到鴻洋大神的微信公眾號的推送,有一個打造個性ViewPager的文章,看完之后自己動手寫了一下,發(fā)現(xiàn)ViewPager動畫實(shí)現(xiàn)起來真的沒那么難,咱們就來慢慢分析ViewPager動畫的實(shí)現(xiàn)方法。

VIewPager在會有一個接口是專門為了讓開發(fā)者來解決這個問題的那就是:ViewPager.PageTransformer,這個接口雖然只有一個方法但是那是相當(dāng)?shù)膹?qiáng)大啊,因?yàn)檫@個方法可以獲得你是左滑動還是右邊滑動,而且可以根據(jù)postion來獲取你正在滑動的頁面位置的變化和被迫滑動頁面位置的變化。

什么叫被迫滑動呢?我自己取的一個名字就是你滑動B頁面viewpager會自動的把A頁面移出去這叫被迫滑動?。。。。。?/p>

下面來詳細(xì)分析這個方法:public voidtransformPage(View page,float position)

page:你當(dāng)面所觸碰的view。

position:這個參數(shù)需要舉例才能說的更明白一些,假如:A到B頁面postion的變化過程是這樣的,

A——>postion:0變成-1,當(dāng)成為-1的時候A頁面就完全看不見了

B——>postion:1變成0,當(dāng)成為0的時候B頁面顯示在當(dāng)面頁面上,

也就是說左邊看不見的是-1,能看見的時候?yàn)?,右邊為1。理解了這個那么一些動畫就可以完成了,我看鴻洋的博客,他自定義了一個viewpager來完成了一個動畫效果:

來自鴻洋大神博客

咱們下面就用今天的方法實(shí)現(xiàn)一下這個效果,我這里只貼出PageTransformer的代碼:

public class MyPageTransformer implements ViewPager.PageTransformer {
    @Override
    public void transformPage(View page, float position) {
    
        if (position < -1) {
        //這個位置是看不見的
            page.setScaleY(1f);
        } else if (position <= 1) {
             //這個位置是你所能看得見的
            if (position < 0) {
            
                //左滑動
                //向左邊滑動的時候當(dāng)面圖片是沒有任何的動畫變化的所以不用做動畫//處理
            } else if (position == 0) {
            /**
            當(dāng)前的位置是圖片在頁面上顯示的時候,這里做到讓他充滿整個頁面
            **/
                page.setScaleY(1f);
                
            } else {
            //右滑動
            /**
            當(dāng)向右滑動的時候讓頁面從X,Y兩個方向壓縮
        **/    
                page.setScaleY(Math.max(1 - Math.abs(position), 0.5f));
                page.setScaleX(Math.max(1 - Math.abs(position), 0.5f));
            }
        } else {
            page.setScaleY(0f);
        }
    }
}

最終這個動畫就完成了,這里只貼出主要的核心代碼。

github地址:https://github.com/androidfei/viewpager.git

最后編輯于
?著作權(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,030評論 25 709
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 15,303評論 4 61
  • 醉行 一款老酒 買去了我的個性 已經(jīng)恍惚的目光 恍恍惚惚了整個世界 夢仿佛從涯上墜落 開花破...
    一池凹水凸龍閱讀 296評論 1 3
  • 讓嘲笑你的人被打臉最好的方式是什么? 當(dāng)場開撕,然后像一個神經(jīng)瘋,引動全身的洪荒之力,能動手的絕不動嘴? 我想,一...
    苑堯閱讀 1,352評論 0 8
  • 醉美鄉(xiāng)村花落誰家,一番預(yù)熱之后,民情高昂。有幾個明清院落的村子都很積極,人心空前一致。維修粉刷,打掃收拾,面目一新...
    陳錦輝閱讀 152評論 0 0

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