view初識

weixin_33782386發表於2017-12-12
648225-17ed3e6f44c7d851.png
image.png

width = right - left
height = bottom - top

原始碼中會有這些方法獲得這些引數
left = getLeft()
right = getRight()
top = getTop()
bottom = getBottom()

android 3.0之後新增了x,y ,translateX和translateY,他們的關係是

x = left+ translateX

y = top + translateY

view在平移的時候發生變化的是x,y ,translateX和translateY ,left和top並沒有發生變化

getX和getY getRowX和getRowY的區別在於:

getX和getY 是相對於當前這個view的左上角(x,y)的座標

getRowX和getRowY是相對於當前螢幕左上角(0,0)的座標

獲取最小滑動距離常量:

viewconfigration.get(context).getScaledTouchSlop()

速度追蹤:velocityTracker

VelocityTracker velocityTracker = VelocityTracker.obtain();
                velocityTracker.addMovement(event);
                //100毫秒內的速度
                velocityTracker.computeCurrentVelocity(100);
                float x = velocityTracker.getXVelocity();//x方向的速度
                float y = velocityTracker.getYVelocity();//Y方向的速度

//不再使用的時候記得,回收釋放
                velocityTracker.clear();
                velocityTracker.recycle();

手勢識別追蹤:GestureDetector,檢測單擊,滑動,長按,雙擊等行為

GestureDetector gestureDetector = new GestureDetector(this);
                gestureDetector.setIsLongpressEnabled(false);//解決長按不能拖動的情況
                //接管目標view中的event,實現onGestureListener實現onDoubleTapListener
                gestureDetector.onTouchEvent(event);
                gestureDetector.setOnDoubleTapListener(this);

實現的常用方法包括:
onSingleTapUp 單擊   onDoubleTap雙擊   onScroll滑動  onLongPress長按   onFling快速滑動

彈性滑動 scroller 需要和view的computerscroll配合使用

未完待續。。。

最後歡迎加入Kotlin QQ群,一起討論學習:

648225-e1c09d74bd9779bf.png
Paste_Image.png

歡迎關注 微信公號

648225-17ca57ad8de8d538.png
android頻道