Android 如何使ViewPager的第一个视图始终保持不变

Android 如何使ViewPager的第一个视图始终保持不变,android,android-viewpager,Android,Android Viewpager,我上了ViewPager的课。当我单击第一个视图上的按钮时,第二个视图被翻转,并且它上的按钮移动到屏幕的中间。但当我返回到第一个视图时,按钮也被移动了。但我需要的是,第一个视图始终保持不变。我该怎么做 我的客户页面雷达: public class CustomPagerAdapter extends PagerAdapter { private Context context; private ImageButton imageButton; public Custom

我上了ViewPager的课。当我单击第一个视图上的按钮时,第二个视图被翻转,并且它上的按钮移动到屏幕的中间。但当我返回到第一个视图时,按钮也被移动了。但我需要的是,第一个视图始终保持不变。我该怎么做

我的客户页面雷达:

public class CustomPagerAdapter extends PagerAdapter {
    private Context context;
    private ImageButton imageButton;

    public CustomPagerAdapter(Context context) {
        super();
        this.context = context;
    }

    @NotNull
    @Override
    public Object instantiateItem(@NotNull ViewGroup container, int position) {
        final TimeView timeView = new TimeView(context);

        View view = null;
        switch (position) {
            case 0:
                view = timeView;

                break;
            case 1:
                view = SecondCustomView.getView(context, container);

                break;
        }

        container.addView(view);
        return view;
    }

    @Override
    public int getCount() {
        return 2;
    }

    @Override
    public boolean isViewFromObject(@NotNull View view, @NotNull Object object) {
        return view == object;
    }

    @Override
    public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
        container.removeView((View) object);
    }
}
活动类别:

public class Activity extends AppCompatActivity {
    private ViewPager viewPager;
    private CustomPagerAdapter customPagerAdapter;
    private ImageButton imageButton;

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

        customPagerAdapter = new CustomPagerAdapter(this);
        viewPager = findViewById(R.id.viewPager);
        viewPager.setAdapter(customPagerAdapter);
        imageButton = findViewById(R.id.nextButton);

        Display display = getWindowManager().getDefaultDisplay();
        Point point = new Point();
        display.getSize(point);
        int middleScreen = point.x/2;

        final TranslateAnimation animation = new TranslateAnimation(0, -middleScreen, 0, 0);

        animation.setDuration(3000);
        imageButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                viewPager.setCurrentItem(viewPager.getCurrentItem() + 1, true);
                imageButton.setAnimation(animation);
            }
        });
    }
}

UPD:我发现,当我点击和翻转按钮时,我该如何做动画。我必须使用
addOnPageChangeListener
方法:

 viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

            }

            @Override
            public void onPageSelected(int position) {
                Display display = getWindowManager().getDefaultDisplay();
                Point point = new Point();
                display.getSize(point);
                int middleScreen = point.x / 2;
                final TranslateAnimation animation = new TranslateAnimation(0, -middleScreen, 0, 0);

                animation.setDuration(3000);
                animation.setFillAfter(true);

                if (position == 1) {
                    imageButton.setAnimation(animation);
                }
            }

            @Override
            public void onPageScrollStateChanged(int state) {

            }
        });
    }

但我仍然不知道如何在第一次查看时使按钮位置保持不变…

UPD:我发现,如何才能在单击和翻转时制作按钮动画。我必须使用
addOnPageChangeListener
方法:

 viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

            }

            @Override
            public void onPageSelected(int position) {
                Display display = getWindowManager().getDefaultDisplay();
                Point point = new Point();
                display.getSize(point);
                int middleScreen = point.x / 2;
                final TranslateAnimation animation = new TranslateAnimation(0, -middleScreen, 0, 0);

                animation.setDuration(3000);
                animation.setFillAfter(true);

                if (position == 1) {
                    imageButton.setAnimation(animation);
                }
            }

            @Override
            public void onPageScrollStateChanged(int state) {

            }
        });
    }

但是我仍然不知道如何在第一次查看时确定按钮位置没有改变…

我发现在第一次查看时按钮位置没有改变的决定是什么:

@Override
            public void onPageSelected(int position) {
                Display display = getWindowManager().getDefaultDisplay();
                Point point = new Point();
                display.getSize(point);
                int middleScreen = point.x / 2;
                final TranslateAnimation animation = new TranslateAnimation(0, -middleScreen, 0, 0);
                animation.setDuration(3000);
                animation.setFillAfter(true);

                if (position == 1) {
                    imageButton.setAnimation(animation);
                }else {
                    imageButton.getAnimation().cancel();
                }
            }

在第一次查看时,我发现按钮位置没有改变:

@Override
            public void onPageSelected(int position) {
                Display display = getWindowManager().getDefaultDisplay();
                Point point = new Point();
                display.getSize(point);
                int middleScreen = point.x / 2;
                final TranslateAnimation animation = new TranslateAnimation(0, -middleScreen, 0, 0);
                animation.setDuration(3000);
                animation.setFillAfter(true);

                if (position == 1) {
                    imageButton.setAnimation(animation);
                }else {
                    imageButton.getAnimation().cancel();
                }
            }