https://developer.android.com/reference/android/view/View
๋ทฐ ์ฌ์ฉํ๊ธฐ
๋ชจ๋ ๋ทฐ๋ค์ ํ๋์ ํธ๋ฆฌ ์์ ๋ฐฐ์ด๋๋ค. ์ฝ๋๋ก๋ , xml ๋ ์ด์์ ํ์ผ์ด๋ ๋ทฐ๋ค์ด ํธ๋ฆฌ์ ์ถ๊ฐ๋๋ค.
๋ทฐ๋ค์ ํธ๋ฆฌ๋ฅผ ์์ฑํ ํ์๋ ๋ค์๊ณผ ๊ฐ์ ๋ช ๊ฐ์ง ์ผ๋ฐ์ ์ธ ์์ ์ ์ํํ ์ ์๋ค.
- properteis ์ค์ : ์๋ฅผ ๋ค๋ฉด, TextView์ text๋ฅผ ์ค์ ํ๋ ๊ฒ. ๋ทฐ์ ์๋ธํด๋์ค๋ง๋ค properties์ properties๋ฅผ ์ธํ ํ๋ ๋ฉ์๋ค์ด ๋ค์ํ๊ฒ ์กด์ฌํ๋ค. xml ๋ ์ด์์ ํ์ผ์์ ๋น๋ ์์ ์ด ์๋ ค์ง ์์ฑ๋ค์ด ์ค์ ๋ ์ ์๋ค.
- focus ์ค์ : ์ฌ์ฉ์ ์ธํ์ ๋ฐ๋ฅธ ๋ฐ์์ผ๋ก ํ๋ ์์ํฌ๊ฐ ํฌ์ปค์ค ์ด๋์ ์ฒ๋ฆฌํจ. requestFocus()๋ฅผ ํธ์ถํด ์ํ๋ ํน์ ๋ทฐ์ ํฌ์ปค์ค ์ค์ ๊ฐ๋ฅ
- listeners ์ค์ : ๋ทฐ์ ๋ฌด์ธ๊ฐ ์ผ์ด ๋ฐ์ํ ๊ฒฝ์ฐ์ ์๋ฆผ ๋ฐ๊ธฐ ์ํ ๋ฆฌ์ค๋ ์ค์ ์ด ๊ฐ๋ฅํจ.
- visiblity ์ค์ : ๋ทฐ๋ฅผ ๋ณด์ผ์ง ์จ๊ธธ์ง setVisibility()๋ก ์ค์ ํจ.
๋ทฐ๋ฅผ measuring, layout, drawingํ๋ ๊ฒ์ Android ํ๋ ์์ํฌ๊ฐ ๋ด๋นํ๊ณ ์์ด์ ViewGroup์ ๊ตฌํํ์ง ์๋๋ค๋ฉด ์ง์ ํธ์ถํด์๋ ์๋๋ค.
custom view ๊ตฌํํ๊ธฐ
custom view๋ฅผ ๊ตฌํํ๋ ๊ฒ์ ํ๋ ์์ํฌ๊ฐ ๋ชจ๋ ๋ทฐ์์ ํธ์ถํ๋ ๋ช๋ช์ ํ์ค ๋ฉ์๋๋ค์ ์ค๋ฒ๋ผ์ด๋ํ๋ ๊ฒ์์ ์์ํ ์ ์๋ค. ๋ชจ๋ ๋ฉ์๋๋ค์ ์ค๋ฒ๋ผ์ด๋ํ ํ์๋ ์๋ค. onDraw(android.graphics,Canvas)๋ฅผ ์ค๋ฒ๋ผ์ด๋ํ๋ ๊ฒ๋ง์ผ๋ก๋ custom view๋ฅผ ๋ง๋ค ์ ์๋ค.
Creation. ์์ฑ | |
Constructure. ์์ฑ์ | ์ฝ๋๋ก ๋ทฐ๋ฅผ ์์ฑํ ๋ ํธ์ถํ๋ ์์ฑ์ ํ์์ด ์๊ณ , ๋ ์ด์์ ํ์ผ์์ ๋ทฐ๋ฅผ ์ธํ๋ ์ดํ ๋ ํธ์ถํ๋ ์์ฑ์ ํ์์ด ์๋ค.๋๋ฒ ์งธ ํ์์ ๋ ์ด์์ ํ์ผ์์ ์ ์ํ ์์ฑ๋ค์ ๋ถ์ํ๊ณ ์ ์ฉํด์ผ ํ๋ค. |
onFinishedInflate() | XML ๋ก๋ถํฐ ๋ทฐ์ ๋ชจ๋ ์๋ ๋ทฐ๋ค์ด ๋ค ์ธํ๋ ์ดํธ๋ ํ์ ํธ์ถ๋๋ค. |
Layout. | |
onMeasure(int, int) | ๋ทฐ์ ๋ชจ๋ ์๋ ๋ทฐ๋ค์ ํฌ๊ธฐ๋ฅผ ์ ํ๊ธฐ ์ํด ํธ์ถ๋๋ค. |
onLayout(boolean, int, int, int, int) | ๋ทฐ๊ฐ ๋ชจ๋ ์์ ๋ทฐ์ ํฌ๊ธฐ์ ์์น๋ฅผ ํ ๋นํ๊ธฐ ์ํด ํธ์ถ๋๋ค. |
onSizeChanged(int, int, int, int) | ๋ทฐ์ ์ฌ์ด์ฆ๊ฐ ๋ณ๊ฒฝ๋๋ฉด ํธ์ถ๋๋ค. |
Drawing | |
onDraw(android.graphics.Canvas) | ๋ทฐ๊ฐ ์์ ์ ์ฝํ ์ธ ๋ฅผ ๋ง๋ค์ด์ผํ ๋ ํธ์ถ๋๋ค. |
Event Processing | |
onKeyDown(int, android.view.KeyEvent) | ์๋ก์ด ํ๋์จ์ด ํค ์ด๋ฒคํธ ๋ฐ์์ ํธ์ถ๋๋ค. |
onKeyUp(int, android.view.KeyEvent) | ์๋ก์ด ํ๋์จ์ด ์ ํค ์ด๋ฒคํธ ๋ฐ์์ ํธ์ถ๋๋ค. |
onTrackballEvent(android.voew.MotionEvent) | ํธ๋๋ณผ ๋ชจ์ ์ด๋ฒคํธ ๋ฐ์์ ํธ์ถ๋๋ค. |
onTouchEvent(android.view.MotionEvent) | ์คํฌ๋ฆฐ ํฐ์น ๋ชจ์ ์ด๋ฒคํธ ๋ฐ์์ ํธ์ถ๋๋ค. |
Focus | |
onFocusChanged(boolean, int, android.graphics.Rect) | ๋ทฐ๊ฐ ํฌ์ปค์ค๋ฅผ ์ป๊ฑฐ๋ ์์ ๋ ํธ์ถ๋๋ค. |
onWindowFocusChnaged(boolean) | ๋ทฐ๋ฅผ ํฌํจํ๋ ์๋์ฐ๊ฐ ํฌ์ปค์ค๋ฅผ ์ป๊ฑฐ๋ ์์ ๋ ํธ์ถ๋๋ค. |
Attaching | |
onAttachedToWindow() | ๋ทฐ๊ฐ ์๋์ฐ์ attached ๋ ๊ฒฝ์ฐ์ ํธ์ถ๋๋ค. |
onDetachedFromWindow() | ๋ทฐ๊ฐ ์๋์ฐ์ detached ๋ ๊ฒฝ์ฐ์ ํธ์ถ๋๋ค. |
onWindowVisibilityChanged(int) | ๋ทฐ๋ฅผ ํฌํจํ๋ ์๋์ฐ์ visibility๊ฐ ๋ณํ๋์์ ๊ฒฝ์ฐ ํธ์ถ๋๋ค. |
IDs
๋ทฐ๋ค์ ์ ์ ์์ด๋๋ค์ด ํ ๋น๋๋ค. ์ผ๋ฐ์ ์ผ๋ก xml ํ์ผ์์ ํ ๋น๋๊ณ , ๋ทฐ ํธ๋ฆฌ ์์์ ํน์ฑ ๋ทฐ๋ฅผ ์ฐพ๋๋ฐ ์ฌ์ฉ๋๋ค.
ํธ๋ฆฌ ์ ์ฒด์์ ์ด ์์ด๋๊ฐ ๊ณ ์ ํ ํ์๋ ์๋๋ฐ, ์ต์ํ ํ์ฌ ๋ณด๊ณ ์๋ ํธ๋ฆฌ ๋ด์์๋ ๊ณ ์ ํ๋๋ก ํ์ธํ๋ ๊ฒ ์ข๋ค.
Positions
๋ทฐ๋ ์ง์ฌ๊ฐํ์ ์์ญ์ ๊ฐ๋๋ค. ์ผ์ชฝ ์๋จ ์ขํ๋ฅผ ํ ์์ผ๋ก ๊ฐ์ง๋ ์์น ๊ฐ๊ณผ, ๋๋น์ ๋์ด๋ก ํํ๋๋ 2์ฐจ์ ๊ฐ์ ๊ฐ์ง๋ค. ์์น์ ์ฐจ์์ ๋จ์๋ ํฝ์ ์ด๋ค.
getLeft()๋ก ๋ทฐ๋ฅผ ๋ํ๋ด๋ ์ง์ฌ๊ฐํ์ X ์ขํ๋ฅผ ๋ฐํํ๊ณ , getTop()์ผ๋ก ๋ทฐ๋ฅผ ๋ํ๋ด๋ ์ง์ฌ๊ฐํ์ Y์ขํ๋ฅผ ๋ฐํํ๋ค. ์ด ๋ฉ์๋ ๋ ๋ค ๋ถ๋ชจ ๋ทฐ๋ก๋ถํฐ ์๋์ ์ธ ์์น๋ฅผ ๋ฐํํ๋ค. ์๋ฅผ ๋ค์ด getLeft()๋ก 20์ ๋ฐํ๋ฐ๋๋ค๋ฉด, ์ด ๋ทฐ๋ ์ง์ ์ ์ธ ๋ถ๋ชจ๋ทฐ์ ์ผ์ชฝ ๊ฐ์ฅ์๋ฆฌ์์ ์ค๋ฅธ์ชฝ์ผ๋ก 20 ํฝ์ ๋จ์ด์ง ๊ณณ์ ์์นํ ๊ฒ์ด๋ค.
์ถ๊ฐ๋ก, ๋ถํ์ํ ๊ณ์ฐ์ ๋ง๊ธฐ ์ํด ์ฌ๋ฌ ํธ๋ฆฌํ ๋ฉ์๋๋ค์ ์ ๊ณตํ๋๋ฐ, getRight(), getBottom()๋ฑ์ด ์๋ค. ์ด ๋ฉ์๋๋ค์ ๋ทฐ๊ฐ ๋ํ๋๋ ์ ์ฌ๊ฐํ์ ์ค๋ฅธ์ชฝ์ ์ขํ๋ฅผ ๋ฐํํ๊ณ , ์๋ ๊ฐ์ฅ์๋ฆฌ์ ์ขํ๋ฅผ ๋ฐํํ๋ค. ์๋ฅผ ๋ค์ด, geRight(),๋ getLeft()+getWidth() ๊ฐ๊ณผ ๋น์ทํ๋ค.
Size, padding ๊ทธ๋ฆฌ๊ณ margins
๋ทฐ์ ์ฌ์ด์ฆ๋ width์ height๋ก ํํ๋๋ค. ๋ทฐ๋ ์ค์ ๋ก ๋ ์์ width์ height ๊ฐ๋ค์ ๊ฐ์ง๋ค.
์ฒซ ๋ฒ์งธ ์์ measured width์ measured height ์ด๋ค. ์ด ์น์๋ ๋ทฐ์ ๋ถ๋ชจ ์์์ ์ํ๋ ํฌ๊ธฐ๋ฅผ ์ ์ํ๋ค.(์์ธํ ๊ฒ์ Layout์ ์ฐธ๊ณ ) ์ด measured ์์น๋ค์ getMeasuredWidth()์ getMeasuredHeight()๋ฅผ ํธ์ถํด์ ์ป์ ์ ์๋ค.
๋ ๋ฒ์งธ ์์ width์ height๋ก ๊ฐ๋จํ๊ฒ ์๋ ค์ ธ ์๊ฑฐ๋, ๋๋๋ก drawing width, drawing height๋ก ์๋ ค์ ธ ์๋ค. ์ด ์์น๋ค์ drawing time์ after layout ํ์ ์คํฌ๋ฆฐ์์ ๋ทฐ์ ์ค์ ์ฌ์ด์ฆ๋ฅผ ์ ์ํ๋ค. ์ด ๊ฐ๋ค์ ๊ทธ๋ด ํ์๋ ์์ผ๋ measured width์ measured height์ ๋ค๋ฅผ ์ ์๋ค. width์ height๋ getWidth(), getHeight()๋ก ์ป์ ์ ์๋ค.
์ด ์์น๋ค์ ์ธก์ ํ๊ธฐ ์ํด์ ๋ทฐ๋ ๋ทฐ์ padding์ ๊ณ ๋ คํ๋ค. padding์ ๋ทฐ์ ์ผ์ชฝ, ์๋จ, ์ค๋ฅธ์ชฝ, ํ๋จ ๋ถ๋ถ์ด ํ์ ๋ก ํํ๋๋ค. padding์ผ๋ก ํน์ ํฝ์ ๋งํผ ๋ทฐ์ ์ฝํ ์ธ ๋ฅผ ๋ณด์ํ ์ ์๋ค. ์๋ฅผ ๋ค์ด, ์ผ์ชฝ 2 padding์ ๋ทฐ์ ์ฝํ ์ธ ๋ฅผ ์ผ์ชฝ ๊ฐ์ฅ์๋ฆฌ์์ ์ค๋ฅธ์ชฝ์ผ๋ก 2 ํฝ์ ๋งํผ ๋ฐ์ด๋ธ๋ค. padding์ setPadding(int,int,int,int) ๋๋ setPaddingRelative(int,int,int,int) ๋ฉ์๋๋ฅผ ํธ์ถํด ์ค์ ํ ์ ์๊ณ , getPaddingLeft(), getPaddingTop(), getPaddingRight(), getPaddingBottom(), getPaddingStart(), getPaddingEnd()๋ฅผ ํธ์ถํด ์ง์ํ ์ ์๋ค.
๋ทฐ๊ฐ padding์ ์ ์ํ ์ ์์์๋ ๋ถ๊ตฌํ๊ณ , margin์ ๊ดํ ์ง์์ ์ ๊ณตํ ์ ์๋ค. ๊ทธ๋ฌ๋ ๋ทฐ ๊ทธ๋ฃน์์๋ ๊ทธ๋ฐ ์ง์์ด ๊ฐ๋ฅํ๋ค. ๋ ์์ธํ ์ ๋ณด๋ ViewGroup๊ณผ ViewGroup.MarginLayoutParmas๋ฅผ ์ฐธ๊ณ ํ๋ผ.
Layout
Layout์ ๋ ๋จ๊ณ ๊ณผ์ ์ด๋ค. ์ธก์ ๋จ๊ณ์ ๋ ์ด์์ ๋จ๊ณ์ด๋ค. ์ธก์ ๋จ๊ณ๋ measure(int, int)๋ก ๊ตฌํ๋๊ณ , ๋ทฐ ํธ๋ฆฌ์์ ํํฅ์ ๋ฐฉํฅ์ผ๋ก ์งํ๋๋ค. ๊ฐ ๋ทฐ๋ ํฌ๊ธฐ์ ๋ํ ๋ช ์ธ ์ ๋ณด๋ฅผ ์ฌ๊ท ๊ณผ์ ๋์ ํธ๋ฆฌ์ ๋ฐ์ด ๋ฃ๋๋ค. ์ธก์ ๋จ๊ณ ํ์๋ ๋ชจ๋ ๋ทฐ์ ์ธก์ ๊ฐ์ด ์ ์ฅ๋๋ค. ๋ ๋ฒ์งธ ๋จ๊ณ๋ layout(int, int, int, int)์์ ๋ฐ์ํ๊ณ , ๋ํ ํํฅ์์ด๋ค. ์ด ๊ณผ์ ๋์ ๊ฐ ๋ถ๋ชจ๋ ์ธก์ ๋จ๊ณ์์ ๊ณ์ฐ๋ ํฌ๊ธฐ๋ฅผ ์ด์ฉํด ๋ชจ๋ ์๋ ๋ค์ ๋ฐฐ์น์ํค๋๋ฐ์(positioning) ์ฑ ์์ด ์๋ค.
๋ทฐ์ measure() ๋ฉ์๋๊ฐ ๋ฐํํ ๋์, ๋ทฐ์ getMeasuredWidth()์ getMeasuredHeight()๊ฐ์ ๋ฐ๋์ ์ค์ ๋์ด์ผ ํ๋๋ฐ, ๋ทฐ์ ๋ชจ๋ ์์๋ค๋ ๋ง์ฐฌ๊ฐ์ง๋ค. ๋ทฐ์ ์ธก์ ๋ ๋๋น์ ์ธก์ ๋ ๋์ด ๊ฐ์ ๋ทฐ์ ๋ถ๋ชจ๊ฐ ๋ถ๊ณผํ ์ ์ฝ๋ค์ ์ค์ํด์ผ ํ๋ค. ์ด๋ ๊ฒ ์ธก์ ๋จ๊ณ์ ๋์์ ๋ชจ๋ ๋ถ๋ชจ๊ฐ ๋ชจ๋ ์๋ ์ ์ธก์ ๊ฐ์ ๋ฐ๋๋ค. ๋ถ๋ชจ ๋ทฐ๋ ์๋ ๋ค์๊ฒ์ ํ ๋ฒ ์ด์์ measure()๋ฅผ ํธ์ถํ ์ ์๋ค. ์๋ฅผ ๋ค์ด์, ๋ถ๋ชจ๋ ์๋ ๋ค์ด ์ผ๋งํผ ํฌ๊ธฐ๋ฅผ ์ํ๋์ง ์์๋ณด๊ธฐ ์ํด ํ ๋ฒ์ ๋ถํน์ ํ ํฌ๊ธฐ๋ก ์๋ ๋ฅผ ์ธก์ ํ ์ ์๋ค. ๊ทธ๋ฆฌ๊ณ ๋์ ๋ง์ฝ ๋ชจ๋ ์๋ ๋ค์ ์ ํ๋์ง ์์ ํฌ๊ธฐ์ ํฉ์ด ๋๋ฌด ํฌ๊ฑฐ๋ ๋๋ฌด ์์ผ๋ฉด, ์ค์ ์ซ์๋ก ๊ทธ๋ค์ measure()๋ฅผ ํธ์ถํ๋ค.
์ธก์ ๋จ๊ณ๋ ํฌ๊ธฐ๋ค์ ์ ๋ฌํ๊ธฐ ์ฐํด ๋ ํด๋์ค๋ค์ ์ฌ์ฉํ๋ค. MeasureSpect ํด๋์ค๋ ๋ทฐ์ ์ํด ๋ถ๋ชจ๋ค์ด ์ผ๋งํผ ํน์ ๋๊ณ ๋ฐฐ์น๋๊ธฐ๋ฅผ ์ํ๋์ง ์ ํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ค. ๊ธฐ๋ณธ LayoutParams ํด๋์ค๋ ๋ทฐ์ ๋๋ฏธ์ ๋์ด์ ๋ํด ์ผ๋งํผ ํฐ์ง์ ๋ํด์๋ง ์ค๋ช ํ๋ค. ๊ฐ demenstion์, ์ด ์ค์ ํ๋๋ง ๋ช ์ํ๋ค.
- ์ ํํ ์ซ์
- MATCH_PARENT, ๋ทฐ๊ฐ (ํจ๋ฉ์ ์ ์ธํ๊ณ ) ๋ถ๋ชจ๋งํผ ์ฌ์ด์ฆ๊ฐ ํฌ๊ธฐ๋ฅผ ์ํ๋ค๋ ์๋ฏธ์ด๋ค.
- WRAP_CONTENT, ๋ทฐ๊ฐ (ํจ๋ฉ์ ํฌํจํด) ๋จ์ง ์ฝํ ์ธ ๋ฅผ ๋ฃ๊ธฐ์ ์ถฉ๋ถํ ์ฌ์ด์ฆ์ด๋ฉด ๋๋ค๋ ์๋ฏธ์ด๋ค.
ViewGroup์ ๋ค๋ฅธ ํ์ ํด๋์ค๋ค๊ณผ๋ ๋ค๋ฅธ LayoutParams์ ํ์ ํด๋์ค๋ค์ด ์กด์ฌํ๋ค. ์๋ฅผ ๋ค์ด, AbsoluteLayout์ X์ Y ๊ฐ์ ์ถ๊ฐํ LayoutParams์ ํ์ ํด๋์ค์ด๋ค.
MeasureSpec๋ค์ ๋ถ๋ชจ๋ก๋ถํฐ ์๋ ๋ก ํธ๋ฆฌ์ ์๊ตฌ์ฌํญ๋ค์ ๋ฐ์ด๋ฃ๋๋ฐ ์ฌ์ฉ๋๋ค. MeasureSpec์ ์ธ๊ฐ์ง ๋ชจ๋ ์ค ํ๋๊ฐ ๋ ์ ์๋ค.
- UNSPECIFIED : ๋ถ๋ชจ๊ฐ ์๋ ๋ทฐ์ ํฌ๊ธฐ๋ฅผ ์ ํ ๋ ์ฌ์ฉํ๋ค. ์๋ฅผ ๋ค์ด์, LinearLayout์ ๋์ด๋ UNSPECIFIED๋ก, ๋๋น๋ EXACTLY 240์ผ๋ก ์ค์ ํด ์๋ ๋ทฐ์์ measure()๋ฅผ ํธ์ถํด์ 240 ํฝ์ ๋ก ๋๋น ๊ฐ์ด ์ฃผ์ด์ง๋ฉด ์๋ ๋ทฐ๋ ์ผ๋ง์ ๋์ด๋ฅผ ๊ฐ๋์ง ์์๋ผ ์ ์๋ค.
- EXACTLY : ๋ถ๋ชจ๊ฐ ์๋ ๋ทฐ์ ์ ํํ ์ฌ์ด์ฆ๋ฅผ ์ง์ ํ ๋ ์ฌ์ฉํ๋ค. ์๋ ๋ทฐ๋ ์ด ํฌํค๋ฅผ ๋ฐ๋์ ์ฌ์ฉํด์ผ ํ๊ณ , ์ด ์ฌ์ด์ฆ ์ด๋ด์์ ์๋ ๋ทฐ๋ค์ ๋ชจ๋ ํ์ ์์๋ค์ด ๋ผ์ ๋ง์ถฐ์ ธ์ผํ๋ ๊ฒ์ ๋ณด์ฅํ๋ค.
- AT_MOST : ๋ถ๋ชจ๊ฐ ์๋ ๋ทฐ์ ์ต๋ ํฌ๊ธฐ๋ฅผ ์ ํ ๋ ์ฌ์ฉ๋๋ค. ์๋ ๋ทฐ๋ ์ด ์ฌ์ด์ฆ ์ด๋ด์์ ์๋ ๋ทฐ์ ๋ชจ๋ ํ์ ์์๋ค์ด ๋ผ์ ๋ง์ถฐ์ ธ์ผ ํ๋ ๊ฒ์ ๋ณด์ฅํ๋ค.
๋ ์ด์์์ ์ด๊ธฐํํ๋ ค๋ฉด, requestLayout()์ ํธ์ถํ๋ค. ์ด ๋ฉ์๋๋ ์ผ๋ฐ์ ์ผ๋ก ํ์ ๊ฒฝ๊ณ ์ด๋ด์์ ๋์ด์ ๋ค์ด๋ง์ ์ ์๋ค๊ณ ๋ทฐ๊ฐ ๋ฏฟ์ ๋ ๋ทฐ๊ฐ ์ค์ค๋ก ํธ์ถํ๋ค.
Drawing ๊ทธ๋ฆฌ๊ธฐ
๊ทธ๋ฆฌ๊ธฐ๋ ํธ๋ฆฌ๋ฅผ ๋๋ฉด์ ์ ๋ฐ์ดํธ๋ฅผ ์ํ๋ ์ด๋ค ๋ทฐ์๋ ์ง ๊ทธ๋ฆฌ๊ธฐ ๋ช ๋ น์ด๋ฅผ ๊ธฐ๋กํ๋ฉด ์ฒ๋ฆฌ๋๋ค. ์ดํ์, ์ ์ฒด ํธ๋ฆฌ์ ๊ทธ๋ฆฌ๊ธฐ ๋ช ๋ น๋ค์ ํ๋ฉด์ ์คํ๋๊ณ ์๋กญ๊ฒ ๊ทธ๋ ค์ง ์์ญ๋ค์ ๊ณ ์ ๋๋ค.
์ด ํธ๋ฆฌ๋ ๋๊ฒ ์์๋๋ก ๊ธฐ๋ก๋๊ณ ๊ทธ๋ ค์ง๋๋ฐ, ๋ถ๋ชจ๋ ๋ณธ์ธ์ ์๋ ๋ค๋ณด๋ค ๋จผ์ (๊ณต๊ฐ์์๋ ๋ค ์ชฝ์) ๊ทธ๋ ค์ง๊ณ , ํ์ ๋ค์ ํธ๋ฆฌ์์ ๋ฑ์ฅํ๋ ์์๋๋ก ๊ทธ๋ ค์ง๋ค. ๋ง์ฝ ๋ทฐ์ ๋ฐฑ๊ทธ๋ผ์ด๋ drawable์ ์ค์ ํ๋ค๋ฉด, ๊ทธ ๋ทฐ๋ ๋ณธ์ธ์ onDraw() ๋ฉ์๋๋ฅผ๋ค์ ํธ์ถํ๊ธฐ ์ ์ ๋ฐฑ๊ทธ๋ผ์ด๋ drawable์ ๊ทธ๋ฆด ๊ฒ์ด๋ค. ์๋ ์ ๊ทธ๋ฆฌ๊ธฐ ์์๋ ViewGroup์ ์ฌ์ฉ์ ์ง์ ์๋ ๊ทธ๋ฆฌ๊ธฐ ์์(custom child drawaing order)๋ ๋ทฐ๋ค์์ setZ(float)๋ก Z ๊ฐ์ ์ฌ์ฉ์๊ฐ ์ค์ ํด์ ์ค๋ฒ๋ผ์ด๋ํ ์ ์๋ค.
๋ทฐ๋ฅผ ๊ฐ์ ๋ก ๊ทธ๋ฆฌ๊ฒ ํ๋ ค๋ฉด, invalidate()๋ฅผ ํธ์ถํ๋ค.
์ด๋ฒคํธ ํธ๋๋ง๊ณผ ์ฐ๋ ๋ ์คํ
๋ทฐ๋ ๋ค์๊ณผ ๊ฐ์ ๊ธฐ๋ณธ ์ฌ์ดํด์ ๊ฐ์ง๋ค.
1. ์ด๋ฒคํธ๊ฐ ๋ฐ๋ ค ๋ค์ด์ค๊ณ , ์ ์ ํ ๋ทฐ์ ๋ณด๋ด์ง๋ค. ๋ทฐ๋ ๊ทธ ์ด๋ฒคํธ๋ฅผ ์ฒ๋ฆฌํ๊ณ ์ด๋ค ๋ฆฌ์คํฐ๋ค์๊ฒ๋ ์๋ ค์ค๋ค.
2. ๋ง์ฝ ์ด๋ฒคํธ๋ฅผ ์ฒ๋ฆฌํ๋ ๊ณผ์ ์์ ๋ทฐ์ ๊ฒฝ๊ณ(bounds)๊ฐ ๋ณ๊ฒฝ๋ ํ์๊ฐ ์๋ค๋ฉด, ๋ทฐ๋ requestLayout()์ ํธ์ถํ๋ค.
3. ๋น์ทํ๊ฒ, ์ด๋ฒคํธ ์ฒ๋ฆฌ ๊ณผ์ ์์ ๋ทฐ์ ๋ชจ์ต(appearance)์ด ๋ณ๊ฒฝ๋ ํ์๊ฐ ์๋ค๋ฉด, ๋ทฐ๋ invalidate()๋ฅผ ํธ์ถํ๋ค.
4. requestLayout()์ด๋ invalidate() ๋ ์ค์ ํ๋๊ฐ ํธ์ถ๋๋ค๋ฉด, ํ๋ ์์ํฌ๋ ํธ๋ฆฌ๋ฅผ ์ธก์ ํ๊ณ (measuring), ์ค๊ณํ๊ธฐ(laying out), ๊ทธ๋ฆฌ๊ธฐ(drawing)๋ ๊ฒ์ ์ ์ ํ๊ฒ ์ฒ๋ฆฌํ๋ค.
์ฃผ๋ชฉ : ์ ์ฒด ๋ทฐ ํธ๋ฆฌ๋ ๋จ์ผ ์ฐ๋ ๋๋ก ์คํ๋๋ค. ์ด๋ ๋ทฐ์์๋ ์ง ์ด๋ค ๋ฉ์๋๋ฅผ ํธ์ถํ๋ ์ง ํญ์ UI ์ฐ๋ ๋์ ์์ด์ผ ํ๋ค. ๋ง์ฝ ๋ค๋ฅธ ์ฐ๋ ๋๋ค์์ ์์ ํ๊ณ ๊ทธ ์ฐ๋ ๋์์ ๋ทฐ์ ์ํ๋ฅผ ์ ๋ฐ์ดํธ ํด์ผํ๋ค๋ฉด, Handler๋ฅผ ์จ์ผ ํ๋ค.
ํฌ์ปค์ค ์ฒ๋ฆฌ
ํ๋ ์ ์ํฌ๋ ์ฌ์ฉ์์ ์ธํ์ ๋ฐ์ํ๋ ์ผ๋ฐ์ ์ธ ํฌ์ปค์ค ์์ง์์ ์ฒ๋ฆฌํด์ผ ํ๋ค. ์ด๊ฒ์ ๋ทฐ๋ค์ด ์ ๊ฑฐ๋๊ฑฐ๋ ์ฌ๋ผ์ง ๋, ํน์ ์๋ก์ด ๋ทฐ๊ฐ ์ฌ์ฉ ๊ฐ๋ฅํด์ง ๋ ๊ฐ์ ํฌ์ปค์ค์ ๋ณํ๋ ํฌํจํ๋ค. ๋ทฐ๋ค์ isFocusable() ๋ฉ์๋๋ฅผ ํตํด ํฌ์ปค์ค๋ฅผ ๊ฐ์ง ์ ์๋์ง๋ฅผ ๋ณด์ฌ์ค๋ค. ๋ทฐ๊ฐ ํฌ์ปค์ค๋ฅผ ๊ฐ์ง ์ ์๋์ง ์๋์ง๋ฅผ ๋ณ๊ฒฝํ๊ธฐ ์ํด์, setFocusable(boolean)์ ํธ์ถํ๋ค. ํฐ์น ๋ชจ๋์ผ ๋, ๋ทฐ๋ค์ (์๋์ ๊ธฐ๋ก๋ค์ ๋ณด๋ฉด) ๋ทฐ๋ค์ isFocusableInTouchMode()๋ฅผ ํตํด ์ฌ์ ํ ํฌ์ปค์ค๋ฅผ ๊ฐ์ง๊ณ ์ถ์ดํ๋์ง ๋ณด์ฌ์ฃผ๊ณ , setFocusableInTouchMode(boolean)์ ํตํด ์ด๊ฒ์ ๋ฐ๊ฟ ์ ์๋ค.
ํฌ์ปค์ค ์ด๋์ ์ฃผ์ด์ง ๋ฐฉํฅ์ผ๋ก ๊ฐ์ฅ ๊ฐ๊น์ด ์ด์์ ์ฐพ๋ ์๊ณ ๋ฆฌ์ฆ์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ค. ํ์น ์์ ๊ฒฝ์ฐ์, ์ด ๊ธฐ๋ณธ ์๊ณ ๋ฆฌ์ฆ์ ๊ฐ๋ฐ์๊ฐ ์๋ํ ํ๋์ ๋ง์ง ์์ ์๋ ์๋ค. ์ด๋ฌํ ์ํฉ์์๋, layout file์์ XML ์์ฑ์ ์ด์ฉํด ๋ช ์์ ์ผ๋ก ์ค๋ฒ๋ผ์ด๋ํ ์ ์๋ค.
nextFocusDown
nextFocusLeft
nextFocusRight
nextFocusUp
ํน์ ๋ทฐ๊ฐ ํฌ์ปค์ค๋ฅผ ๊ฐ์ง๊ธฐ ์ํด์๋ requestFocus()๋ฅผ ํธ์ถํ๋ค.
ํฐ์น ๋ชจ๋
์ฌ์ฉ์๊ฐ D-pad์ ๊ฐ์ ๋ฐฉํฅํค๋ฅผ ์ด์ฉํด ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ๋์๋ค๋๋ ์ค์, ๋ฒํผ๊ณผ ๊ฐ์ ์คํ๊ฐ๋ฅํ ์์ดํ ์ ํฌ์ปค์ค๋ฅผ ์ค์ ์ฌ์ฉ์๊ฐ ๋ฌด์์ด ์ ๋ ฅ์ ์ฃผ๋ ๋ณผ ์ ์๊ฒ ํ๋ ๊ฒ์ ํ์์ ์ด๋ค. ๋ง์ฝ ์ฅ์น๊ฐ ํฐ์น ๊ธฐ๋ฅ์ ์ ๊ณตํ๊ณ ์ฌ์ฉ์๊ฐ ๊ธฐ๊ธฐ๋ฅผ ํฐ์นํด์ ์ธํฐํ์ด์ค์ ์ธํฐ๋ ํ ํ๊ธฐ ์์ํ๋ค๋ฉด, ํน์ ๋ทฐ์ ํญ์ ๊ฐ์กฐํ์๋ฅผ ํ๊ณ , ํฌ์ปค์ค๋ฅผ ์ฃผ๋ ๊ฒ์ด ๋์ด์ ํ์์ ์ด์ง ์๋ค. ์ด๊ฒ์ด 'ํฐ์น ๋ชจ๋'๋ฅผ ์ด๋ฆ์ผ๋ก ํ๋ ์ธํฐ๋ ์ ๋ชจ๋์ ๋ฑ์ฅ ์ด์ ์ด๋ค.
ํฐ์น๊ฐ ๊ฐ๋ฅํ ๊ธฐ๊ธฐ๋ค์์ ์ฌ์ฉ์๊ฐ ์ผ๋จ ์คํฌ๋ฆฐ์ ํฐ์นํ๋ฉด, ๊ธฐ๊ธฐ๋ ํฐ์น๋ชจ๋๋ก ์ง์ ํ๋ค. ์ด ๊ด์ ์์ ๋ ๋์๊ฐ, ํ ์คํธ ํธ์ง ์์ ฏ๋ค ๊ฐ์ด isFocusableInTouchMode()๊ฐ true์ธ ๋ทฐ๋ค๋ง์ด ํฌ์ปค์ค๋ฅผ ๊ฐ์ง ์ ์๋ค. ๋ฒํผ ๊ฐ์ด ํ ์น๊ฐ ๊ฐ๋ฅํ ๋ค๋ฅธ ๋ทฐ๋ค์ ํฐ์น๋๋ ํฌ์ปค์ค๋ฅผ ๊ฐ์ง์ง ์๋๋ค. ๊ทธ๊ฒ๋ค์ ์ค์ง ํด๋ฆญ ๋ฆฌ์ค๋๋ง ์คํ์ํจ๋ค.
์ฌ์ฉ์๊ฐ D-pad ๋ฐฉํฅ ๊ฐ์ ๋ฐฉํฅํค๋ฅผ ๋๋ฅด๋ ์ด๋ ๋์๋ ์ง ๋ทฐ ๊ธฐ๊ธฐ๋ ํฐ์น๋ชจ๋๋ฅผ ๋๊ฐ๊ณ , ํฌ์ปค์ค๋ฅผ ๊ฐ์ง ๋ทฐ๋ฅผ ์ฐพ๋๋ค. ๊ทธ๋ ๊ฒ ์ฌ์ฉ์๋ ์คํฌ๋ฆฐ์ ๋ค์ ํฐ์นํ์ง ์๊ณ ์ ์ฌ์ฉ์ ์ธํฐํ์ด์ค์ ์ธํฐ๋ ํ ์ ์ฌ๊ฐํ๋ค.
ํฐ์น ๋ชจ๋ ์ํ๋ Activity๋ค ๊ฐ์ ์ ์ง๋๋ค. ๊ธฐ๊ธฐ๊ฐ ํ์ฌ ํฐ์น ๋ชจ๋ ์ํ์ธ์ง ์๊ธฐ ์ํด isInTouchMode()๋ฅผ ํธ์ถํ๋ค.
์คํฌ๋กค๋ง
ํ๋ ์์ํฌ๋ ๋ทฐ์ ๋ด์ฉ์ ์คํฌ๋กคํ๊ธฐ ์ํ๋ ๋ทฐ์ ๋ํด ๊ธฐ๋ณธ์ ์ธ ์ง์์ ์ ๊ณตํ๋ค. ์คํฌ๋กค๋ฐ๋ฅผ ๊ทธ๋ ค์ฃผ๋ ๋ฉ์ปค๋์ฆ ๋ฟ๋ง์ด ์๋๋ผ X์ Y ์คํฌ๋กค ์คํ์ ์ ์ถ์ ํ๋ ๊ฒ๋ค์ด ์๋ค scrollBy(int, int), scrollTo(int, int), awakenScrollBars()๋ก ๋ ์์ธํ ๊ฒ๋ค์ด ์๋ค.
ํ๊ทธ
ID์๋ ๋ค๋ฅด๊ฒ, ํ๊ทธ๋ ๋ทฐ์ ์๋ณ์ ์ํด์ ์ฌ์ฉ๋์ง๋ ์๋๋ค. ํ๊ทธ๋ ๋ณธ์ง์ ์ผ๋ก ๋ทฐ์ ํ ๋ฌ๋ ์ ์๋ ์ถ๊ฐ์ ์ธ ์ ๋ณด ์กฐ๊ฐ์ด๋ค. ํ๊ทธ๋ ๋ทฐ์ ๊ด๋ จ๋ ์ ๋ณด๋ค์ ๋ถ๋ฆฌ๋ ๊ตฌ์กฐ์ ์ ์ฅํ๋ ๊ฒ๋ณด๋ค ๋ทฐ ์์ฒด์ ์ ์ฅํ๋ ํธ์์ฑ ๋๋ฌธ์ ์์ฃผ ์ฌ์ฉ๋๋ค.
ํ๊ทธ๋ ๋ ์ด์์ XML์์ ๋ฌธ์์ด ๊ฐ์ด๋, android:tag ์์ฑ์ ์จ์ ํ๋์ ํ๊ทธ๋ <tag> ์๋ ์์๋ฅผ ์ฌ์ฉํด ์ฌ๋ฌ ๊ฐ์ ํ๊ทธ๋ค๋ก ๋ช ์๋ ์ ์๋ค.
<View ..
android:tag="@string/mytag_value" />
<View ...>
<tag android:id="@+id/mytag"
android:value="@string/mytag_value" />
</View>
ํ๊ทธ๋ setTag(java.lang.Object) ๋๋ setTag(int, java.lang.Object)๋ฅผ ์ฌ์ฉํด ์์์ ์ค๋ธ์ ํธ๋ก ์ฝ๋์์ ๋ช ์๋ ์ ์๋ค.
ํ ๋ง
์ผ๋ฐ์ ์ผ๋ก, ๋ทฐ๋ค์ ๊ทธ๋ค์ ์์ฑ์์์ ์ ๊ณต๋ Context ๊ฐ์ฒด์ ํ ๋ง๋ฅผ ์ด์ฉํด ์์ฑ๋๋ค. ๊ทธ๋ฌ๋, ๋ ์ด์์ XML์์ android:theme ์์ฑ์ ์ด์ฉํ๊ฑฐ๋ ์ฝ๋์์ ContextThemeWrapper๋ฅผ ์์ฑํ์ ๋ณด๋ด์ ๋ค๋ฅธ ํ ๋ง๋ฅผ ๋ช ์ํ ์ ์๋ค.
android:theme ์์ฑ์ XML์์ ์ฌ์ฉ๋๊ณ , ๋ช ์๋ ํ ๋ง๋ inflation context์ ํ ๋ง(LayoutInflater๋ฅผ ๋ณด๋ผ)์ ์ต์๋จ์ ์ ์ฉ๋๊ฑฐ๋ ๋ค๋ฅธ ์๋ ์์๋ค๋ฟ๋ง์ด ์๋๋ผ ๋ทฐ ์์ฒด์ ์ฌ์ฉ๋๋ค.
๋ค์์ ์์์์, ๋ ๋ทฐ๋ค ๋ชจ๋ Materail dark color ์คํค๋ง๋ฅผ ์ด์ฉํด ์์ฑ๋ ๊ฒ์ด๋ค. ๊ทธ๋ฌ๋, ์ค๋ฒ๋ ์ด ํ ๋ง๊ฐ ์์ฑ๋ค์ ํ์ ์งํฉ๋ง ์ ์ํ๊ณ ์๊ธฐ ๋๋ฌธ์ inflation context์ ํ ๋ง(e.g. Activity ํ ๋ง)์์ ์ ์๋ android:colorAccent ๊ฐ์ ์ ์ง๋๋ค.
<LinearLayout
...
android:theme="@android:theme/ThemeOverlay.Material.Dark">
<View ...>
</LinearLayout>
์์ฑ๋ค
๋ทฐ ํด๋์ค๋ TRNASLATION_X์ TRANSLATION_Y์ ๊ฐ์ด ์ฌ๋ฌ ๋ณํ๊ณผ ๊ด๋ จ๋ ์์ฑ๋ค ๋ฟ๋ง์ด ์๋๋ผ ALPHA ์์ฑ์ ๊ฐ์ง๋ค.์ด ์์ฑ๋ค์ ๋น์ทํ๊ฒ ์ด๋ฆ์ ๊ฐ์ง setter/getter ๋ฉ์๋(ALPHA์ ๋ํด์๋ setAlpha(float)) ๋ฟ๋ง์ด ์๋๋ผ Property ํ์์์ ๋๋ค ๊ฐ๋ฅํ๋ค. ์ด ์์ฑ๋ค์ ์ง์์ ์ธ ์ํ๋ฅผ ์ค์ ํ๊ธฐ ์ํด์ ๋ทฐ์์ ๋ ๋๋ง๊ณผ ๊ด๋ จ๋ ์์ฑ๋ค๊ณผ ์ฌ์ฉ๋ ์ ์๋ค. ์ด ์์ฑ๋ค๊ณผ ๋ฉ์๋๋ค์ ๋ํ Animator๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ ์ ๋๋ฉ์ด์ ๋ค๊ณผ ํจ๊ป ์ฌ์ฉ๋ ์ ์๊ณ , ์์ธํ ๊ฒ์ Animation ์น์ ์ ์๋ค.
์ ๋๋ฉ์ด์
์๋๋ก์ด๋ 3.0์ ์์ํ๋ฉด์, ๋ทฐ์ ์ ๋๋ฉ์ด์ ์ ์ฃผ๋ ์ ํธ๋๋ ๋ฐฉ๋ฒ์ android.animation ํจํค์ง์ API๋ค์ ์ฌ์ฉํ๋ ๊ฒ์ด๋ค. ์ด Animator ๊ธฐ๋ฐ ํด๋์ค๋ค์ ๋ทฐ ๊ฐ์ฒด์ ์ค์ ๋ก alpha์ translationX๊ฐ์ ์์ฑ ๊ฐ๋ค์ ๋ฐ๊พผ๋ค. ์ด ๋์์ 3.0 ์ด์ ์ Animation ๊ธฐ๋ฐ์ ํด๋์ค๋ค์ ๋์๊ณผ ๋์กฐ๋๊ณ , ๋์ ์ ๋์คํ๋ ์ด์ ๋ทฐ๋ฅผ ์ด๋ป๊ฒ ๊ทธ๋ฆฌ๋ ์ง๋ฅผ ์ ๋๋ฉ์ด์ ์ผ๋ก ๋ง๋ ๋ค. ํนํ, ViewPropertyAnimator ํด๋์ค๋ ํนํ ์ฝ๊ณ ํจ์จ์ ์ผ๋ก ๋ทฐ ์์ฑ๋ค์ ์ ๋๋ฉ์ด์ ์ผ๋ก ๋ง๋ค์ด์ค๋ค.
๊ทธ ๋์ ์, ์ด๋ป๊ฒ ๋ทฐ๊ฐ ๋ ๋๋ง๋๋์ง ์ ๋๋ฉ์ด์ ์ ์ฃผ๊ณ ์ํ๋ฉด 3.0 ์ด์ ์ ๋๋ฉ์ด์ ํด๋์ค๋ค์ ์ฌ์ฉํ ์ ์๋ค. Animation ๊ฐ์ฒด๋ฅผ setAnimation(android.view.animation.Animation) ๋๋ startAnimation(android.view.animation.Animation)์ ์ฌ์ฉํด์ ๋ทฐ์ attach ํ ์ ์๋ค. ์ ๋๋ฉ์ด์ ์ ์๊ฐ์ด ์ง๋๋ฉด์ ๋ทฐ์ ์ค์ผ์ผ, ํ์ ๋ณํ๊ณผ ์ํ๋ฅผ ๊ณ ์น ์ ์๋ค. ๋ง์ฝ ์ ๋๋ฉ์ด์ ์ด ์์์ด ์๋ ๋ทฐ์ attach๋๋ค๋ฉด, ๊ทธ ์ ๋๋ฉ์ด์ ์ ๋ ธ๋์ ์ํด ๊ณ ์ ๋ ํ์ ํธ๋ฆฌ ์ ์ฒด์ ์ํฅ์ ์ค๋ค. ์ ๋๋ฉ์ด์ ์ด ์์ํ ๋ ํ๋ ์์ํฌ๋ ์ ๋๋ฉ์ด์ ์ด ๋๋ ๋๊น์ง ์ ๋นํ ๋ทฐ๋ฅผ ๋ค์ ๊ทธ๋ฆฌ๋ ๊ฒ์ ์ฒ๋ฆฌํ ๊ฒ์ด๋ค.
๋ณด์
๋๋๋ก ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ฌ์ฉ์์ ์ถฉ๋ถํ ์ ๋ณด์ ๋์๋ฅผ ๊ฐ์ง๊ณ ๊ถํ ์์ฒญ์ ํ๋ฝํ๊ฑฐ๋ ๊ตฌ๋งค๋ฅผ ์งํํ๊ฑฐ๋ ๊ด๊ณ ๋ฅผ ํด๋ฆญํ๋ ๊ฒ๊ณผ ๊ฐ์ ๋์์ด ์ ์ํ๋๋ ์ง๋ฅผ ํ์ธํ๋ ๊ฒ์ด ํ์ํฉ๋๋ค. ๋ถํํ๋, ์ ์์ ์ธ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ทฐ์ ์๋๋ ๋ชฉ์ ์ ์จ์ ๊ฑฐ ์ฌ์ฉ์๋ฅผ ์์ฌ ์์ ๋ ๋ชจ๋ฅด๊ฒ ์ด ์์ ๋ค์ ์งํํ๋ ค๊ณ ์๋ํฉ๋๋ค. ํด๊ฒฐ์ฑ ์ผ๋ก, ํ๋ ์์ํฌ๋ ๋ฏผ๊ฐํ ๊ธฐ๋ฅ์ ์ ๊ทผํ๋ ๊ฒ์ ์ ๊ณตํ๋ ๋ทฐ์ ๋ณด์์ ํฅ์์ํค๋๋ฐ ์ฐ์ผ ์ ์๋ ํฐ์น ํํฐ๋ง ๋ฉ์ปค๋์ฆ์ ์ ๊ณตํฉ๋๋ค.
ํฐ์น ํํฐ๋ง์ ์ ๊ณตํ๊ธฐ ์ํด์, setFilterTouchesWhenObscured(boolean)์ ํธ์ถํ๊ฑฐ๋ android:filterTouchesWhenObscured layout ์์ฑ์ true๋ก ์ค์ ํ๋ค. ๊ฐ๋ฅํ ๋, ํ๋ ์์ํฌ๋ ๋ทฐ์ ์๋์ฐ๊ฐ ํฐ์น๋ ์์น์ ๋ค๋ฅธ ๋ณด์ด๋ ์๋์ฐ์ ์ํด ์ ๋ณด์ด์ง ์์ ๋๋ง๋ค ์ ๋ ฅ๋ ํฐ์น๋ฅผ ๋ฒ๋ฆด ๊ฒ์ด๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก, ๋ทฐ๋ ํฐ์น๊ฐ ํ ์คํธ, ๋ค์ด์ผ๋ก๊ทธ๋ ๋ค๋ฅธ ์๋์ฐ๋ฅผ ๋ซ๊ณ ์ค๋ ์ธ์ ๋ ์ง ํฐ์น๋ฅผ ๋ฐ์ง ์์ ๊ฒ์ด๋ค.
๋ณด์์ ๋ํด ๋ ์ธ๋ฐํ ์ ์ด๋ฅผ ์ํด์๋, ๊ณ ์ ๋ณด์ ์ ์ฑ ์ ๊ตฌํํ๊ธฐ ์ํด์ onFilterTouchEventForSecurity(android.view.MotionEvent) ๋ฉ์๋๋ฅผ ์ค๋ฒ๋ผ์ด๋ํ๋ ๊ฒ์ ๊ณ ๋ คํ๋ผ. MotionEvent#FLAG_WINDOW_IS_OBSCURED ๋ํ ํ์ธํ๋ผ.
'๋น ๊ตฌ๋ฉ ์ฑ์ฐ๊ธฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Android] ๊ธฐ๋ณธ ์ ๊ณต BindingAdapter (0) | 2022.10.13 |
---|---|
[Android] ViewGroup.LayoutParams ๋ฌธ์ ์ฝ๊ธฐ (0) | 2022.10.12 |
[Android][Retrofit][OAuth] OAuth2.0 ์ธ์ฆ ์ฒ๋ฆฌ๋ก ๋ณ๊ฒฝ (1) | 2022.09.20 |
[Android] androidx.fragment.app.FragmentContainerView (0) | 2022.08.22 |
[Android] API vs SKD ์ฐจ์ด (0) | 2022.08.19 |