7

कड़ी चोट अप और उन समाचार ऐप्स की तरह नीचे प्रभाव inshorts, वृद्धि खबर, बड़बड़ाहट तरह लेआउट एनीमेशन।एंड्रॉयड: Inshorts खबर एप्लिकेशन

पूरे लेआउट सुचारू रूप से ऊपर/नीचे।
इस लिंक पर inshorts और murmur पर ऐप देखें।

मैं इस कोड की कोशिश की ...

public class VerticalViewPager extends ViewPager { 
    public VerticalViewPager(Context context) { 
     super(context); 
     init(); 
    } 

    public VerticalViewPager(Context context, AttributeSet attrs) { 
     super(context, attrs); 
     init(); 
    } 
    private void init() { 
     // The majority of the magic happens here 
     setPageTransformer(true, new VerticalPageTransformer()); 
     // The easiest way to get rid of the overscroll drawing that happens on the left and right 
     setOverScrollMode(OVER_SCROLL_NEVER); 
    } 
    private class VerticalPageTransformer implements PageTransformer { 

     @SuppressLint("NewApi") 
     @Override 
     public void transformPage(View view, float position) { 

      if (position < -1) { // [-Infinity,-1) 
       // This page is way off-screen to the left. 
       view.setAlpha(0); 

      } else if (position <= 1) { // [-1,1] 
       view.setAlpha(1); 

       // Counteract the default slide transition 
       view.setTranslationX(view.getWidth() * -position); 

       //set Y position to swipe in from top 
       float yPosition = position * view.getHeight(); 
       view.setTranslationY(yPosition); 

      } else { // (1,+Infinity] 
       // This page is way off-screen to the right. 
       view.setAlpha(0); 
      } 
     } 
    } 

    /** 
    * Swaps the X and Y coordinates of your touch event. 
    */ 
    private MotionEvent swapXY(MotionEvent ev) { 
     float width = getWidth(); 
     float height = getHeight(); 

     float newX = (ev.getY()/height) * width; 
     float newY = (ev.getX()/width) * height; 

     ev.setLocation(newX, newY); 

     return ev; 
    } 

    @Override 
    public boolean onInterceptTouchEvent(MotionEvent ev){ 
     boolean intercepted = super.onInterceptTouchEvent(swapXY(ev)); 
     swapXY(ev); // return touch coordinates to original reference frame for any child views 
     return intercepted; 
    } 

    @Override 
    public boolean onTouchEvent(MotionEvent ev) { 
     return super.onTouchEvent(swapXY(ev)); 
    } 

} 

MainActivity.java में

VerticalViewPager Pager2; 
PagerAdapter adapter; 
String[] articleTitle; 
String[] articleName; 
String[] articleDiscription; 

OnCreate() 

Pager2=(VerticalViewPager)findViewById(R.id.pager); 


// Pass results to ViewPagerAdapter Class 
adapter = new ViewPagerAdapter(getActivity(), articleTitle, articleName,  articleDiscription, btnBack,articleImage); 

// Binds the Adapter to the ViewPager 
Pager2.setAdapter(adapter); 

activity_main.xml

<com.example.flipnews.VerticalViewPager 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:id="@+id/pager" 
    /> 

मेरी कोड सरल ऊपर-नीचे स्वाइप करें और किया है, की तरह यह link। लेकिन मैं ऊपर उल्लिखित ऐप्स जैसे बेहतर एनीमेशन प्रभाव बनाना चाहता हूं। या इनबिल्ट फोटो गैलरी प्रभाव फोन करें।

अग्रिम धन्यवाद।

+0

हैलो, विवेका ... हम चीजों को विकसित करने में आपकी मदद नहीं कर सकते ... हम केवल उस कार्यान्वयन के साथ मुद्दों पर आपकी सहायता कर सकते हैं। आपको इसे अपने आप से आजमाने की ज़रूरत है और बाद में मुद्दों के साथ अपना कोड पोस्ट करना होगा। –

+1

@ विवेका अगर आपको इस एनीमेशन के लिए कोई lib मिली है, तो मुझे बताएं। – Dev

+1

मैं पहले से ही इस कोड को आजमाता हूं लेकिन उचित आउटपुट नहीं मिला .. कृपया मेरे कोड की जांच करें। - @MarianoZorrilla –

उत्तर

13

मुझे कई शोधों के बाद समाधान मिला, मुझे आशा है कि यह दूसरों के लिए उपयोगी होगा।

युक्ति: बेहतर स्वाइप प्रभाव के लिए दृश्य पेजर पृष्ठभूमि रंग काला सेट करें।

private static class VerticalPageTransformer implements PageTransformer { 
     private static float MIN_SCALE = 0.75f; 

     public void transformPage(View view, float position) { 
      int pageWidth = view.getWidth(); 

      if (position < -1) { // [-Infinity,-1) 
       // This page is way off-screen to the left. 
       view.setAlpha(0); 



      } else if (position <= 0) { // [-1,0] 
       // Use the default slide transition when moving to the left page 
       view.setAlpha(1); 
       //view.setTranslationX(1); 
       view.setScaleX(1); 
       view.setScaleY(1); 
       float yPosition = position * view.getHeight(); 
       view.setTranslationY(yPosition); 
       view.setTranslationX(-1 * view.getWidth() * position); 

      } else if (position <= 1) { // (0,1] 
       // Fade the page out. 
       view.setAlpha(1 - position); 

       view.setTranslationX(-1 * view.getWidth() * position); 

       // Scale the page down (between MIN_SCALE and 1) 
       float scaleFactor = MIN_SCALE 
         + (1 - MIN_SCALE) * (1 - Math.abs(position)); 
       view.setScaleX(scaleFactor); 
       view.setScaleY(scaleFactor); 

      } else { // (1,+Infinity] 
       // This page is way off-screen to the right. 
       view.setAlpha(0); 
      } 

     } 
    } 

    private MotionEvent swapXY(MotionEvent ev) { 
     float width = getWidth(); 
     float height = getHeight(); 

     float newX = (ev.getY()/height) * width; 
     float newY = (ev.getX()/width) * height; 

     ev.setLocation(newX, newY); 

     return ev; 
    } 

    @Override 
    public boolean onInterceptTouchEvent(MotionEvent ev){ 
     boolean intercepted = super.onInterceptTouchEvent(swapXY(ev)); 
     swapXY(ev); // return touch coordinates to original reference frame for any child views 
     return intercepted; 
    } 

    @Override 
    public boolean onTouchEvent(MotionEvent ev) { 
     return super.onTouchEvent(swapXY(ev)); 
    } 

} 
+0

बहुत बढ़िया काम करना आपने अपना दिन बचाया !!!!! – user3069590

+0

@ विवेका मुझे एक समस्या है मेरे दृश्य पेजर के अंदर एक ग्रिड व्यू है। जब ग्रिड स्वाइप फ़ंक्शन पर स्वाइप करना – Praneeth

+0

काम नहीं कर रहा है हाय, मैंने आपके उत्तर की कोशिश की और यह बहुत अच्छा काम करता है। मैं इसमें एक शुरुआत कर रहा हूँ। क्या आप मुझे यहां क्या कर रहे हैं पर एक संक्षिप्त विवरण दे सकते हैं, उदाहरण के लिए 'view.setTranslationX (-1 * view.getWidth() * स्थिति); यह? – Vishnu

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