๊ณณ๊ฐ์์ ์ธ์ฌ๋๋ค (31) ์ธ๋ค์ผํ ๋ฆฌ์คํธํ [Android]์ฑ ๋น๋ ์ค์ - zero base ํ๋ก์ ํธ ๊ฐ๋ฐ ์ ๋ด์ฉ ์ ๋ฆฌ์ ํ์์ฑ์ ๋๋ ๊ฒ๋ค ์ฐธ๊ณ https://stackoverflow.com/a/36455983 https://developer.android.com/studio/publish/app-signing?hl=ko#secure-shared-keystore ๋ฌธ์ ์์ฑ ํ์์ฑ ๊ธํ๊ฒ zero base ํ๋ก์ ํธ๋ฅผ ๋๊ฒจ๋ฐ์์ ์ผ์ ํ์์. ์ด๊ฒ ์ ๊ฒ ๋น๋ ๊ด๋ จํด์ ์ค์ ํด์ผํ๋ ๊ฑด ์๋๋ฐ ๊ตฌ์ฒด์ ์ธ ๋ฐฉ๋ฒ๋ค์ ํ์คํ๊ฒ ์๊ฐ์ด ๋์ง ์์ ๋ค ๊ฒ์ํ๋ฉฐ ์ฐพ์์ผ ํ์. ์ด๋ฒ์ ์ ๋ฆฌํด์ ๋ค์ ๋ฒ์ ๋๋ฝ ์ฌํญ ์์ด, ๋ ํค๋งค๋ฉด์ ๋น ๋ฅด๊ฒ ์์ ํ๊ธฐ ์ํด ๊ธฐ๋กํจ. ๊ธฐ๋ก ๋์ apk, aab ํ์ผ ์ด๋ฆ ์๋ ์์ฑ flavor/type ๋ณ ์ค์ flavor/type ๋ณ ์ฌ์ด๋ ํค ์๋ ์ค์ flavor/type ๋ณ ์ฑ ์ด๋ฆ ์๋ ์ค์ ๋ฆด๋ฆฌ์ฆ ๋ฒ์ ์ค์ buildF.. [Android][Animation] 2์ด๋ง๋ค ๊น๋นก์ด๋ ์ ๋๋ฉ์ด์ . ์ด๊ฐ๋จ ๊ตฌํ https://developer.android.com/develop/ui/views/animations/prop-animation#choreography [Android] Swipe ์ ์ค์ณ ๊ฐ์ง CustomView GestureDetector ์ด์ฉ https://stackoverflow.com/a/19506010 Android: How to handle right to left swipe gestures I want my app to recognize when a user swipes from right to left on the phone screen. How to do this? stackoverflow.com GestureDetector์ onFling()์ด ํธ์ถ๋์ง ์์ ๊ฒฝ์ฐ https://stackoverflow.com/a/17833241 onfling() not being called for some reason I'm trying to implement gesture in my app and for s.. [Kotlin] ํ๋ ฌ์ ๊ณฑ https://ko.wikipedia.org/wiki/%ED%96%89%EB%A0%AC_%EA%B3%B1%EC%85%88 ํ๋ ฌ ๊ณฑ์ - ์ํค๋ฐฑ๊ณผ, ์ฐ๋ฆฌ ๋ชจ๋์ ๋ฐฑ๊ณผ์ฌ์ ์ํค๋ฐฑ๊ณผ, ์ฐ๋ฆฌ ๋ชจ๋์ ๋ฐฑ๊ณผ์ฌ์ . ํ๋ ฌ ๊ณฑ์ ์ ์ํด์ ์ฒซ์งธ ํ๋ ฌ์ ์ด ๊ฐฏ์์ ๋์งธ ํ๋ ฌ์ ํ ๊ฐฏ์๊ฐ ๋์ผํด์ผํ๋ค. ๊ณฑ์ ์ ๊ฒฐ๊ณผ ์๋กญ๊ฒ ๋ง๋ค์ด์ง ํ๋ ฌ์ ์ฒซ์งธ ํ๋ ฌ์ ํ ๊ฐฏ์์ ๋์งธ ํ๋ ฌ์ ์ด ko.wikipedia.org ํ๋ ฌ A๋ a x b ํ๋ ฌ, ํ๋ ฌ B๋ b x cํ๋ ฌ์ด๋ผ๊ณ ํ ๋, ํ๋ ฌ A์ ํ๋ ฌ B์ ๊ณฑ์ผ๋ก ๋์จ ํ๋ ฌ C์ ์์๋ ๋ค์๊ณผ ๊ฐ๋ค. fun matrixMultiply(arr1: Array, arr2: Array): Array { val (m1, m2) = if (arr1[0].size == arr2.size) { arr1.. [Kotlin] ์ต๋๊ณต์ฝ์ & ์ต์๊ณต๋ฐฐ์ ๊ตฌํ๊ธฐ ์ต๋๊ณต์ฝ์ GCD(Greatest Common Divisor) ์ ํด๋ฆฌ๋ํธ์ ๋ฒ ์ด์ฉ fun gcd(num1: Int, num2: Int): Int { return if (num2 == 0) num1 else gcd(num2, num1 % num2) } ์ต์๊ณต๋ฐฐ์ LCM(Least Common Multiple) ์ต์๊ณต๋ฐฐ์ = ๋ ์์ฐ์์ ๊ณฑ / ์ต๋๊ณต์ฝ์ fun lcm(num1: Int, num2: Int): Int { return num1 * num2 / gcd(num1, num2) } [Kotlin][Java] ByteArrays๋ฅผ 16์ง์(Hex) String์ผ๋ก ๋ณํ https://www.baeldung.com/kotlin/byte-arrays-to-hex-strings ์ฌ๊ธฐ์ ์ ๋ง ์ ๋์์. ๋ค์ํ ๋ฐฉ๋ฒ์ด ์กด์ฌํ๋ค. ๊ทธ ์ค์์ ๋ค์์ ๋ฐฉ๋ฒ์ ์ฃผ๋ชฉํ๋ค. https://www.baeldung.com/kotlin/byte-arrays-to-hex-strings val hexChars = "0123456789abcdef".toCharArray() fun ByteArray.toHex4(): String { val hex = CharArray(2 * this.size) this.forEachIndexed { i, byte -> val unsigned = 0xff and byte.toInt() hex[2 * i] = hexChars[unsigned / 16] hex[2 * i.. [Android][Compose][์ฝ์ง ๊ตํ] Compose Migration + Expandable List ์์ ๊ธฐ์กด ํ๋ก์ ํธ๋ ์์ง๋ deprecated ๋ jcenter repository์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ ์ฐ๊ณ ์๋ค. Gradle 8.0์ ๊ธฐ๋ฅ์ ์จ์ ํ ์ฌ์ฉํ๊ธฐ ์ํด์๋ ์ jcenter์ ๋ฌผ๋ฆฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ ๊ต์ฒดํด์ผ ํ๋ค. ๊ต์ฒด ๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค ExpandedRecyclerView๋ฅผ ์ ๊ณตํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์๋ค. ์ฑ์์ ๋ง์ด ์ฐ์ด๋ ๊ธฐ๋ฅ๋ ์๋๊ณ , ์ฝ๊ด ์ค๋ช ์ ์ํด ๊ฐ๋จํ ์ฐ์ด๋ ๊ฒ ๋ฟ์ด๋ผ์ ์ง์ ๋ง๋ค๊ธฐ๋ก ํ๋ค. Compose๋ก ๋ง๋๋ ๊ฒ ๋ ๊ฐ๋จํ ๊ฒ ๊ฐ์์ ์์ํ๋ค. Gradle ์ค์ ์ฐธ๊ณ : https://velog.io/@blucky8649/Android-%EA%B8%B0%EC%A1%B4-%EC%95%B1%EC%97%90-Compose-UI-%EC%A0%81%EC%9A%A9-%EC%8B%9C%E.. [์๋ฃ๊ตฌ์กฐ] ์ฐ๊ฒฐ ๋ฆฌ์คํธ ๋จ์ผ ์ฐ๊ฒฐ ๋ฆฌ์คํธ ๋ ธ๋ ๊ตฌ์ฑ : ๋ฐ์ดํฐ + link(๋ค์ ๋ ธ๋์ ๋ํ ์ฐ๊ฒฐ ๊ณ ๋ฆฌ. ํฌ์ธํฐ ํน์ ๋ ํผ๋ฐ์ค) ์ฒซ ๋ฒ ์งธ ๋ ธ๋ : ํค๋ header ๋ง์ง๋ง ๋ ธ๋ : ๊ผฌ๋ฆฌ tail. link๋ ๋น์๋๊ฑฐ๋ null๋ก ์ง์ ํจ ๋ ธ๋์ link๋ ๋ค์ ๋ ธ๋๋ฅผ ๊ฐ๋ฆฌํค๋ ํฌ์ธํธ๋ ๋ ํผ๋ฐ์ค๋ก๋ง ๊ตฌ์ฑ๋จ. ๊ทธ๋์ ์์ผ๋ก๋ง ์ข ์ฃผ ๊ฐ๋ฅ ๋ฆฌ์คํธ๋ฅผ ์์ ์ข ์ฃผํ๋ ค๋ฉด ํญ์ ์ฒซ ๋ฒ์งธ ์์๋ถํฐ ์์ํด์ผ ํ๋ค. ๋ฆฌ์คํธ์ ์๋ ๋ชจ๋ ์์์ ์์น๋ฅผ ํ์ ํ๋ ค๋ฉด ๋ฆฌ์คํธ์ ์ฒซ ๋ฒ์งธ ์์์ ๋ํ ํฌ์ธํฐ๋ ๋ ํผ๋ฐ์ค๊ฐ ์์ด์ผ ํ๋ค. ์ฒซ ๋ฒ์ฌ ์์์ ํฌ์ธํฐ๋ ๋ ํผ๋ฐ์ค๋ ๋ณดํต ๋ณ๋์ ์๋ฃ๊ตฌ์กฐ์ ์ ์ฅํจ. ๋ ธ๋. ์ฝํ๋ฆฐ์ผ๋ก ์์ฑ class SinglyLinkedListElement(val value: T, var next: SinglyLinkedListElemen.. ์ด์ 1 2 3 4 ๋ค์