2016-07-23 10 views
6

मैं पृष्ठभूमि में पृष्ठभूमि छवि का लंबन स्क्रॉलिंग प्रभाव बनाना चाहता हूं जिसमें पेजर देखें, छवि को ViewPager स्वाइप/स्लाइड के अनुसार स्क्रॉल करना चाहिए।लंबन पृष्ठभूमि छवि के साथ एंड्रॉइड व्यूपेजर

मैंने पहले से ही https://github.com/andraskindler/parallaxviewpager का उपयोग करने का प्रयास किया है, यह काम नहीं कर रहा है यह छवि दिखाने के बजाय खाली पृष्ठभूमि दिखाता है।

यह gif मेरी आवश्यकता का वर्णन करता है:

enter image description here

कृपया मेरी मदद करो

उत्तर

8

उपयोग HorizontalScrollView और ViewPager.addOnPageChangeListener विधि।
नीचे उदाहरण है।

MainActivity.java में

:

public class MainActivity extends AppCompatActivity { 

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

     final HorizontalScrollView scrollView = (HorizontalScrollView) findViewById(R.id.scroll_view); 
     final ImageView imageView = (ImageView) findViewById(R.id.background); 
     final ViewPager viewPager = (ViewPager) findViewById(R.id.view_pager); 

     viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { 
      @Override 
      public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { 
       int x = (int) ((viewPager.getWidth() * position + positionOffsetPixels) * computeFactor()); 
       scrollView.scrollTo(x, 0); 
      } 

      @Override 
      public void onPageSelected(int position) { 

      } 

      @Override 
      public void onPageScrollStateChanged(int state) { 

      } 

      private float computeFactor() { 
       return (imageView.getWidth() - viewPager.getWidth())/
         (float)(viewPager.getWidth() * (viewPager.getAdapter().getCount() - 1)); 
      } 
     }); 
     viewPager.setAdapter(new CustomPagerAdapter(this)); 
    } 
} 

लेआउट फ़ाइल (activity_main.xml) में:

<?xml version="1.0" encoding="utf-8"?> 
<FrameLayout 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:tools="http://schemas.android.com/tools" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     tools:context=".MainActivity"> 

    <HorizontalScrollView 
      android:id="@+id/scroll_view" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:scrollbars="none"> 

     <FrameLayout 
       android:layout_width="wrap_content" 
       android:layout_height="match_parent"> 

      <ImageView 
        android:id="@+id/background" 
        android:layout_width="1000dp" 
        android:layout_height="match_parent" 
        android:scaleType="centerCrop" 
        android:src="@drawable/image"/> 
     </FrameLayout> 

    </HorizontalScrollView> 

    <android.support.v4.view.ViewPager 
      android:id="@+id/view_pager" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent"/> 

</FrameLayout> 
+1

अपने भयानक जवाब –

+0

लिए एक बहुत thanx मेरा मानना ​​है कि आप viewPager.getAdapter का उपयोग करना चाहिए()। getCount() नहीं (viewPager.getAdapter()। getCount() - 1) – gjsalot

संबंधित मुद्दे