1. 程式人生 > >Android利用ViewPager實現滑動放大縮小

Android利用ViewPager實現滑動放大縮小

效果圖:

實現這個效果需要先處理佈局檔案

處理如下:

ViewPager控制元件的父佈局需要設定  android:clipChildren="false"

這個屬性的解釋是Defines whether a child is limited to draw inside of its bounds or not , 其大概意思是定義的子類是否被限制在其範圍內。

在父佈局設定了屬性之後,還要在ViewPager佈局設定左右間隙 marginLeft/marginRight

以上就是佈局設定了

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

下面設定程式碼

這個類是設定縮放大小的

 /**
     * 設定中間放大兩邊縮小
     */
    public class ScalePageTransformer implements ViewPager.PageTransformer {

        public static final float MAX_SCALE = 1.0f;
        public static final float MIN_SCALE = 0.9f;
        private boolean isFill;

        public ScalePageTransformer(boolean isFill) {
            this.isFill = isFill;
        }

        @Override
        public void transformPage(View page, float position) {
            if (position < -1) {
                position = -1;
            } else if (position > 1) {
                position = 1;
            }
            float tempScale = position < 0 ? 1 + position : 1 - position;

            float slope = (MAX_SCALE - MIN_SCALE) / 1;

            float scaleValue = MIN_SCALE + tempScale * slope;
            if (isFill) {
                page.setScaleX(scaleValue);
            }
            page.setScaleY(scaleValue);
        }
    }

因為ViewPager自帶了一個setPageTransformer用於設定切換動畫,所以可以利用這個方法設定滑動時的縮放大小了

第一個引數的解釋是:如果所提供的頁面轉換器需要從最後一個頁面到第一個頁面而不是第一個到最後一個頁面檢視,則為true。 我表示理解不了,無論true還是false好像都感覺不到什麼變化

mViewPage.setPageTransformer(true, new ScalePageTransformer(true));