0

サポート ライブラリを介して DepthPageTransformer で ViewPager を使用していますが、最新バージョンのサポート ライブラリ (18) にアップグレードするまで、すべてが正常に機能していました。

DepthPageTransformer はここにあります: http://developer.android.com/training/animation/screen-slide.html

今私が抱えている問題は、Google が何らかの方法で ViewPager を変更したため、DepthPageTransformer が正しく機能しなくなったことです。

Fragment を ViewPager に追加し、ViewPager を保持する Activity を再作成すると、DepthPageTransformer がアルファをゼロに設定しているように見え、ViewPager をドラッグするまで何も表示されません。ドラッグした後、ViewPager は問題なく動作します。

4

2 に答える 2

1

次のコードはテスト済みで、正常に動作します。まず、下位 8 レベルのAPI にnineoldandroidsライブラリを使用します。

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、translation などを記述します。

于 2014-04-05T13:44:43.610 に答える
0

まあ、私はif句を完全に削除しただけで、うまく機能しているようです。

于 2013-08-05T15:59:25.490 に答える