1. android的ontouch方法如何判斷單擊還是雙擊
android 上沒有雙擊事件 也沒有那個概念 ,雙擊 就是兩次單擊。當點擊事件 出發是 按下的時候出發一次onTouch 事件 抬起的時候 也觸發一個onTouch 事件,如果你想做雙擊的話 只能自己進行判斷了 用兩次onTouch 抬起時的時間間隔 來 定位他是否是雙擊。
2. android textview或者LinearLayout的雙擊事件怎麼做
這個我實現了,但是也是用記錄上次點擊時間的方法,代碼給你看下。
java">importandroid.app.Activity;
importandroid.os.Bundle;
importandroid.util.Log;
importandroid.view.View;
importandroid.view.View.OnClickListener;
importandroid.widget.TextView;
importcom.sinovoice.test.R;
{
privatestaticfinalStringTAG="DoubleClickActivity";
privateintclickCount;
privatelongpreClickTime;
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextViewtv=(TextView)findViewById(R.id.tv_main);
clickCount=0;
tv.setOnClickListener(newOnClickListener(){
@Override
publicvoidonClick(Viewv){
if(clickCount==0){
好此preClickTime=System.currentTimeMillis();
clickCount++;
}elseif(clickCount==1){
longcurTime=System.currentTimeMillis();
if((curTime-preClickTime)<500){
輪襪慧doubleClick();
}
clickCount=0;
preClickTime=0;
}else{
臘答Log.e(TAG,"clickCount="+clickCount);
clickCount=0;
preClickTime=0;
}
}
});
}
privatevoiddoubleClick(){
Log.i(TAG,"doubleclick");
}
}
3. android button 雙擊操作如何監聽
android裡面沒有監聽雙擊事件的操作,如果想實現的話我的建議是在
private int count = 0;
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
count++;
if(cout == 2){
.監聽處理.
count = 0;
}
}
}) ;
這樣做的話會導致一個問題,那就是用戶在單擊一下是沒什麼操作 當用戶很長時間沒單擊之後再單擊一次仍然會執行相關操作,這樣給用戶的體驗很不好,如想改善最好是通過一個線程來監控count讓count在一定時間內刷新為0如下
private int count = 0;
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
count++;
if(cout == 2){
.監聽處理.
count = 0;
}
}
}) ;
new Thread(new Runnable(){
public void run() {
try {
Thread.sleep(500);
count = 0;
} catch (InterruptedException e) {
e.printStackTrace();
}
}}).start();
這樣做的話有可能的情況是當用戶在500ms末單擊一下在另外一個500ms初單擊一下這樣是不會觸發相應的事件的,這是這個程序的本身最大的缺陷
4. Android手勢---GestureDetector
GestureDetector 可以使用 MotionEvents 檢測各種手勢和事件。
這個類只能用於檢測觸摸事件的 MotionEvent
GestureDetector有三個內部介面,兩個內部類
他們都是起到監聽器的作用
注意:SimpleOnGestureListener繼承了GestureDetector的三個內部介面
GestureDetector自帶了五個構造方法,但是有兩個被廢棄了
因為第三個調用第二個,所以只要關注前面兩個就行了
我們發現第二個構造方法中多了一個Handler變數
一般來說,不會使用這個構造方法
但是因為GestureDetector中的數據是給GestureHandler內部類進行處理,這個類會使用Handle,由穗穗Handler的知識知道,創建Handler必須有Looper,但是在一些新開的線程中沒有創建Looper,所以我們需要傳入一個帶了Looper的Handler變數,否則,GestureDetector對象會創建失敗
按下是所以手勢必定有的動作
所以無論什麼手勢,第一個調用的方法就是onDown
注意:
GestureDetector的點擊對圖片,按鈕等無用
為了解決這個問題,我們可以
這兩個方法都可以響應到單擊事件,但是他們之間還是有區別的
當我們同時在監聽器中覆寫這兩個方法,並且進行單擊事件
我們會發現當進行單擊事件的時候,這幾個方法響應的順序是這樣的
首先onDown()必定是第一個執行的,但是會發現onSingleTapUp在onSingleComfirmed之前執行
我查閱了相關文檔,發現他們雖然同樣響應的是當手指離開屏幕的活動,但是 onSingleTapUp是立即執行 ,而 onSingleComfirmed卻要在離開後300ms後才執行 ,這樣悉世的目的是確認我們進行的是單擊事件(為了防止我們在300ms內再次進行單擊事件),所以他們的名字分別是Up和Comfirmed
所以,在 設置雙擊事件時,最好使用onSingleComfirmed(),進行雙擊時不會回調單擊方法
這兩個方法都可以響應雙擊事件,為了驗證他們的區別,我們同樣在一個響應器中覆寫這兩個方法,並且進行雙擊事件(我們這里單擊事件使用onSingleComfirmed)
我們使用Log.e()把方法響應的順序弄出來,發現他們規律很神奇
然後我在onDoubleTapEvent()中吧MotionEvent e 輸出,
然後方法響應的順序變成:
我們對以上信息進行分析:
DoubleTap在DoubleTapEvent前面執行,但是根據DoubleTapEvent的第一個MotionEvent是Down,所以判斷 雙擊的響應條件是在第一次單擊後的300ms內按下手指
我們又嘗試在雙擊後手指不離開屏幕,可見隨時間的延長,Move也變得更多,
由此判斷, onDoubleTapEvent是實時回調的,並且是用來檢測MotionEvent
這次我們在響應器中覆寫所有方法,進行長按操作
發現方法響應的順序為:
也就是說,在長按睜族肢時,onShowPress在onLongPress前面執行
同樣,我們覆寫所有方法,進行滑動操作,
發現方法的響應順序為
由此可見,在滑動/拖動過程中,不斷調用onScroll,最後調用onFiling
當然,Android自帶的手勢不能完全滿足我們的需求,於是Android提供了自建手勢的方法,這些內容將在下一篇博客中陳述
5. 安卓 如何區別單擊和雙擊分別執行
你可以用onTouchEvent方法的按下事件,判咐帆斷2次間隔時間,每次點擊記一下時間,如果第二次明叢點擊時間和第一次的時間特別短的話就是雙擊,就做雙擊的事,如果時間長的話就做單衡槐雹擊
6. android平板電腦中怎麼樣判斷是單擊還是雙擊
android平板電腦中是沒有雙擊選項的,原因如下:
android平板電腦和電腦系統不同而且操作也是不同的,電腦打開軟體是需要雙擊軟體或者右鍵後單擊選擇穗轎打開。
android平板電腦打開軟體只需要點擊一下就可以打開了,點擊軟體2次和點擊1次效果是一敗悶樣的,都是會察族彎打開軟體的。