изменение цвета фона при пролистывании влево или вправо

#android #swipe

#Android #проведите пальцем

Вопрос:

У меня RelativeLayout их три TexView . Я хочу изменить цвет фона RelativeLayout (только изменить фон, все остальные виды внутри Relativelayout одинаковы) при пролистывании влево или вправо.

я пытался, ViewPager но не получил того, что хотел. я прикрепил GIF ниже с анимацией салфетки. Любая помощь будет оценена. Спасибо!

Вот код, который я пробовал до сих пор:

 //some code
setContentView(R.layout.activity_main);
 mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());
        mViewPager = (ViewPager) findViewById(R.id.pager);
        mViewPager.setAdapter(mSectionsPagerAdapter);
 mViewPager.setOnPageChangeListener(new CustomOnPageChangeListener());
        setUpColors();
}
private void setUpColors(){

        Integer color1 = Color.BLACK;
        Integer color2 = Color.BLUE;
        Integer color3 = Color.GREEN;

        Integer[] colors_temp = {color1, color2, color3};
        colors = colors_temp;

    }
public class SectionsPagerAdapter extends FragmentPagerAdapter {

        public SectionsPagerAdapter(FragmentManager fm) {
            super(fm);
        }

        @Override
        public Fragment getItem(int position) {
            return PlaceholderFragment.newInstance(position   1);
        }

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

    public static class PlaceholderFragment extends Fragment {
        /**
         * The fragment argument representing the section number for this
         * fragment.
         */
        private static final String ARG_SECTION_NUMBER = "section_number";

        /**
         * Returns a new instance of this fragment for the given section
         * number.
         */
        public static PlaceholderFragment newInstance(int sectionNumber) {
            PlaceholderFragment fragment = new PlaceholderFragment();
            Bundle args = new Bundle();
            args.putInt(ARG_SECTION_NUMBER, sectionNumber);
            fragment.setArguments(args);
            return fragment;
        }

        public PlaceholderFragment() {
        }
    }

    public class CustomOnPageChangeListener implements ViewPager.OnPageChangeListener {

        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

            if(position < (mSectionsPagerAdapter.getCount() -1) amp;amp; position < (colors.length - 1)) {

                mViewPager.setBackgroundColor((Integer) argbEvaluator.evaluate(positionOffset, colors[position], colors[position   1]));

            } else {

                // the last page color
                mViewPager.setBackgroundColor(colors[colors.length - 1]);

            }

        }

        @Override
        public void onPageSelected(int position) {
        }

        @Override
        public void onPageScrollStateChanged(int i) {
        }

    }
  

он меняет цвет фона при пролистывании, но я хочу прикрепить анимацию, подобную gif. в настоящее время его цвет исчезает при пролистывании.

Комментарии:

1. viewpager должен работать! но вы должны поместить часы в тот же макет, что и viewpager. таким образом, viewpager будет содержать только цвет фона.

2. о, тогда я, должно быть, делаю это неправильно. можете ли вы предоставить коды? Спасибо

3. пожалуйста, добавьте соответствующий код вашей попытки с помощью viewpager

4. я отредактировал вопрос с помощью кодов. Спасибо

5. что я делаю не так?

Ответ №1:

Вы должны использовать некоторые методы ViewPage и RelativeLayout.

 switch(mView.getCurrentItem()){
case 0: mRelativeLayout.setBackgroundColor(Color.Red);break;
case 1: mRelativeLayout.setBackgroundColor(Color.Blue);break;
case 2: mRelativeLayout.setBackgroundColor(Color.Black);break;
}
  

Я надеюсь, что это поможет