Android(Kotlin) 26

Jetpack Compose의 BasicTextField에 스타일 적용하기

카카오톡의 @호출 기능처럼 텍스트 입력창에 스타일을 적용해야할 일이 생겼다. Text()의 경우에는 AnnotatedString을 통해 원하는 스타일을 적용할 수 있었지만 BasicTextField의 경우 TextFieldValue를 사용하기 때문에 어떻게 해야할지 막막했는데 VisualTransformation을 통해 스타일을 적용할 수 있다는 것을 알았다. TextField에서 VisualTransformation은 실제 value에 적용되는것이 아닌 말 그대로 보이는 text를 변경하는 속성으로써 보통 비밀번호 입력창에서 PasswordVisualTransformation을 적용하는 경우 등에 사용한다. inner class AnnotatedStringVisualTransformation : Vis..

Android(Kotlin) 2023.11.02

Animation Resource xml에서 Easing 적용하기!

화면을 밑에서 위로 올라오게하기위해 overridePendingTransition을 설정했는데 너무 밋밋하게 올라오는게 맘에 안들어서 xml파일에서 easing을 적용하는 방법을 찾아보니 android:interpolator 속성을 통해 걸어줄 수 있었다 아래는 사용할 수 있는 Interpolator의 종류와 적용방법을 ChatGPT를 통해 알아본 결과이다. https://chat.openai.com/share/b510bf03-c031-482a-bb63-8073040f6ff1 ChatGPT chat.openai.com

Android(Kotlin) 2023.10.27

Compose에서 Modifier.alpha() 적용 후 뷰가 clip되는 문제 해결

LazyColumn을 사용한 리스트 형태의 View를 구현중이었는데 이상하게 item을 Y축으로 움직이는 경우 기존 범위를 벗어나서 뷰가 그려지지 않는 현상이 발생하였다. 이에 대한 해결을 위해 다음과 같이 조사하였다. Modifier.offset().graphicsLayer(translationY = tY).scale().alpha() 인 경우 O Modifier.offset().graphicsLayer(translationY = tY).alpha().scale() 인 경우 O Modifier.scale().offset().graphicsLayer(translationY = tY).alpha() 인 경우 O Modifier.alpha().offset().graphicsLayer(translationY ..

Android(Kotlin) 2023.09.14

CoordinatorLayout(xml) + LazyColumn(Compose)

상단에 Collapsable한 뷰가 필요해서 CoordinatorLayout을 사용했는데 리스트를 RecyclerView로 만들고싶지는 않아서 LazyColumn과 함께 사용할 수 있도록 하려면 어떻게 해야할까 고민해보았다. app:layout_behavior로 ScrollingViewBehavior를 갖는 ComposeView를 사용하면 된다. LazyColumn에서 nestedScroll 설정해주는것도 잊지말자 val nestedScroll = rememberNestedScrollInteropConnection() LazyColumn( modifier = Modifier .nestedScroll(nestedScroll) ) { //Your Code }

Android(Kotlin) 2023.09.07

자주쓰는 라이브러리 implementation 정리 (그때 그때 추가 예정)

1. dagger-hilt //project 수준의 build.gradle plugins { ... id 'com.google.dagger.hilt.android' version '2.44' apply false } ---------------------------------------------------------------------- //app 수준의 build.gradle plugins { id 'kotlin-kapt' id 'com.google.dagger.hilt.android' } android { ... } dependencies { implementation "com.google.dagger:hilt-android:2.44" kapt "com.google.dagger:hilt-compi..

Android(Kotlin) 2023.08.11

심기일전 코틀린! - 예제 코드와 같이 Hilt + Retrofit2 이해하기

(포스팅에 사용된 예제는 Github를 통해서도 확인할 수 있습니다) GitHub - eitu-jerry/EituImageSearcher Contribute to eitu-jerry/EituImageSearcher development by creating an account on GitHub. github.com 이전 시간에 작성한 앱에 기능을 추가해보자. 심기일전 코틀린! - 앱을 만들면서 AAC 이해하기 (ViewModel, DataBinding, LiveData) 이미지 검색 앱을 만들어가면서 AAC에 대해 이해하는 시간을 가져보기로 했다. 이번 시간에는 검색어 입력 EditText와 Button을 가진 화면을 작성해보자. 먼저 검색어를 입력 할 EditText와 검색을 실행 eitu97.tist..

Android(Kotlin) 2023.07.28

심기일전 코틀린! 04. Hilt (Dependency Injection)

Hilt는 구글에서 제공하는 Android용 의존성 주입 라이브러리이다. Dagger를 기반으로 제작되었으며 Koin과 함께 가장 많이 쓰이는 DI 라이브러리 중 하나로 자리잡고 있다. 그런데, 의존성이란 대체 뭘까? 의존성이란 OOP(Object Oriented Programming - 객체 지향 프로그래밍)에서의 용어중 하나로써 어떤 객체가 다른 객체의 기능을 필요로 하는 경우, 두 객체 사이에 의존성이 존재한다고 할 수 있다. 예를 들어, Retrofit2 의 경우 Builder를 통해 객체를 생성할 때 client로써 OkHttpClient 객체를 필요로 하는데 이 경우, 두 객체 사이에 의존성이 존재한다고 할 수 있는것이다. 그렇다면 의존성 주입이란 무엇일까? Retrofit을 사용해 통신하는 ..

Android(Kotlin) 2023.07.26

심기일전 코틀린! - 앱을 만들면서 AAC 이해하기 (ViewModel, DataBinding, LiveData)

이미지 검색 앱을 만들어가면서 AAC에 대해 이해하는 시간을 가져보기로 했다. 이번 시간에는 검색어 입력 EditText와 Button을 가진 화면을 작성해보자. 먼저 검색어를 입력 할 EditText와 검색을 실행할 Button을 가지는 xml을 작성하자. 그리고 이 xml을 레이아웃으로 가지는 액티비티를 하나 생성했다. class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) } } 이제 검색어를 가져와서 검색을 실행하는 코드를 작성해보자. ... //검색어..

Android(Kotlin) 2023.07.26

심기일전 코틀린! - 03. AAC (Android Architecture Components)

채용공고를 보다보면 요즘은 AAC 를 기본적으로 요구하는것 같다. 근데 AAC 가 정확히 뭘까? 라고 생각하는 여러분과 나를 위해 AAC 에 대해 정리해보고자 한다. AAC 란, Android Architecture Components 의 약자로서 구글에서 사용을 권장하는 라이브러리 모음이며 이를 통해 테스트와 유지관리에 용이한 앱을 작성할 수 있도록 도와준다. https://developer.android.com/topic/libraries/architecture?hl=ko Android 아키텍처 구성요소 | Android 개발자 | Android Developers 앱 작업 developer.android.com 또한 AAC 는 Android Jetpack 의 구성 요소 중 하나로써, Android ..

Android(Kotlin) 2023.07.20

Compose에서 Tap, Gesture 감지하기

@Composable fun App() { //줌(스케일) var scale by remember { mutableStateOf(1f) } //뷰 이동 var offset by remember { mutableStateOf(Offset.Zero) } //루트에서 현재 뷰의 상대 위치 var rootOffset by remember { mutableStateOf(Offset.Zero) } //State로써 변화를 저장 val state = rememberTransformableState { zoomChange, offsetChange, rotationChange -> scale *= zoomChange offset += offsetChange } Box( modifier = Modifier .fillMax..

Android(Kotlin) 2023.06.29