2013-07-30 1 views
0

Я использую ViewPager с DepthPageTransformer через библиотеку поддержки, и все работает отлично, пока я не обновился до последней версии библиотеки поддержки (18).ViewPager и DepthPageTransformer

DepthPageTransformer можно найти здесь: http://developer.android.com/training/animation/screen-slide.html

Теперь проблема у меня в том, что Google не изменил ViewPager как-то, так что DepthPageTransformer больше не работает правильно.

Когда я добавляю фрагмент в ViewPager, и активность, которая содержит ViewPager, воссоздана, DepthPageTransformer, похоже, устанавливает альфа-значение в ноль, и ничего не отображается до тех пор, пока я не перетащу ViewPager. После перетаскивания ViewPager работает отлично.

ответ

0

Ну, я просто удалил предложения if в целом, кажется, все работает нормально.

1

Следующий код проверен и отлично работает: Прежде всего я использую библиотеку nineoldandroids для нижнего уровня 8 уровня.

import android.view.View; 
import android.support.v4.view.ViewPager.PageTransformer; 

import com.nineoldandroids.view.ViewHelper; 

public class DepthPageTransformer implements PageTransformer { 
    private static final float MIN_SCALE = 0.75f; 

    public void transformPage(View view, float position) { 
    int pageWidth = view.getWidth(); 

    if (position < -1) { // [-Infinity,-1) 
     // This page is way off-screen to the left. 
     ViewHelper.setAlpha(view,0); 

    } else if (position <= 0) { // [-1,0] 
     // Use the default slide transition when moving to the left page 
     ViewHelper.setAlpha(view,1); 
     ViewHelper.setTranslationX(view,0); 
     ViewHelper.setScaleX(view,1); 
     ViewHelper.setScaleY(view,1); 

    } else if (position <= 1) { // (0,1] 
     // Fade the page out. 
     ViewHelper.setAlpha(view,1 - position); 

     // Counteract the default slide transition 
     ViewHelper.setTranslationX(view,pageWidth * -position); 

     // Scale the page down (between MIN_SCALE and 1) 
     float scaleFactor = MIN_SCALE 
       + (1 - MIN_SCALE) * (1 - Math.abs(position)); 
     ViewHelper.setScaleX(view,scaleFactor); 
     ViewHelper.setScaleY(view,scaleFactor); 

    } else { // (1,+Infinity] 
     // This page is way off-screen to the right. 
     ViewHelper.setAlpha(view,0); 
    } 
    } 
} 

Если вы не хотите использовать nineoldandroid просто написать view.setAlpha(0) вместо ViewHelper.setAlpha(view,0) и так далее с Scalex, ScaleY и перевода.