通過多點觸控實現的放大、縮小、旋轉、位移效果。
private float oldx1 = 0;
private float oldx2 = 0;
private float oldy1 = 0;
private float oldy2 = 0;
private float oldrotation= 0;
private boolean isdrag = true;
private float downx = 0;
private float downy = 0;
@override
public boolean ontouchevent(motionevent event) else if (nowdifferentx - olddifferentx < 0 && nowdifferenty - olddifferenty < 0)
/*** rotation當前旋轉角度
*///判斷旋轉
float nowrotation = rotation(event);
float rotation = nowrotation - oldrotation;
matrix.postrotate(rotation, convertcenterx(), convertcentery());// 旋轉
oldx1 = event.getx(0);
oldx2 = event.getx(1);
oldrotation += rotation;
}else if (isdrag)
invalidate();
break;
case motionevent.action_up:
if (event.getpointercount() == 1)
}break;
}return true;
}
優化版:旋轉和放大操作同時只能響應乙個,旋轉放大原點基於手指位置計算
@override
public boolean ontouchevent(motionevent event)
}if (isscale && !isrotate) else if (!isscale && isrotate) else if (isrotate)
oldx1 = event.getx(0);
oldx2 = event.getx(1);
oldy1 = event.gety(0);
oldy2 = event.gety(1);
} else if (isdrag)
invalidate();
break;
case motionevent.action_up:
if (event.getpointercount() == 1)
isdrag = true;
}break;
}return true;
}/**
* @param ischange 是否需要改變檢視
* @return 是否進行了放大縮小操作
*/private boolean scale(motionevent event, boolean ischange)
return true;
} else if (changex < 0 && changey < 0)
return true;
}return false;
}private boolean rotate(motionevent event, boolean ischange)
return true;
} else return false;
}// 取旋轉角度
private float rotation(motionevent event)
放大計算方法:
當判斷多指觸控時,記錄下當前兩指的座標點,在move事件觸發後,計算當前兩指之間的距離和兩指位置改變之前的距離,並進行比較,若距離變大則為放大,若距離縮小則為縮小。
旋轉計算方法:
// 取旋轉角度
private float rotation(motionevent event)
通過以上方法獲得當前兩指形成的角度值,在判斷多指觸控時記錄下初始角度,當觸發move事件後重新計算角度值,其差值即為旋轉了的角度。 WPF多點觸控放大縮小旋轉
原文 wpf多點觸控放大縮小旋轉 如果要方法縮小乙個canvas,或 只要在控制項中新增 就可以拉伸改控制項。如果在canvas中新增該行為則可拉伸canvas中所有控制項。translatefriction是移動摩擦力,rotationalfriction是旋轉摩擦力。eipic.supporte...
android 多點觸控
下面是一些常用的函式解釋 copy過來滴.event.getaction 獲取觸控動作比如action down event.getpointercount 獲取觸控點的數量,比如2則可能是兩個手指同時按壓螢幕 event.getpointerid nid 對於每個觸控的點的細節,我們可以通過乙個迴...
關於android多點觸控
最近專案需要乙個多點觸控縮放的功能。然後上網查了下資料 總結一下 首先android sdk版本很重要,比如你在androidmanifest.xml中指定android minsdkversion 4 並且建工程的時候選的是android 2.2就表示你的應用相容android1.6 androi...