根據上圖,
可以得出view的寬高
和座標
的關係
:
關於如何width = right - left
height = bottom - top
得到view的這四個引數
,
在view的原始碼
中它們對應於mleft、mright、mtop和mbottom
這四個成員變數,獲取方式:
概念:
速度追蹤,用於追蹤手指
在滑動過程中
的速度
,
包括水平和豎直方向
的速度。
使用過程:
首先,在view的ontouchevent方法
中追蹤當前單擊事件
的速度
:
velocitytracker velocitytracker = velocitytracker.obtain();//例項化乙個velocitytracker 物件
velocitytracker.addmovement(event);//新增追蹤事件
velocitytracker .computecurrentvelocity(1000);//獲取速度前先計算速度,這裡計算的是在1000ms內
float xvelocity = velocitytracker .getxvelocity();//得到的是1000ms內手指在水平方向從左向右滑過的畫素數,即水平速度
float yvelocity = velocitytracker .getyvelocity();//得到的是1000ms內手指在垂直方向從上向下滑過的畫素數,即垂直速度
針對上面的例子,如果我們通過
velocitytracker.computecurrentvelocity(100)
來獲取速度,那麼得到的速度就是手指在100ms內所滑過的畫素數,
假設返回的是10,
則水平速度就成了10畫素/每100ms(這裡假設滑動過程是勻速的),
即水平速度為10。
gesturedetectorvelocitytracker.clear();
velocitytracker.recycle();
概念:手勢檢測,用於輔助檢測使用者的單擊、滑動、長按、雙擊等行為。
使用過程:
首先,
需要建立乙個gesturedetector物件
,
並實現ongesturelistener介面
,
根據需要還可以實現ondoubletaplistener
從而能夠監聽雙擊行為
:!!!
接著,gesturedetector mgesturedetector = new gesturedetector(this);
//解決長按螢幕後無法拖動的現象
mgesturedetector.setislongpressenabled(false);
接管目標view的ontouchevent
方法,
在待監聽view的ontouchevent方法
中新增如下實現:
做完以上兩步後,boolean consume = mgesturedetector.ontouchevent(event);
return consume;
即可有選擇地實現ongesturelistener
和ondoubletaplistener
中的方法了,
這兩個介面中的方法介紹如下表:
概念:彈性滑動物件,用於實現view的彈性滑動。
使用scroller,其典型**是固定的:
參考:scroller scroller = new scroller(mcontext);
// 緩慢滾動到指定位置
private void smoothscrollto(int destx,int desty)
@override
public void computescroll()
}
Android 開發藝術探索筆記(14)
android動畫可以分為三種 view動畫,幀動畫和屬性動畫。view動畫 view動畫作用於view,它支援四種動畫效果,分別是平移 縮放 旋轉和透明度。幀動畫也屬於view動畫,但是其表現形式和上面四種變換效果不太一樣。view的四種變換效果對應著animation的四個子類 translat...
Android 開發藝術探索筆記(16)
插值器和估值器 timeinterpolator中文翻譯為時間插值器,它的作用是根據時間流逝的百分比來計算出當前屬性改變的百分比。系統預置了一些插值器 線性插值器,加減速插值器等 typeevaluator的中文翻譯為型別估值演算法,也叫估值器,它的作用是根據當前屬性改變的百分比來計算改變後的屬性值...
Android 開發藝術探索 IPC機制
2.1 2.2.1 android 開啟程序方式只有android proces 特殊方式通過jni native fork乙個程序 android proces remote 私有程序,其他應用和元件不能和他跑乙個程序 android proces com.test 全域性程序,具有相同share...