2012-01-19 7 views
5

व्यूफ्लिपर स्वाइप करते समय काम नहीं कर रहा है। यदि मैं सूची दृश्य के बजाय कुछ अन्य दृश्य डालता हूं, तो फ़्लिपिंग ठीक काम करता है। क्या कोई अन्य कोड है जो मुझे सूचीदृश्य के लिए जोड़ना चाहिए? और देखने Flipper अंदर स्क्रॉल दृश्य भी मेरे लिए काम नहीं :( यह मेरा एक्सएमएल कोडव्यूफ्लिपर बच्चे सूचीदृश्य के साथ फ़्लिप नहीं कर रहा है

<?xml version="1.0" encoding="utf-8"?> 
<ViewFlipper xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/vf" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 

    <LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical"> 

     <ListView 
      android:id="@+id/list1" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent"/> 
    </LinearLayout> 
    <LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical"> 
     <ListView 
      android:id="@+id/list2" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent"/> 
    </LinearLayout> 
</ViewFlipper> 

यह मेरी कक्षा कोड है। OnTouchEvent

import android.app.Activity; 
import android.os.Bundle; 
import android.view.GestureDetector; 
import android.view.GestureDetector.SimpleOnGestureListener; 
import android.view.MotionEvent; 
import android.view.View; 
import android.view.animation.Animation; 
import android.view.animation.AnimationUtils; 
import android.widget.AdapterView; 
import android.widget.ArrayAdapter; 
import android.widget.ListView; 
import android.widget.Toast; 
import android.widget.ViewFlipper; 
import android.widget.AdapterView.OnItemClickListener; 

public class MainActivity extends Activity { 

    private static final int SWIPE_MIN_DISTANCE = 120; 
    private static final int SWIPE_MAX_OFF_PATH = 250; 
    private static final int SWIPE_THRESHOLD_VELOCITY = 200; 
    private GestureDetector gestureDetector; 
    View.OnTouchListener gestureListener; 
    private Animation slideLeftIn; 
    private Animation slideLeftOut; 
    private Animation slideRightIn; 
    private Animation slideRightOut; 
    private ViewFlipper viewFlipper; 
    private ListView lv; 
    private String[] city = { "Indore", "Bhopal", "Khargone", "Ujjain", 
     "Nasik", "Pune", "Delhi", "Mumbai", "Noida", "Hyderabad", 
     "Banglore", "Ajmer", "Goa", "Jaipur", "Nagpur", "" }; 
    private String[] country = { "India", "Bhutan", "Kuwait", "USA", }; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main_layout); 
     lv = (ListView) findViewById(R.id.List01); 
     ListView lv2 = (ListView) findViewById(R.id.List02); 

     viewFlipper = (ViewFlipper) findViewById(R.id.flipper); 
     slideLeftIn = AnimationUtils.loadAnimation(this, R.anim.slide_left_in); 
     slideLeftOut = AnimationUtils 
       .loadAnimation(this, R.anim.slide_left_out); 
     slideRightIn = AnimationUtils 
       .loadAnimation(this, R.anim.slide_right_in); 
     slideRightOut = AnimationUtils.loadAnimation(this, 
       R.anim.slide_right_out); 

     gestureDetector = new GestureDetector(new MyGestureDetector()); 
     gestureListener = new View.OnTouchListener() { 
      public boolean onTouch(View v, MotionEvent event) { 
       if (gestureDetector.onTouchEvent(event)) { 
        return true; 
       } 
       return false; 
      } 
     }; 
     lv.setAdapter(new ArrayAdapter<String>(this, 
       android.R.layout.simple_list_item_1, city)); 
     lv2.setAdapter(new ArrayAdapter<String>(this, 
       android.R.layout.simple_list_item_1, country)); 
     lv.setOnItemClickListener(new OnItemClickListener() { 
      public void onItemClick(AdapterView arg0, View view, int position, 
        long id) { 
       // user clicked a list item, make it "selected" 
       Toast.makeText(getBaseContext(), "Item Clicked", 
         Toast.LENGTH_SHORT).show(); 
       // selectedAdapter.setSelectedPosition(position); 
      } 
     }); 
     lv2.setOnItemClickListener(new OnItemClickListener() { 
      public void onItemClick(AdapterView arg0, View view, int position, 
        long id) { 
       // user clicked a list item, make it "selected" 
       Toast.makeText(getBaseContext(), "Item List2 Clicked", 
         Toast.LENGTH_SHORT).show(); 
       // selectedAdapter.setSelectedPosition(position); 
      } 
     }); 
    } 

    class MyGestureDetector extends SimpleOnGestureListener { 
     @Override 
     public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, 
       float velocityY) { 
      try { 
       if (Math.abs(e1.getY() - e2.getY()) > SWIPE_MAX_OFF_PATH) 
        return false; 
       // right to left swipe 
       if (e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE 
         && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) { 
        viewFlipper.setInAnimation(slideLeftIn); 
        viewFlipper.setOutAnimation(slideLeftOut); 
        viewFlipper.showNext(); 
       } else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE 
         && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) { 
        viewFlipper.setInAnimation(slideRightIn); 
        viewFlipper.setOutAnimation(slideRightOut); 
        viewFlipper.showPrevious(); 
       } 
      } catch (Exception e) { 
       // nothing 
      } 
      return false; 
     } 
    } 

    @Override 
    public boolean onTouchEvent(MotionEvent event) { 
     if (gestureDetector.onTouchEvent(event)) 
      return true; 
     else 
      return false; 
    } 
} 

अवहेलना dispatchTouchEvent के बजाय दोनों स्क्रॉल दृश्य बनाता है और इशारा काम कर ठीक।

@Override 
public boolean dispatchTouchEvent(MotionEvent event) { 
    super.dispatchTouchEvent(event); 
    return gestureDetector.onTouchEvent(event); 
} 
+0

धन्यवाद, टचएवेंट के बजाय प्रेषण टचवेन्ट का उपयोग करने का आपका समाधान मेरी मदद करता है। – anujprashar

+0

@anujprashar आपका स्वागत है :) –

+0

धन्यवाद, यह बहुत अच्छा काम करता है :) – Kutbi

उत्तर

0

स्क्रॉल, प्रभाव नहीं ले रही है के रूप में आप पहले से ही जीई overrided है स्टैर, इसलिए, आपको मामले में मैन्युअल रूप से स्क्रॉल प्रभाव लेने की भी आवश्यकता है।

+0

मैन्युअल रूप से स्क्रॉल प्रभाव कैसे लें? क्या आप कुछ कोड इमल्स पोस्ट कर सकते हैं? –

+0

नहीं, मेरे पास उदाहरण या नमूना नहीं है, आप बस Google और निश्चित रूप से आपको कुछ अच्छा मिलेगा। – jeet

+0

sharme ठीक है बहुत बहुत धन्यवाद :) –

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