2013-04-09 56 views
2

我是新來的android和要求setonclicklistener和setonTouchlistener都在同一時間工作.im執行一些操作在適配器端im我有的imageview.some代碼瞭解setonclicklistener和setontouchlistener一次在android

適配器類:

public class Taukygridview extends BaseAdapter{ 

holder.imageview.setOnClickListener(new OnClickListener() { 

//some click operation here 
}); 

holder.imageview.setonTouchListener(new MyTouchListener()); 

holder.imageview.setonTouchListener(new MyDragListener()); 

} 

這裏是MyTouchListener類描述:

public class MyTouchListener implements OnTouchListener 
{ 
    private Context mcontext; 
    public static int view_position=0; 
    public static View first_image_view; 

@Override 
    public boolean onTouch(View v, MotionEvent event) { 
     // TODO Auto-generated method stub 
//some touch operation here 
} 
} 

這裏是一些DESCR iption上的拖放操作..

public class MyDragListener implements OnDragListener 
{ 
@Override 
    public boolean onDrag(View v, DragEvent event) { 
// TODO Auto-generated method stub 
    switch(v.getId): 
{ 
    //some drag operation here 

} 
} 

所以在運行的應用程序只有觸摸操作的工作,當觸摸操作返回false那麼只有點擊操作的工作,但不能省略或包含任何操作(實際上即時執行點擊選擇和觸摸拖放操作),所以任何人都可以建議我怎麼做所有的操作,而不禁用任何上述操作。任何回覆將是非常有益的。謝謝

+0

如果觸摸返回值爲false,則爲兩者編寫代碼並檢入點擊事件,然後執行點擊偵聽器的代碼 – Dilip 2013-04-09 12:37:06

+0

不調用setonTouchListener()兩次覆蓋第一個偵聽器。MyTouchListener? – user2230793 2013-04-09 12:49:19

回答

2

當你使用觸摸事件,你基本上覆蓋了內置的手勢檢測(處理點擊/長按/等)。雖然它可行,但我建議反對它,因爲它有可能導致真正晦澀的錯誤。

相反,使用GestureDetectorSimpleGestureDetector和處理onTapUpConfirmedonScroll

1

正如你可以看到公共布爾onTouch(視圖V,MotionEvent事件)返回布爾

將其設置爲true(返回true;),所以這是最終的setonclick不會觸發

將其設置爲假(返回false;)和asa你釋放屏幕setonclick將觸發

BTW不會導致任何晦澀的buga !!!!!!!!