๊ณต์ ๋ ํผ๋ฐ์ค ๋ฌธ์์์์ ๋ฑ์ฅ
Window์ getDecorView()๋ก ๋ฐํ๋๋ ๊ฐ์ฒด.
public abstract View getDecorView()
Returns the top-level window decor view. This value cannot be null.
๋ฐ๋ฒ์ญ
์ต์๋จ ์๋์ฐ decor view๋ฅผ ๋ฐํํจ. null์ ๋ฐํํ ์ ์์.
Retrieve the top-level window decor view (containing the standard window frame/decorations and the client's content inside of that), which can be added as a window to the window manager.
๋ฐ๋ฒ์ญ
์ต์๋จ ์๋์ฐ decor view(๊ธฐ๋ณธ ์๋์ฐ ํ๋ ์/์ฅ์๊ณผ ์๋์ฐ ํ๋ ์/์ฅ์ ์์ ํด๋ผ์ด์ธํธ์ ์ฝํ ์ธ ๋ฅผ ํฌํจํ๋ค.)๋ฅผ ๋ฐํํ๋ค. decor view๋ window manager์ window๋ก ์ถ๊ฐ๋ ์ ์๋ค.
์คํ์ค๋ฒํ๋ก์ฐ ๋ฐ ๋ค๋ฅธ ๋ธ๋ก๊ทธ ๊ธ
์๋์ฐ์ ํ๋ ์? ์๋์ฐ์ ์ฅ์? ๋๊ตฐ๊ฐ๊ฐ ์ด๋ฏธ ๋์ ๊ฐ์ ์ง๋ฌธ์ ํ ๊ฒ์ ์ฐพ์๋ค.
https://stackoverflow.com/questions/23276847/what-is-an-android-decorview
์ ์ํ๊ฒ๋ ๋ต๋ณ์์ ๋งํฌ ๊ฑธ์ด์ค ๋ธ๋ก๊ทธ์ ๊ธ์ ๋ ์ด์ ๋จ์์์ง ์์ ๋ฏ ํ๋ค.
The DecorView is the view that actually holds the window’s background drawable. Calling getWindow().setBackgroundDrawable() from your Activity changes the background of the window by changing the DecorView‘s background drawable. As mentioned before, this setup is very specific to the current implementation of Android and can change in a future version or even on another device.
๋ฐ๋ฒ์ญ
DecorView๋ ์๋์ฐ์ ๋ฐฑ๊ทธ๋ผ์ด๋ ๋๋ฌ์๋ธ์ ์ค์ ๋ก ๊ฐ์ง๊ณ ์๋ ๋ทฐ์ ๋๋ค. Activity์์ getWindow().setBackgroundDrawable()์ ํธ์ถํด DecorView์ ๋ฐฑ๊ทธ๋ผ์ด๋ ๋๋ก์๋ธ์ ๋ฐ๊ฟ์ผ๋ก์จ ์๋์ฐ์ ๋ฐฑ๊ทธ๋ผ์ด๋๋ฅผ ๋ฐ๊ฟ๋๋ค. ์ ์ ์ธ๊ธํ๋ฏ์ด, ์ด ์ค์ ์ Android์ ํ์ฌ ๊ตฌํ์๋ ์์ฃผ ํน๋ณํด์ ์ฐจํ ๋ฒ์ ์ด๋ ๋ค๋ฅธ ๋จ๋ง์์๋ ๋ฐ๋ ์ ์์ต๋๋ค.
the decor view is the true root of the Window's view hierarchy. It contains both the "decor" (i.e. the window's title (action bar?), or a dialog's "frame" (~= the view which draws the actual pixels of the dialog frame, as seen in pre-Holo) and also contains the app-supplied content view. AFAIK it exists entirely within the bounds of the window, and does not surround it, and is not itself a window in any sense.
๋ฐ๋ฒ์ญ
decor view๋ ์๋์ฐ์ ๋ทฐ ๊ณ์ธต์ ์ง์ง ๋ฃจํธ์ ๋๋ค. ์ด๊ฑด "decor"(์ฆ, ์๋์ฐ์ ํ์ดํ(์ก์ ๋ฐ?))๋ ๋ค์ด์ผ๋ก๊ทธ์ "ํ๋ ์"(~=pre Holo์์ ๋ณด์ด๋ฏ์ด, ๋ค์ด์ผ๋ก๊ทธ ํ๋ ์์ ์ค์ ํฝ์ ์ ๊ทธ๋ฆฌ๋ ๋ทฐ)์ ํฌํจํ๊ณ ์ฑ์ด ์ ๊ณตํ๋ ์ฝํ ์ธ ๋ทฐ๋ ๋ํ ํฌํจํฉ๋๋ค. ์ ๊ฐ ์๊ธฐ๋ก ์ด๊ฒ์ ์๋์ฐ์ ๊ฒฝ๊ณ ์์ชฝ์ ์ ๋ถ๋ฅผ ์ฐจ์งํ๊ณ ์๊ณ , ๊ฒฝ๊ณ๋ฅผ ๋๋ฅด์ง๋ ์์ต๋๋ค. ์ด๋ค ์๋ฏธ๋ก๋ ์๋์ฐ ์์ฒด๋ ์๋๋๋ค.
DecorView๋ฅผ ์ค๋ช ํด์ฃผ๋ ๋ค๋ฅธ ๊ธ์ ์ฐพ์๋ค.
https://medium.com/@yonghan_89267/android-window-8c2edbcdebe8
DecorView๋ Activity์ ์ต์๋จ ๋ฃจํธ ๋ทฐ๋ก, ์๋์ฐ์ ๋ฐฐ๊ฒฝ์ ๋ด๋นํ๋ ๋ฏ ํ๋ค.
์ฐ์
decor view๋ฅผ ํตํด ์์คํ ๋ฐ(ํ๋ฉด ์๋จ์ ์ํ ๋ฐ + ํ๋ฉด ํ๋จ์ ๋ค๋น๊ฒ์ด์ ๋ฐ)์ ๋ ธ์ถ, ์จ๊น ๋ฑ์ ์ ์ด๊ฐ ๊ฐ๋ฅํ๋ค๋ ๊ฒ์ ์์๋ค. ๊ณต๋ถํ๋ค ๋ณด๋ Android R์ ๊ธฐ์ค์ผ๋ก ๊ธฐ๋ฅ ๊ตฌํ ๋ฐฉ์์ด ๋ฌ๋ผ์ง๋ค. ๋ด์ฉ์ด ๊ธธ์ด์ ธ์ ๊ด๋ จ๋ ์์ธ ๋ด์ฉ์ ๋ค๋ฅธ ๊ธ์์ ์์ฑํ๋ ค๊ณ ํ๋ค. > ์์ฑํ๋ค. ์์คํ ๋ฐ ์ ์ด ๊ธ
์ ์ฒด ํ๋ฉด ๋ชจ๋ ์ฌ์ฉ ์ค์ ์
2023๋ 2์ 16์ผ ๊ธฐ์ค์ผ๋ก, ์ด ํ๊ตญ์ด ๋ฒ์ญ ๋ฌธ์๋ Android R ์ด์ ๋ฐฉ์์ ์ค๋ช ํ๋ค.
https://developer.android.com/training/system-ui/immersive?hl=ko
์๋ฌธ์์ Android R ์ดํ ๋ฒ์ ๋ฐฉ์์ผ๋ก ์ ์ฒด ํ๋ฉด ๋ชจ๋ ์ค์ ๋ฐฉ๋ฒ์ ์ค๋ช ํ๋ค.
https://developer.android.com/develop/ui/views/layout/immersive#kotlin
์์คํ ์ํ ํ์์ค ์ ์ด
Android R ์ด์ ๋ฐฉ์์ ์ค๋ช ํ๋ค.
https://developer.android.com/training/system-ui/dim?hl=ko
์์คํ ์ํ ํ์์ค ๋ณ๊ฒฝ ๋ฆฌ์ค๋ ์ ๊ณต
Android R ์ด์ ๋ฐฉ์์ ์ค๋ช ํ๋ค.
https://developer.android.com/training/system-ui/visibility?hl=ko
'๋น ๊ตฌ๋ฉ ์ฑ์ฐ๊ธฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Network] HTTP headers (0) | 2023.03.02 |
---|---|
[Android][Java][์ํธํ] MessageDigest (0) | 2023.02.28 |
[Android][Lint] Missing baselineAligned attribute (0) | 2023.02.14 |
[Android][WebView] cannot find symbol method setAppCacheEnabled(boolean) (0) | 2023.02.10 |
[Java] Collapse 'catch' blocks (0) | 2023.02.08 |