Android觸控螢幕手勢識別

2021-08-31 17:00:59 字數 2587 閱讀 3439

**:

public class gesturetest extends activity implements ontouchlistener

@override

public boolean ontouch(view v, motionevent event)

當我們捕捉到touch操作的時候,如何識別出使用者的gesture?這裡我們需要gesturedetector.ongesturelistener介面的幫助,於是我們的gesturetest類就變成了這個樣子。

public class gesturetest extends activity implements ontouchlistener,

ongesturelistener

隨後,在ontouch()方法中,我們呼叫gesturedetector的ontouchevent()方法,將捕捉到的motionevent交給 gesturedetector 來分析是否有合適的callback函式來處理使用者的手勢。

@override

public boolean ontouch(view v, motionevent event)

接下來,我們實現了以下6個抽象方法,其中最有用的當然是onfling()、onscroll()和onlongpress()了。我已經把每乙個方法代表的手勢的意思寫在了注釋裡,大家看一下就明白了。

// 使用者輕觸觸控螢幕,由1個motionevent action_down觸發

@override

public boolean ondown(motionevent e)

// 使用者輕觸觸控螢幕,尚未鬆開或拖動,由乙個1個motionevent action_down觸發

// 注意和ondown()的區別,強調的是沒有鬆開或者拖動的狀態

@override

public void onshowpress(motionevent e)

// 使用者(輕觸觸控螢幕後)鬆開,由乙個1個motionevent action_up觸發

@override

public boolean onsingletapup(motionevent e)

// 使用者按下觸控螢幕、快速移動後鬆開,由1個motionevent action_down, 多個action_move, 1個action_up觸發

@override

public boolean onfling(motionevent e1, motionevent e2, float velocityx,

float velocityy)

// 使用者長按觸控螢幕,由多個motionevent action_down觸發

@override

public void onlongpress(motionevent e)

// 使用者按下觸控螢幕,並拖動,由1個motionevent action_down, 多個action_move觸發

@override

public boolean onscroll(motionevent e1, motionevent e2, float distancex,

float distancey)

我們來試著做乙個onfling()事件的處理吧,onfling()方法中每乙個引數的意義我寫在注釋中了,需要注意的是fling事件的處理 代 碼中,除了第乙個觸發fling的action_down和最後乙個action_move中包含的座標等資訊外,我們還可以根據使用者在x軸或者y軸上的 移動速度作為條件。比如下面的**中我們就在使用者移動超過100個畫素,且x軸上每秒的移動速度大於200畫素時才進行處理。

@override

public boolean onfling(motionevent e1, motionevent e2, float velocityx,

float velocityy) else if (e2.getx() - e1.getx() > fling_min_distance

&& math.abs(velocityx) > fling_min_velocity)

return false;

}

[b][color=darkred]注意:[/color][/b]

我們需要在oncreate中tv.setontouchlistener(this);之後新增如下一句**。

tv.setlongclickable(true);

只有這樣,view才能夠處理不同於tap(輕觸)的hold(即action_move,或者多個action_down),我們同樣可以通過layout定義中的android:longclickable來做到這一點。

android觸控螢幕事件手勢操作滑動處理

在android系統中,手勢的識別是通過 ongesturelistener介面來實現的,利用,摸屏的fling scroll等方法可以進行滑動或翻頁效果的實現 觸控螢幕相關的事件,是通過ontouchlistener來實現的。我們可以通過motionevent的getaction 方法來獲取tou...

觸控螢幕新技術 Hotknot 息屏手勢

hotknot是聯發科設計平台,並由 匯頂科技 率先推出的 無線傳輸 技術。匯頂科技 是全球領先的觸控晶元解決方案 商,hotknot聯盟成員之一。hotknot利用現有的 觸控螢幕來進行通訊,具有較先進的觸控互動技術,通過裝置的相互接觸,來傳送資料。息屏手勢可以通過簡單的滑動,使用者即可快速進入一...

觸控螢幕開發 觸控螢幕甩屏互動系統

這是南京酷牛科技最新開發的一款上下屏聯動觸控螢幕軟體。比較獨特的是,玩家可以通過控制乙個下屏,與上屏五個顯示屏進行展示的互動。軟體組成 軟體特點 1 一台大的顯示器 支援led屏,投影儀,拼接屏 可以和多個觸控螢幕組成區域網實現觸屏資料飛至大屏,不限制觸控螢幕的個數。如果只有1個觸控螢幕也可以用擴充...