2011-05-27 42 views
2


即時通訊新的觸摸屏編程請給我一些幫助!android我不明白在我的子類中長按檢測ImageView

我有:

public class PhotoEditDrawView extends ImageView { 

和我有:

@Override 
public boolean onTouchEvent(MotionEvent event) { 

在構造函數中我有:

setOnLongClickListener(new OnLongClickListener() { 
@Override 
    public boolean onLongClick(View v) { 
     Toast.makeText(ctx, "hello hello ", Toast.LENGTH_SHORT).show(); 
     return true; 
    } 
}); 

onLongClick永遠不會被解僱。我究竟做錯了什麼?
onTouchEvent中的一切正常。

我想要做的是按下1-2秒開始一個活動@android:style/Theme.Dialog

回答

5

看看這個小片段,它的作品!

public class MyImageView extends ImageView { 

private Context mContext; 

public MyImageView(Context context) { 
super(context); 
setBackgroundColor(Color.RED); 
mContext = context; 
setOnLongClickListener(new OnLongClickListener() { 
    @Override 
    public boolean onLongClick(View v) { 
    Toast.makeText(mContext, "hello hello ", Toast.LENGTH_SHORT).show(); 
    return true; 
    } 

}); 
} 

@Override 
public boolean onTouchEvent(MotionEvent event) { 
// TODO Auto-generated method stub 
return super.onTouchEvent(event); 
} 

} 

確保you're中的onTouchEvent和onLongClick返回true,從而使事件持續觸發。

+0

謝謝這是最後工作。 – Erik 2011-05-27 20:00:15

+0

在onLongClick火災發生之前有什麼方法可以延長時間嗎?現在大約一秒鐘。我想2秒,也許 – Erik 2011-05-27 20:18:00

+0

Im移動文字(canvas.drawtext)在屏幕上,並希望讓用戶長時間編輯字體大小和顏色。這是大約500毫秒的延遲之前,它發生。我的活動很容易。 – Erik 2011-05-27 20:26:04

2

我有一個ImageView子類完全相同的問題,onTouch事件觸發確定,但我無法獲得長按註冊OnLongClickListener。最後,我只是在MotionEvent.ACTION_DOWN和MotionEvent.ACTION_UP事件中調用System.currentTimeMillis()來計算時間差。不完美,但它解決了問題&它的工作原理。

+0

謝謝。我喜歡在手指仍然按下時顯示活動彈出窗口。這是可能的,因爲當手指擡起時ACTION_UP被觸發了嗎? – Erik 2011-05-27 19:55:00

+1

我想你需要一個線程來檢測這個,然後在ACTION_DOWN中設置時間,在ACTION_UP中清除它並讓你的線程看看在X毫秒後時間還沒有被清除。 – daveD 2011-05-27 20:00:03

+0

謝謝我必須從該線程doe開始一個活動。不知道猜我可以做的傳遞在ctx – Erik 2011-05-27 20:18:53