2016-10-05 1 views
1

Ich habe RelativeLayout, die drei haben TexView. Ich will ändern Hintergrundfarbe von RelativeLayout (nur ändern Hintergrund alle anderen Ansichten innerhalb Relative Layout sind die gleichen) wenn Swipe nach links oder rechts.Ändern der Hintergrundfarbe beim Streichen nach links oder rechts

Ich versuchte mit ViewPager, aber ich bekomme nicht, was ich wollte.I Anhang GIF mit Swipe-Animation. Jede Hilfe wäre willkommen. Vielen Dank!

Hier ist der Code, die ich bisher versucht:

//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) && 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) { 
     } 

    } 

es Farbe der Hintergrund ändert sich, wenn klauen, aber ich möchte eine Animation wie gif attached.currently seine fade away Farbe, wenn sie klauen.

+0

viewpager hepl arbeiten müssen! aber du solltest die uhr im selben layout mit viewpager stellen. so enthält viewpager nur Hintergrundfarbe. – uguboz

+0

oh ich muss es dann falsch machen. können Sie Codes zur Verfügung stellen? Danke –

+0

Bitte fügen Sie relevanten Code Ihres Versuches mit Viewpager – petey

Antwort

0

Sie müssen einige Methoden von viewPage und RelativeLayout verwenden.

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

Ich hoffe, das

Verwandte Themen