-2

少し問題がありました。アニメーションが機能しません。エラーは発生しません。単に私のアニメーションが機能しません。

これは私のコードです。

public class MainActivity extends FragmentActivity {

    private PagerAdapter mPagerAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        this.initialisePaging();
    }

    private void initialisePaging() {

        List<Fragment> fragments = new Vector<Fragment>();
        fragments.add(Fragment.instantiate(this, Tab1Fragment.class.getName()));
        fragments.add(Fragment.instantiate(this, Tab2Fragment.class.getName()));
        fragments.add(Fragment.instantiate(this, Tab3Fragment.class.getName()));
        this.mPagerAdapter  = new PagerAdapter(super.getSupportFragmentManager(), fragments);

        ViewPager pager = (ViewPager)super.findViewById(R.id.pager);
        pager.setAdapter(this.mPagerAdapter);
        pager.setPageTransformer(true, new ZoomOutPageTransformer());
    }

    public static class Tab1Fragment extends Fragment {

        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {
            if (container == null) {
                return null;
            }
            return (ImageView)inflater.inflate(R.layout.tab_frag1_layout, container, false);
        }
    }

    public static class Tab2Fragment extends Fragment {

        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {
            if (container == null) {
                return null;
            }
            return (ImageView)inflater.inflate(R.layout.tab_frag2_layout, container, false);
        }
    }

    public static class Tab3Fragment extends Fragment {

        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {
            if (container == null) {
                return null;
            }
            return (ImageView)inflater.inflate(R.layout.tab_frag3_layout, container, false);
        }
    }

    public static class PagerAdapter extends FragmentPagerAdapter {

        private List<Fragment> fragments;

        public PagerAdapter(FragmentManager fm, List<Fragment> fragments) {
            super(fm);
            this.fragments = fragments;
        }

        @Override
        public Fragment getItem(int position) {
            return this.fragments.get(position);
        }

        @Override
        public int getCount() {
            return this.fragments.size();
        }
    }

    public static class ZoomOutPageTransformer implements ViewPager.PageTransformer {
        private static final float MIN_SCALE = 0.85f;
        private static final float MIN_ALPHA = 0.5f;

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

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

            } else if (position <= 1) { // [-1,1]
                // Modify the default slide transition to shrink the page as well
                float scaleFactor = Math.max(MIN_SCALE, 1 - Math.abs(position));
                float vertMargin = pageHeight * (1 - scaleFactor) / 2;
                float horzMargin = pageWidth * (1 - scaleFactor) / 2;
                if (position < 0) {
//                  view.setTranslationX(horzMargin - vertMargin / 2);
                    ViewHelper.setTranslationX(view, horzMargin - vertMargin / 2);
                } else {
//                  view.setTranslationX(-horzMargin + vertMargin / 2);
                    ViewHelper.setTranslationX(view, -horzMargin + vertMargin / 2);
                }

                // Scale the page down (between MIN_SCALE and 1)
//              view.setScaleX(scaleFactor);
//              view.setScaleY(scaleFactor);
                ViewHelper.setScaleX(view, scaleFactor);
                ViewHelper.setScaleY(view, scaleFactor);

                // Fade the page relative to its size.
//              view.setAlpha(MIN_ALPHA +
//                      (scaleFactor - MIN_SCALE) /
//                      (1 - MIN_SCALE) * (1 - MIN_ALPHA));

                ViewHelper.setAlpha(view, MIN_ALPHA +
                        (scaleFactor - MIN_SCALE) /
                        (1 - MIN_SCALE) * (1 - MIN_ALPHA));

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

他のすべては正常に機能しています。これを実装したい私を助けてください。

NineOldroidsを使わずに実装する前に。しかし、これを実装した後でも、うまくいきませんでした。

4

2 に答える 2

1

また、この回答をチェックしてください。nineoldandroid を使用すると動作するはずですが、11 より前のバージョン (Heneycomb) では PageTransform は無視されますが、サポート ライブラリには含まれています。アニメーションを行うためだけにフリッパーを表示することを考えています。しかし、私はまだ別の方法を探しています。

編集:その質問の私の答えをチェックして、問題をどのように解決したかを確認してください。私は基本的にviewpagerクラスをコピーし、setPageTransformerでSDKバージョンをチェックするifステートメントを削除しました

于 2013-07-11T11:41:06.937 に答える