關於android多點觸控

2021-09-07 01:38:00 字數 2014 閱讀 9761

最近專案需要乙個多點觸控縮放的功能。然後上網查了下資料 總結一下:

首先android sdk版本很重要,比如你在androidmanifest.xml中指定android:minsdkversion="4"  並且建工程的時候選的是android 2.2就表示你的應用相容android1.6~android2.2

之間的版本。但是多點觸控的api在1.6~~2,1~~,2,2~~三個版本中都是不一樣的。比如android2.2中ontouchevent(motionevent event) 這裡可以用event.getactionmasked()

表示用於多點觸控檢測點。但在1.6和2.1中並沒有event.getactionmasked()這個方法,查原始碼後發現其實他就是吧event.getaction()& motionevent.action_mask封裝了一下。

對於這些小細節我們要特別注意,因為這關乎版本相容問題,也許你在2.2的裝置上執行沒什麼問題,但1.6或者2.1就會出個什麼問題之類的。所以對於1.6以後新增加的功能,要特別注意api

的使用。1.5就暫不考慮了。

接下來看**:

1 package laahaa.framework;

2 3

4 5 import android.content.context;

6 import android.graphics.pointf;

7 import android.util.attributeset;

8 import android.util.floatmath;

9 import android.view.motionevent;

10 import android.view.su***ceholder;

11 12 /**

13 *

14 * 遊戲畫布

15 */

16 public class gameview2x extends gameview implements su***ceholder.callback

26 27 public boolean ontouchevent(motionevent event)

57 /**

58 * 表示新的距離比兩個手指剛觸碰的距離小

59 */

60 if (newdist + 10 < olddist)

65 }

66 super.actionmove(event);

67 68 break;

69 }

70 71 return true;

72 }

73 74 private float spacing(motionevent event)

79 80 private void midpoint(pointf point, motionevent event)

85 }

這裡要注意下gameview2x表示2.0以上的版本 他繼承於我自己寫的低版本的gameview。因為有很多重複**繼承是必須的。最後要注意下:獲取當前應用的sdk版本**為:

int sdkversion=integer.parseint(build.version.sdk);

你需要在最開始初始化的時候執行它,寫入gameconfig中比較好,後面單例呼叫就好了。或者不喜歡單例的直接static final 也行。然後再選擇gameview的時候 加個if判斷,

if(sdkversion

{}else

{}好了,這裡的多點觸控放大比較簡單,其實可以根據前距離/後距離的比值來動態設定縮放。這只是個簡單的例子。

ps:最近發現 ontouchevent事件中的引數motionevent,它有乙個getsize()方法。在乙個點的時候,該方法永遠返回0,而在兩個觸電的時候,該方法則根據兩點相對位置變化而返回不同的值 

android 多點觸控

下面是一些常用的函式解釋 copy過來滴.event.getaction 獲取觸控動作比如action down event.getpointercount 獲取觸控點的數量,比如2則可能是兩個手指同時按壓螢幕 event.getpointerid nid 對於每個觸控的點的細節,我們可以通過乙個迴...

關於iPhone多點觸控

雖然這個問題很簡單,但是對於我這接觸兩天的菜鳥來說也弄了很久,網上又找不到相關的解決方法,避免其他人和我一樣,還是記錄一下 一般網上找到的教程是這麼教 void touchesbegin nsset touches withevent uievent event 但是這裡面首先nsarray這個累不...

android如何怎麼禁止多點觸控

不積跬步無以至千里 在乙個頁面裡做了個對講的操作,對講需要長按操作,但是發現碰觸介面其他位置,會中斷,通過監聽這個view的ontouchevent,其中的motionevent中的action,發現當觸碰別的地方的時候,會把這個按鈕的down事件中斷。因此這裡是多點觸碰的問題。多點觸控的方法如下 ...