2010-11-30 15 views
18

मेरे पास कई पूर्ण स्क्रीन छवियों वाली गैलरी है। मैं एक समय में एक छवि को अग्रिम करने के लिए फ़्लिंग इशारा को सीमित करना चाहता हूं (जैसे एचटीसी गैलरी ऐप)। इसे प्राप्त करने का सही/आसान तरीका क्या है?मैं एंड्रॉइड गैलरी में फ़्लिंग को केवल एक आइटम प्रति फ़्लिंग तक कैसे सीमित कर सकता हूं?

+0

यहाँ एक और संभावित जवाब है! http://stackoverflow.com/questions/2373617/how-to-stop-scrolling-in-a-gallery-widget?lq=1 – Lunf

उत्तर

27

आप गैलरी ओवरराइड विजेट की onFling() विधि और सुपरक्लास onFling() विधि को कॉल न करें।

इससे गैलरी अग्रिम एक आइटम प्रति स्वाइप कर देगा।

+0

उत्कृष्ट! ठीक वही जो मेरे द्वारा खोजा जा रहा था। –

+0

जो काफी आसान लगता है। यह कैसे काम करता है? – njzk2

+0

सटीक होने के लिए, आपको ओवरराइड विधि पर झूठी वापसी करनी होगी। –

0

मैं स्क्रॉल सीमित करने के लिए किसी भी तरह से नहीं मिल सकता है, लेकिन मैं लागू करने/कुछ सफलता के साथ इस कोड अनुकूल समस्या हल हो जाती: http://permalink.gmane.org/gmane.comp.handhelds.android.devel/101327

यह "फ़्लिंग" के साथ एक गैलरी लागू करता

7

मेरे पास एक समाधान है, हालांकि, यह सबसे पहले एक गारंटी पर गारंटी नहीं देता है, और यह संभवतः कोड में मैन्युअल रूप से किया जाएगा): ऑनफ्लिंग पैरामीटर में एक्स-वेग को कम करें। यही कारण है कि, बस इस तरह देखने के लिए onFling ओवरराइड है:

@Override 
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, 
     float velocityY) { 
    return super.onFling(e1, e2, velocityX/4, velocityY); 
} 

बेस्ट,

माइकल

+0

यह एक अच्छा है, आप कुछ एनीमेशन के साथ अपनी गति को कम कर सकते हैं: डी जैसे/2,/3 –

20

मैं एक ही आवश्यकता थी और मैं सिर्फ इतना है कि यह फ़्लिंग प्रति केवल एक आइटम स्लाइड हो जाएगा अगर पता चला मैं बस झूठी वापसी होगी।

@Override 
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, 
         float velocityY) {   
    return false; 
} 
12

कोड उदाहरण सवाल का जवाब देने:

public class SlowGallery extends Gallery 
{ 


    public SlowGallery(Context context, AttributeSet attrs, int defStyle) 
    { 
     super(context, attrs, defStyle); 
    } 

    public SlowGallery(Context context, AttributeSet attrs) 
    { 
     super(context, attrs); 
    } 

    public SlowGallery(Context context) 
    { 
     super(context); 
    } 


    @Override 
    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) 
    { 

     //limit the max speed in either direction 
     if (velocityX > 1200.0f) 
     { 
      velocityX = 1200.0f; 
     } 
     else if(velocityX < -1200.0f) 
     { 
      velocityX = -1200.0f; 
     } 

     return super.onFling(e1, e2, velocityX, velocityY); 
    } 

} 
+2

मुझे लगता है कि यह होना चाहिए: अन्यथा अगर (velocityX <-1200.0f) –

+0

आपने अभी अपना दिन बचाया !!!! बहुत - बहुत धन्यवाद! – TharakaNirmana

+0

धन्यवाद मार्को, मैंने कोड –

3

हाय एक ही समस्या का सामना करना पड़ा, मैं तर्क नीचे का उपयोग कर समस्या हल हो जाती।

1-> बनाना एक वर्ग उस वर्ग चाहिए फैली गैलरी
2-> और विधि onFling ओवरराइड। एक गैलरी के रूप में xml में

package com.sra; 

import android.content.Context; 
import android.util.AttributeSet; 
import android.view.MotionEvent; 
import android.widget.Gallery; 

public class GallView extends Gallery{ 
public GallView(Context context, AttributeSet attrs, int defStyle) { 
     super(context, attrs, defStyle); 
     // TODO Auto-generated constructor stub 
    } 

public GallView(Context context, AttributeSet attrs) { 
     super(context, attrs); 
     // TODO Auto-generated constructor stub 
    } 


    public GallView(Context context) { 
     super(context); 
     // TODO Auto-generated constructor stub 
    } 


    @Override 
    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, 
          float velocityY) {   
     return false; 
    } 

} 

उपयोग इस वर्ग:

कोड नीचे देखें


<com.sra.GallView 
       android:id="@+id/Gallery01" 
       android:layout_width="fill_parent" 
       android:layout_height="250dip" > 
      </com.sra.GallView> 
+0

को अपडेट किया है जिसका मैंने उपयोग किया था। यह काम कर रहा है। अब मैं इसे अंतहीन गैलरी कैसे बना सकता हूं? मेरा मतलब है ... आखिरी छवि के बाद पहली छवि .... –

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