2013-11-03 7 views
5

मैं वास्तव में सरल बनाने की कोशिश कर रहा हूं सूची दृश्य स्लाइड करें, जो तब प्रदर्शित होता है जब उपयोगकर्ता स्क्रीन के नीचे एक बटन पर क्लिक करता है। यह इस प्रकार से दिखना चाहिए:मैं स्क्रीन के नीचे से एंड्रॉइड पर एक दृश्य को "स्लाइड" कैसे कर सकता हूं?

sliding thingy

और HTML/जे एस में एक पूर्ण कार्यान्वयन http://jsbin.com/utAQOVA/1/edit

मैं RelativeLayout उपयोग करने के लिए बस बटन नीचे दी गई सूची की स्थिति, और में है कि पूरी बात डाल करने की कोशिश की है एक रैपर और उसके बाद ऊपर/नीचे एनिमेट करें (ऊपर जेएसबीन जैसा ही)।

समस्या यह है कि शुरुआत में दिखाई देने वाला निचला हिस्सा किसी भी तरह से फिसल गया है, भले ही मैं इसे स्लाइड करता हूं। Evern यदि मैं शुरुआत में नीचे दिखाए गए स्क्रीन शो के रूप में सूची का एक हिस्सा दिखाता हूं, तो नीचे की ओर बढ़ने पर नीचे का हिस्सा फिसल जाता है और केवल वह भाग जो प्रारंभ में दिखाई देता था प्रदर्शित होता है।

clipping

क्या एनीमेशन के इस प्रकार करने के लिए एक उचित दृष्टिकोण हो सकता है?

Here's a relevant portion of the layout

संपादित करें: एक संक्षिप्त चर्चा (स्वीकार किए जाते हैं जवाब की टिप्पणियों में) के बाद मैं बात यह है कि एनिमेटेड है और मैं बस ListView की ऊंचाई बदल चारों ओर लपेटकर LinearLayout निकाल कर इस समाधान कर लिया है , जो बटन को धक्का देता है।

उत्तर

4
समस्या आप

doing.- हो सकता है कि सूची दृश्य अपने स्वयं के लेआउट कैसे करता है, मूल रूप से यह स्क्रीन पर उपलब्ध आकार और पेंट्स को उस हिस्से में फिट करता है और जब से आप सूची दृश्य को ऊँचाई के बिना बनाते हैं या बहुत छोटी ऊंचाई जो आकार रहता है। आप दो दृष्टिकोण के साथ इस का समाधान कर सकते हैं:

  1. एक सरल LinearLayout साथ ListView बदलता है - सभी आप आइटम की सूची से भरा है, मैं यह कर लेंगे, जब आप सूची में कई आइटम नहीं है - तो फायदे एक सरल LinearLayout पर एक सूची दृश्य का नगण्य है।
  2. वैल्यूएनिमीटर का उपयोग करें और & की स्थिति संपत्ति को एनिमेट करते समय स्थिति दृश्य अपडेट करें।शायद

    ValueAnimator va = ValueAnimator.ofInt(0, height); 
        va.setDuration(700); 
        va.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { 
         public void onAnimationUpdate(ValueAnimator animation) { 
          Integer value = (Integer) animation.getAnimatedValue(); 
          v.getLayoutParams().height = value.intValue(); 
          v.setTranslationY(-value.intValue()); 
          v.requestLayout(); 
         } 
        }); 
    
    • मुझे यकीन है कि नहीं कर रहा हूँ अगर setTranslationY का उपयोग कर इस प्रश्न के लिए सही तरीका है या आप चाहिए:

एक पोस्ट मैं टिप्पणी में उल्लेख से अनुकूलित एक ValueAnimator इस तरह दिखना चाहिए नकारात्मक मार्जिन टॉप मान का उपयोग करें (लेआउट पर निर्भर करता है)

+0

मैं पहले से ही आंदोलन के लिए एक संक्रमण एनीमेटर का उपयोग कर रहा हूं, क्या एक तरीका है कि मैं इसे एक ही समय में दोनों एनिमेशन को चलाने के लिए ValueAnimator के साथ _merge_ कर सकता हूं? –

+0

मैं केवल ValueAnimator का उपयोग करता हूं, उदाहरण के लिए इस धागे को जांचें: http://stackoverflow.com/questions/11935216/animation-of-height-of-linearlayout-container-with-valueanimator – Raanan

+1

मुझे लगता है कि मैं समस्या को समझता हूं अभी व। मैंने अपने ऐप को केवल 'ValueAnimator' का उपयोग करने के लिए बदल दिया है, लेकिन अगर मैं 'बेवकूफ' के 'हेगथ' को कुछ बेवकूफ मनमानी उच्च संख्या (10000 की तरह) पर सेट करता हूं, तो यह इसकी ऊंचाई को नहीं बदलता है, लेकिन यह वाई को बदलता है पद। –

0

एनीमेशन आप this.-

<translate xmlns:android="http://schemas.android.com/apk/res/android" 
    android:duration="@android:integer/config_longAnimTime" 
    android:fromYDelta="100%p" 
    android:toYDelta="0" /> 

आप इसे यह एक एनीमेशन xml संसाधन भंडारण चला सकते हैं की तरह लग रहे हैं के लिए देख रहे हैं, और

Animation anim = AnimationUtils.loadAnimation(this, R.anim.animId); 
yourView.startAnimation(anim); 
+0

मैंने 'var एनीमेशन = नया अनुवाद एनीमेशन (0, 0, -600, 0) करने की कोशिश की है; एनीमेशन। अवधि = 1000; एनीमेशन। भरें = सही; ', क्या यह वही चीज़ प्राप्त करता है? क्योंकि उसके साथ दृश्य का निचला हिस्सा अभी भी फिसल गया है। –

+0

एमएमएच क्या आप अपना लेआउट एक्सएमएल पोस्ट कर सकते हैं? मुझे लगता है कि आपके relativelayout क्लिपिंग एक मूल दृश्य है। आप कोशिश कर सकते हैं और 'setClipChildren' को गलत कर सकते हैं। – ssantos

+0

प्रश्न के निचले हिस्से में जोड़ा गया लिंक –

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

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