1. 程式人生 > >Android 自定義ViewPager的滑動切換頁面效果

Android 自定義ViewPager的滑動切換頁面效果

先借用網上圖片效果


自定義效果最重要的一個方法就是

   viewPager.setPageTransformer(boolean,PageTransformer)

這個方法就是設定viewpager的滑動效果的方法,裡面需要傳遞兩個引數:第一個引數傳true就行了

   第二個引數就是重點了我們需要建立一個效果類,繼承PageTransformer這個類然後來實現我們的自定義效果
class DepthPageTransformer implements ViewPager.PageTransformer {

        @Override
        public void transformPage(View view, float position) {
            int pageWidth = view.getWidth();
            int pageHeight = view.getHeight();
            if (position < -1) {
            } else if (position <= 0) {
                view.setPivotX(pageWidth / 2);
                view.setPivotY(pageHeight);
                view.setRotation(15 * position);
            } else if (position <= 1) {
                view.setPivotX(pageWidth / 2);
                view.setPivotY(pageHeight);
                view.setRotation(15 * position);
            } else {
            }

        }

//        //去除預設橫向滑動
//        view.setTranslationX(pageWidth * -position);

    }
繼承類裡面就一個方法 解釋一下,transformPage這個方法裡面傳來了兩個值,一個是view,一個是position
這個view就是我們需要進行操作(旋轉,放大,縮小等效果)的view,直接就可以用view.setRotation(),setTranslation()等
這些方法進行操作
而這個Position就重要了,Position就是兩個頁面滑動之間的係數,表示滑動了多少,viewpager載入三個頁面,
當前顯示的和左右兩個頁面

左邊的頁id為-1 當前顯示的頁id為0 右邊的頁id為1


如果Position從-1慢慢變大變成了0就說明id=-1的頁面在向id=0的頁面移動,就是向右滑動,反之也是一樣向左滑動
這樣我們就能很好理解Position的變化值的意思了

所以我們只要判斷 -1<position<=0 的時候就說明id=-1的頁面在左右滑動
當 0>position<=1 的時候就說明id=0的頁面在左右滑動
所以我們通常看到 Position一會是負數,一會又是正數,因為每次滑動都是相鄰兩個頁面一起動的

以上都是我自己的理解,記錄下來。我覺得這樣解釋起來會更容易理解,有什麼錯誤麻煩指出

相關推薦

Android 定義ViewPager滑動切換頁面效果

先借用網上圖片效果 自定義效果最重要的一個方法就是 viewPager.setPageTransformer(boolean,PageTransformer) 這個方法就是設定viewpager的滑動效果的方法,裡面需要傳遞兩個引數:第一個引數傳true就行了

Android 定義 ViewPager 打造千變萬化的圖片切換效果

                記得第一次見到ViewPager這個控制元件,瞬間愛不釋手,做東西的主介面通通ViewPager,以及圖片切換也拋棄了ImageSwitch之類的,開始讓ViewPager來做。時間長了,ViewPager的切換效果覺得枯燥,形成了審美疲勞~~我們需要改變,今天教大家如何改變V

Android-通過定義ViewPager(中間放大效果

/**稀土掘金,時光不老**/ 大家好,很早就想寫部落格了,一是工作忙,二是缺乏原創性,三當然是自己的能力不夠啦,寫這篇部落格是很惶恐。。。。請多多包涵 /**************************** --------   ---------          

Android定義Viewpager指示器PagerIndicator-仿微博頭條效果

平時工作之餘,喜歡看看新聞,手機難免會裝了幾個新聞閱讀類的app。新聞類的app風格大致一致,可以選擇不同欄目,欄目可以切換。最近就在用微博頭條,感覺介面挺清新的。而且它使用的PagerIndicator挺好看的。昨晚居然準時下班了,趁著早就實現了下。今天

Android定義View——實現水波紋效果類似剩余流量球

string 三個點 pre ber block span 初始化 move 理解 最近突然手癢就想搞個貝塞爾曲線做個水波紋效果玩玩,終於功夫不負有心人最後實現了想要的效果,一起來看下吧: 效果圖鎮樓 一:先一步一步來分解一下實現的過程 需要繪制一個正弦曲線(sin

Android 定義View實現拖拽效果

騰訊QQ有那種紅點拖動效果,今天就來實現一個簡單的自定義View拖動效果,再回到原處,並非完全仿QQ紅點拖動 先來看一下效果圖 簡單說一下實現步驟 1.建立一個類繼承View 2.繪製出一個

Android 定義View實現圓形環繞效果

之前專案中需要實現一個四周環繞中心圓形頭像的效果,感覺還是自定義比較方便,於是就自己封裝了一個控制元件去實現。先貼張圖顯示最終效果。 首先自定義一個View繼承自LinearLayout,通過動態新增childView的方式將子控制元件新增到View中。思路是先新增中間圓形頭像

Android 定義PopupWindow實現懸浮窗效果

  有時候我們需要在介面上彈出一個視窗,而Android中彈出窗體有兩種方式:一種是AlertDialog,另一種就是PopupWindow,AlertDialog的位置是固定的,而PopupWindow的位置可以任意指定。下面我們使用自定義的PopupWindow來完成以下的效果圖:

html+js(swiper.js)+css左右滑動切換頁面效果,適配移動端

demo:截圖:結構:1、swiper-progress.html2、css資料夾-swiper.css -swiper.min.css3、js資料夾-swiper.min.js -swiper.jsswiper-progress.html<!DOCTYPE html&

android定義View之3D索引效果

效果圖: 我的小霸王太卡了。 最近工作比較忙,今天搞了一下午才搞出來這個效果,這種效果有很多種實現方式,最常見的應該是用貝塞爾曲線實現的。今天我們來看另一種不同的實現方式,只需要用到 canvas.scale(),有沒有很好奇是怎麼實現的呢。 首先來說一下思路,只要有了思

android 定義view之側滑效果

效果圖: 看網上的都是兩個view拼接,預設右側的不顯示,水平移動的時候把右側的view顯示出來。但是看最新版QQ上的效果不是這樣的,但給人的感覺卻很好,所以獻醜來一發比較高仿的。 知識點: 1、ViewDragHelper 的用法; 2、滑動衝突的解決; 3、自定

Android 定義標尺滑動選擇值

實現滑動標尺選擇值,效果圖 1.自定義屬性attrs.xml <declare-styleable name="RulerView"> <attr name="textColor" format="color" />

Android 定義view實現水波紋效果

今天主要分享水波紋效果:1.標準正餘弦水波紋;2.非標準圓形液柱水波紋;雖說都是水波紋,但兩者在實現上差異是比較大的,一個通過正餘弦函式模擬水波紋效果,另外一個會運用到影象的混合模式(PorterDuffXfermode);先看效果:                     

ionic2 使用tabs+slides實現滑動切換頁面效果

說明 在一個頁面內嵌入多一個tab欄(我是在HomePage中),實現在此頁面中多頁面的滑動切換頁面 此案例也可以用於最外層的tab欄,具體如何實現自己嘗試一下就知道了 實現方法 1.建立一個空的頁面,即使tab跳轉一個空頁面; @Com

Android定義View實現水波紋效果

本篇博文介紹一個Android自定義View的案例,後續博文會接下自定義View的相關流程和繪製原理。通過自定義控制元件實現。觸控式螢幕幕實現水波紋效果。實現步驟第1步.自定義MyWave繼承Viewpublic class MyWave extends View {}第2步

Android 定義View 滑動標籤_At_Swim

public class DragableGridLayout extends GridLayout implements View.OnLongClickListener,View.OnDragListener { private int columCount

android 定義水波紋點選效果Button

welcome 效果 ; 技術基礎思路 自定義 Button 自定義 Drawable 專案原始碼 自定義button 其實這只是一些說法 自定義button,我們只需要將子類繼承 button public class

Android定義控制元件——點贊效果(仿Twitter)

前言 通過自定義控制元件,意欲模仿Twitter的點贊效果。 主要涉及: 1.三次貝塞爾曲線應用; 2.屬性動畫的綜合應用; 3.自定義View流程. 拆解原效果 我們先看一下Twitter上的原版效果是怎樣的. 放大後: 好吧!原速的

Android定義View——實現水波紋效果類似剩餘流量球

最近突然手癢就想搞個貝塞爾曲線做個水波紋效果玩玩,終於功夫不負有心人最後實現了想要的效果,一起來看下吧: 效果圖鎮樓 一:先一步一步來分解一下實現的過程 需要繪製一個正弦曲線(sin)或者餘弦曲線(cos) 通過水平平移曲線來的到像水

Android定義ViewPager指示器

自我感覺ViewPager+fragment在Android中挺重要的,自己還不太明白 ViewPagerIndicator的思路: 先在佈局最上面載入一張黑色圖片,作為標籤的背景 然後將剩餘部分全都置為VIewPager,用來滑動。高度為0dp,用lay