Date post: | 08-Jul-2015 |
Category: |
Technology |
Upload: | yandex |
View: | 2,177 times |
Download: | 1 times |
1
2
3
4
ViewGroups
! FrameLayout
! LinearLayout
! RelativeLayout
5
6
View positioning
7
View positioning
! onMeasure
! onLayout
8
onMeasure
9
MeasureSpec
! Mode
– EXACTLY – AT_MOST – UNSPECIFIED ! Size
10
MeasureSpec modes
! EXACTLY
– layout_width=“200dip” – layout_height=“match_parent” – layout_weight=“1”
11
MeasureSpec modes
! AT_MOST
– layout_width=“wrap_content”
12
MeasureSpec modes
! UNSPECIFIED
– ScrollView, ListView
13
onMeasure
14
onLayout
! getMeasuredWidth()
! getMeasuredHeight()
! сhild.layout(left, top, right, bottom);
15
– How?
16
– How?
– LayoutParams!
17
attrs.xml
18
main.xml
19
LayoutParams
! ViewGroup.LayoutParams
! LinearLayout.LayoutParams
! RelativeLayout.LayoutParams
! …
20
LayoutParams
! checkLayoutParams(ViewGroup.LayoutParams p)
! generateDefaultLayoutParams()
! generateLayoutParams(ViewGroup.LayoutParams p);
! generateLayoutParams(AttributeSet attrs)
21
PavementLayout.LayoutParams
22
onMeasure
23
24
View interactions
25
Yandex.Maps search card
Motion directions ! Up ! Left & right ! Down
26
Yandex.Maps search card heirarchy
CardSlidingDrawer
ViewPager
Card
27
Touch events
1. dispatchTouchEvent
2. onInterceptTouchEvent
3. children.dispatchTouchEvent
4. onTouchEvent
28
Touch events sample #1
CardSlidingDrawer
TextView
29
Touch events sample #1
1. dispatchTouchEvent CardSlidingDrawer
TextView
30
Touch events sample #1
1. dispatchTouchEvent
2. onInterceptTouchEvent
CardSlidingDrawer
TextView
31
Touch events sample #1
1. dispatchTouchEvent
2. onInterceptTouchEvent
3. dispatchTouchEvent
CardSlidingDrawer
TextView
32
Touch events sample #1
1. dispatchTouchEvent
2. onInterceptTouchEvent
3. dispatchTouchEvent
4. onTouchEvent
CardSlidingDrawer
TextView
33
Touch events sample #1
1. dispatchTouchEvent
2. onInterceptTouchEvent
3. dispatchTouchEvent
4. onTouchEvent
CardSlidingDrawer
TextView
34
Touch events sample #1
1. dispatchTouchEvent
2. onInterceptTouchEvent
3. dispatchTouchEvent
4. onTouchEvent
CardSlidingDrawer
TextView
35
Touch events sample #2
1. dispatchTouchEvent CardSlidingDrawer
Clickable TextView
36
Touch events sample #2
1. dispatchTouchEvent
2. onInterceptTouchEvent
CardSlidingDrawer
Clickable TextView
37
Touch events sample #2
1. dispatchTouchEvent
2. onInterceptTouchEvent
3. dispatchTouchEvent
CardSlidingDrawer
Clickable TextView
38
Touch events sample #2
1. dispatchTouchEvent
2. onInterceptTouchEvent
3. dispatchTouchEvent
CardSlidingDrawer
Clickable TextView
39
Touch events sample #2
1. dispatchTouchEvent
2. onInterceptTouchEvent
3. dispatchTouchEvent
CardSlidingDrawer
Clickable TextView
40
Touch events sample #2
1. dispatchTouchEvent
2. onInterceptTouchEvent
3. dispatchTouchEvent
CardSlidingDrawer
Clickable TextView
41
Touch events sample #2
1. dispatchTouchEvent
2. onInterceptTouchEvent
3. dispatchTouchEvent
CardSlidingDrawer
Clickable TextView
42
Touch events sample #2
1. dispatchTouchEvent
2. onInterceptTouchEvent
3. dispatchTouchEvent
CardSlidingDrawer
Clickable TextView
43
Touch events sample #2
1. dispatchTouchEvent
2. onInterceptTouchEvent
3. dispatchTouchEvent
4. onTouchEvent
CardSlidingDrawer
Clickable TextView
44
Touch events sample #2
1. dispatchTouchEvent
2. onInterceptTouchEvent
3. dispatchTouchEvent
4. onTouchEvent
CardSlidingDrawer
Clickable TextView
45
Touch events sample #2
1. dispatchTouchEvent
2. onInterceptTouchEvent
3. dispatchTouchEvent
4. onTouchEvent
CardSlidingDrawer
Clickable TextView
46
TouchSlop
! deltaY = Math.abs( event.getY() – startY );
! ViewConfiguration.getScaledTouchSlop();
! view.scrollTo(x,y);
47
VelocityTracker
! VelocityTracker.obtain();
! VelocityTracker.addMovement( event );
! VelocityTracker.computeCurrentVelocity(units);
48
Scroller
! void fling(…);
! void View.computeScroll();
! boolean computeScrollOffset();
! int getCurrY();
49
Scroller
50
Wrap-up
! onMeasure & onLayout
! onIntercept & onTouchEvent
! GestureDetector & DragHelper
51
Samples
https://github.com/ArikonUA/yac13
52
Спасибо за внимание