7

मेरे पास ViewPager है जिसमें प्रत्येक पृष्ठ में listView वाले 3 पृष्ठ हैं। मैं listView को इस तरह से एनिमेट करना चाहता हूं कि जब उपयोगकर्ता अगले पृष्ठ के लिए क्षैतिज रूप से स्वाइप करता है तो listView के आइटम अगले पृष्ठ की चौड़ाई के अनुसार आना चाहिए।किसी अन्य पृष्ठ से viewPages पृष्ठों को नियंत्रित करने के लिए

i.e पहला आइटम पूरी तरह से धक्का दिया जाना चाहिए, दूसरा आधा दिखाई देना चाहिए, प्यास दूसरे के आधा दिखाई देनी चाहिए और इसी तरह।

इस प्रकार की एनीमेशन पहले से ही संपर्क सूची के लिए mi3 xiamo में है।

enter image description here

उपरोक्त छवि में मैं सही direction.Note में स्वाइप कर रहा हूँ कि वह 'हाल' सूची आइटम दृश्यता।

अगर कोई मुझे यह एनीमेशन करने में मदद कर सकता है तो यह बहुत मददगार होगा। ViewPager में पेज परिवर्तन के अनुसार ListView एनीमेशन पर कुछ लिंक या संकेत साझा करें।

उत्तर

3

क्या आपने कभी OnPageChangeListener.onPageScrolled(int position, float positionOffset) विधि का अध्ययन किया है जो ViewPager के स्वाइप श्रोता के रूप में उपयोग किया जाता है? आप स्थिति के साथ कुछ कर सकते हैं ऑफसेट का मान, इसका प्रतिशत मान 0 से 1 या उलटा हुआ है, हमें सूचित करते हुए कि आने वाले पृष्ठ का कितना भाग प्रदर्शित होता है, उस मूल्य से "हालिया कॉल" सूची आइटम से निपटें, उन्हें सेट करें left - getView() विधि मेंaxis।

------------------ 2014-10-03 में अपडेट 1 ------------------

मैं इस प्रभाव को पूरा करने का प्रयास कर रहा हूं, लेकिन मुझे इस समय एनीमेशन काम नहीं मिल रहा है। मैं पहले से ही सूची दृश्य को स्वाइप ऑफसेट (डेल्टा) के बारे में सूचित करता हूं और जो भी मैं अपने सामान के लिए कर सकता हूं, वह उस प्रभाव को बंद करने के लिए देख रहा है जिसे हम चाहते थे। लेकिन बहुत ही जटिल हिस्सा यह है कि हमें यह समझना चाहिए कि अंगूठी से स्वाइप करने या फ़्लिंग करने और सीधे विधि द्वारा स्विच करने के साथ कैसे संगत होना चाहिए।

मैं व्यूपेजर के नियम की तलाश करने, व्यूपेजर और सूची दृश्य के स्रोत की तलाश करने के लिए तीन दिन का प्रयास करता हूं, लेकिन सकारात्मक से वापस नहीं आता है। इसलिए मैंने अपने project को गिटहब पर धक्का दिया।

------------------ 2014-10-04 में अपडेट 2 ------------------

निम्नलिखित जीआईएफ एनीमेशन को बिल्कुल समझाएगा।

gif

------------------ 2014-10-07 में अद्यतन 3 --------------- ---

ठीक है, ऐसा प्रतीत होता है कि मैं इस एनीमेशन को पूरी तरह से पुन: पेश करने में विफल रहा हूं। एक मूल्यवान अंत होने के लिए, मैंने कम से कम अपनी परियोजना का काम किया, मूल प्रभाव के करीब आने के लिए भी अपना सर्वश्रेष्ठ प्रयास किया। पूरे काम को लेने के लिए मेरा पहला अपडेट गिटहब प्रोजेक्ट देखें ..

+0

हाँ मैंने ऑनपेज चेंजलिस्टर के बारे में अध्ययन किया है .पर मुझे नहीं पता कि अगले पृष्ठ के दृश्य से कैसे निपटें। अगर आप मुझे कुछ लिंक या इस बारे में एक उदाहरण दे सकते हैं तो यह बहुत मददगार होगा। ऑनपेजस्क्रॉल से आइटम्स वैल्यू सेट करें। – Manishika

+0

हां, हां, उस सूची दृश्य में ** positionOffset ** के मान को सिंक्रनाइज़ करना मुश्किल है क्योंकि यह एक टुकड़े के अंदर है, मुझे खेद है कि मुझे यह कैसे प्राप्त करना है इसके बारे में कोई जानकारी नहीं है। लेकिन मैंने पहले [ViewPager] (https://github.com/vince-styling/traversaless-viewpager-android) को बढ़ाया है, आप यह समझ सकते हैं कि "इंडिकेटर टेस्ट" स्निपेट में स्थिति ऑफसेट से कैसे निपटें, बस डाउनलोड करें मेरा नमूना एपीके फिर जांच लें। – VinceStyling

+0

यह एनीमेशन का सटीक व्यवहार स्पष्ट नहीं है जिसे आप करने का प्रयास कर रहे हैं (उस छवि की तुलना में बेहतर स्पष्टीकरण अच्छा होगा)। वैसे भी इस कोड पर एक नज़र डालें https://github.com/luksprog/DroidPlayground/blob/1ea55a42d9f1df1de0ee4fa631abc08dcdff1e5c/src/com/luksprog/playground/fragment/ListPagerOffset.java (जो मुझे प्रश्न से समझा गया था)। – Luksprog

1

आपको PageTransformer का उपयोग ViewPager के प्रत्येक पृष्ठ पर स्वाइप करने के दौरान एक ट्रान्सफ़ॉर्मेशन लागू करने के लिए करना चाहिए। मूल बातें Android Developer Training में शामिल हैं।

कुछ कोड लागू करता है कि क्या आप एक बहुत सरल तरीके से की जरूरत है नीचे:

public class SwipeAnimationActivity extends Activity { 

    private static final String[] COUNTRIES = new String[]{ 
      "Belgium", "France", "Italy", "Germany", "Spain", 
      "Austria", "Russia", "Poland", "Croatia", "Greece", 
      "Ukraine", 
    }; 

    private ViewPager viewPager; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_swipe_animation); 
     viewPager = (ViewPager) findViewById(R.id.view_pager); 
     viewPager.setAdapter(createPagerAdapter()); 
     viewPager.setPageTransformer(false, createPageTransformer()); 
    } 

    private FragmentPagerAdapter createPagerAdapter() { 
     return new FragmentPagerAdapter(getFragmentManager()) { 
      @Override 
      public Fragment getItem(int position) { 
       ListFragment listFragment = new ListFragment(); 
       listFragment.setListAdapter(createListAdapter()); 
       return listFragment; 
      } 

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

    private ArrayAdapter<String> createListAdapter() { 
     return new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, COUNTRIES); 
    } 

    private ViewPager.PageTransformer createPageTransformer() { 
     return new ViewPager.PageTransformer() { 
      @Override 
      public void transformPage(View page, float position) { 
       ListView listView = (ListView) page.findViewById(android.R.id.list); 
       int childCount = listView.getChildCount(); 
       float offset = .5f * listView.getWidth(); 
       for (int i = 0; i < childCount; i++) { 
        View childView = listView.getChildAt(i); 
        childView.setTranslationX(i * offset * position); 
       } 
      } 
     }; 
    } 

} 

आप आसानी से transformPage(View page, float position) tweak प्रभाव आप की जरूरत को प्राप्त कर सकते हैं (शायद interpolators का उपयोग कर एनीमेशन के लिए आसान किसी तरह लागू करने के लिए)।

+0

यह बताने के लिए सराहना की गई थी कि पेजरान्सफॉर्मर का उपयोग हम कर सकते हैं, मुझे विश्वास है कि यह एनीमेशन प्राप्त करने का मुख्य बिंदु था। मूल एनीमेशन के अनुसार, यह केवल आने वाले पृष्ठ के साथ होता है, जो कुछ भी दिशा बदलना है, प्रारंभ पृष्ठ कभी महसूस नहीं करता है। मैंने ट्रांसफॉर्म पेज() में काफी परीक्षण किया है, लेकिन मुझे यह पता नहीं लगाया जा सकता कि कौन सा पृष्ठ पृष्ठ शुरू कर रहा है और कौन सा पृष्ठ आ रहा है, विशेष रूप से स्वाइप दिशा अक्सर बदलती है। कृपया इसके साथ मेरी मदद करें, बहुत बहुत धन्यवाद। – VinceStyling

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

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