2012-10-29 61 views
1

在我的活動中,我有一個imageView(在頂部)和textView(在底部)。使用這兩個視圖我顯示一個圖像及其相應的描述。我已經使用'SimpleOnGestureListener'實現了fling,這樣用戶就可以瀏覽不同的圖像及其相應的描述(每次投擲時,我都會加載不同的圖像並顯示給用戶)。onClick阻止onFling

現在,當我爲ImageView添加onClickListener時(我需要檢測onClick,以便可以顯示帶有圖像描述的Toast),問題就開始了。但onClick似乎阻止了投擲事件。我如何檢測投擲。

是否已經通過這個論壇下面的問題(和其他幾個)不見了..

android - giving onTouch priority over onClick

Android onClick blocking onFling

但還是沒能找出解決方案。

下面給出的是代碼

public class MainActivity extends Activity{ 
    ImageView m_imageView; 
    String[] m_imageNames = { "img1__", "img2__", "img2__"}; 
    int m_index = 0; 
    Resources m_res; 
    Drawable m_drawable; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     Log.v("INFO", "Inside oncreate"); 

     m_imageView = (ImageView)findViewById(R.id.imageView1); 
     m_res = getResources(); 
     int imageId = m_res.getIdentifier(m_imageNames[m_index], "drawable", getPackageName()); 
     Drawable drawable = m_res.getDrawable(imageId); 
     m_imageView.setImageDrawable(drawable); 

     m_imageView.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      Log.v("INFO", "Inside onClick"); 
     } 
     }); 
    } 

    @Override 
    public boolean onTouchEvent(MotionEvent event) { 
    Log.v("INFO", "onTouchEvent detected"); 
    return gestureDetector.onTouchEvent(event); 
    } 

    SimpleOnGestureListener simpleOnGestureListener 
    = new SimpleOnGestureListener(){ 

    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; 

    @Override 
    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, 
     float velocityY) { 
       //Fling code goes here 
     } 
    }; 

    GestureDetector gestureDetector = new GestureDetector(null, SimpleOnGestureListener); 

} 

+0

我不確定你從代碼中拿出了什麼,但是你有一些嚴重的支架平衡問題正在發生。你能解決這些問題並更新你的代碼嗎? – Eric

+0

對不起,哥們...這樣做(這變得非常可憐......當我把代碼形式的eclipse複製到這裏時).. – Raj

回答

0

這些方法一般有boolean回報,這表示該事件已經被消耗掉,不應該進一步傳播。嘗試更改返回值。