Android 带支持库v13的ViewPager PageTransformer

Android 带支持库v13的ViewPager PageTransformer,android,android-viewpager,Android,Android Viewpager,我的应用程序使用Android的ViewPager和FragmentStatePagerAdapter,它只需要支持Android 4.x或更高版本。我正在为ViewPager使用v13支持库,所以我不需要处理SupportFragment,我只需要使用Android.app.Fragment。一切正常,但现在我试图在我的ViewPager中添加一个PageTransformer,我遇到了问题 ViewPager.setPageTransformer(bool,PageTransformer)未

我的应用程序使用Android的ViewPager和FragmentStatePagerAdapter,它只需要支持Android 4.x或更高版本。我正在为ViewPager使用v13支持库,所以我不需要处理SupportFragment,我只需要使用
Android.app.Fragment
。一切正常,但现在我试图在我的ViewPager中添加一个
PageTransformer
,我遇到了问题

ViewPager.setPageTransformer(bool,PageTransformer)
未被识别为方法,
PageTransformer
未被识别为类(我尝试了许多导入组合,但均无效)。使用v4支持库,
ViewPager.setPageTransformer
是一种方法,但是如果我使用支持库v4,我必须使用
SupportFragments
,因为我支持的Android版本,我认为这是不必要的

问题:是否支持v13库的
ViewPager
支持页面转换器?与SupportFragments相比,使用本机片段有什么好处吗?或者我应该只使用SupportLibrary v4吗

编辑:我正在添加文件的导入和相关代码,以演示我的问题

import java.lang.reflect.Field;
import android.app.Fragment;
import android.app.FragmentManager;
import android.support.v13.app.FragmentStatePagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
在我的类中(它不扩展任何内容),我尝试用以下方法设置页面转换器:

public View createView(LayoutInflater inflater, ViewGroup container) {
        // Inflate the layout containing a title and body text.
        ViewGroup rootView = (ViewGroup) inflater
                .inflate(R.layout.carousel_fragment, container, false);


        mContainer = (PagerContainer) rootView.findViewById(R.id.pager_container);
        //PagerContainer makes it easy to display more than one page from the ViewPager
        //on screen at once
        mPager = mContainer.getViewPager();


        mAdapter = new MyPagerAdapter(MainActivity.getActivity().getFragmentManager());
        mPager.setAdapter(mAdapter);

        mPager.setOffscreenPageLimit(2);
        mPager.setPageMargin(10);
        mPager.setClipChildren(false);
        mPager.setCurrentItem(mPager.getAdapter().getCount()/2, false);

        mPager.setPageTransformer(false, new PageTransformer(){
            @Override
            public void transformPage(View page, float position) {
                // do something that isn't default behavior
            }
        });

        Field mScroller;
        try {
            mScroller = ViewPager.class.getDeclaredField("mScroller");

            mScroller.setAccessible(true); 
            CustomScroller scroller = new CustomScroller(MainActivity.getContext());

            mScroller.set(mPager, scroller);
        } catch (NoSuchFieldException e) {
            e.printStackTrace();
        } catch (IllegalArgumentException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } 

        return rootView;
    }
我得到的具体错误是
找不到symbol:PageTransformer
,与
setPageTransformer
方法的错误类似。我的项目有
android-support-v13.jar
,但没有v4.jar,因为当我将它们都包含进来时,我遇到了DEX错误


我可能在做些傻事,但我还是不明白。非常感谢您提供的任何帮助。

我刚刚在v13支持库中试用过,没有发现任何问题:

mPager.setPageTransformer(false, new PageTransformer() {

            @Override
            public void transformPage(View page, float position) {
                // TODO Auto-generated method stub

            }
        });
实际上,v4 jar中的
ViewPager
与v13 jar中的完全相同。而且,
PageTransformer
根本不依赖于
Fragment
s。你能提供一些代码吗

编辑:

您缺少一个导入:

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

你们班上有吗?请确保您的匿名
PageTransformer
实际上实现了
android.support.v4.view.ViewPager.PageTransformer
,而不是其他任何东西。

我希望这能进一步帮助您,(我认为未找到编译器的符号是以下方法):

当针对蜂窝下面的平台时,您希望使用这些平台中不可用的视图方法(在PageTransformer实现的类中):

View view=findViewById(R.id.viewInsidePager);
view.setAlpha(1);
view.setTranslationX(0);
view.setScaleX(1);
view.setScaleY(1);
而是使用:

ViewCompat.setAlpha(view,1);
ViewCompat.setTranslationX(view,0);
ViewCompat.setScaleX(view,1);
ViewCompat.setScaleY(view,1);

我在编写“使用ViewPager制作屏幕幻灯片”教程时遇到了同样的问题,但是打包的v4支持库版本不包含PagerTransformer接口。因此,删除jar,并用Android->extras->support->v13文件夹中的版本替换它

build.gradle
文件中添加
compile'com.android.support:support-v13:23.1.1'
dependencies


感谢您的回复。我已经在我的原始问题的编辑中发布了代码,希望能让我的问题更清楚。我正在尝试你在mPager.setPageTransformer上提出的方法,但我仍然会出错。我知道PageTransformer不依赖于片段,现在我发现我原来的问题有点不清楚,我希望我的代码片段会有所帮助。我尝试导入PageTransformer,但PageTransformer出现了相同的“找不到符号”错误。我正在使用Android Studio,我的问题可能是由那里的bug引起的吗?我尝试重新启动IDE并重新下载最新的兼容性库,但这些都不起作用。我只是在Android Studio中进行了尝试,效果很好。此外,还必须使用支持v4。实际上,支持v13只是v4的一个超集,它包含了v4的所有内容<代码>查看页面仅包含在v4软件包中。使用Gradle导入支持库是否正确?