#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;
}
Я надеюсь, что это поможет