Android開發藝術筆記 View的事件體系

2021-10-04 07:13:19 字數 2934 閱讀 3625

根據上圖,

可以得出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。

velocitytracker.clear();

velocitytracker.recycle();

gesturedetector

概念:手勢檢測,用於輔助檢測使用者的單擊、滑動、長按、雙擊等行為。

使用過程:

首先,

需要建立乙個gesturedetector物件

並實現ongesturelistener介面

根據需要還可以實現ondoubletaplistener從而能夠監聽雙擊行為:!!!

gesturedetector  mgesturedetector = new gesturedetector(this);

//解決長按螢幕後無法拖動的現象

mgesturedetector.setislongpressenabled(false);

接著,

接管目標view的ontouchevent方法,

在待監聽view的ontouchevent方法中新增如下實現:

boolean consume = mgesturedetector.ontouchevent(event);

return consume;

做完以上兩步後,

即可有選擇地實現ongesturelistenerondoubletaplistener中的方法了,

這兩個介面中的方法介紹如下表:

概念:彈性滑動物件,用於實現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...