전체 글

Android

BuildType과 ProductFlavors

BuildType 프로젝트를 개발하다가 보면, debug 모드로 개발을 하다가, 릴리즈 버전으로 빌드해서 테스트를 진행하고자 할 때 Build Variants에서 release를 클릭하여 release 모드로 빌드하는 경험을 했을 것이라고 생각합니다. 이는 BuildType 변경을 통해서 “00용” 앱을 빌드할수 있게 하는 기능입니다. debug : 개발용 release : 배포용 Gradle에서 BuildTypes은 빌드 목적을 구성하여 단일 프로젝트에서 다양한 목적의 앱을 만드는 방법을 제공합니다. 기본적으로 모듈을 만들게 되면 gradle에서 자동 생성된, 다음을 확인할 수 있습니다. android { namespace = "com.example.buildvariants" compileSdk = 3..

Compose

Compose UI Test 맛보기

사전 setting Test를 작성하기 위한 의존성을 추가하자 androidTestImplemenation("androidx.compose.ui:ui-test-junit4:$compose_version") debugImplemenation("androidx.compose.ui:ui-test-manifest:$compose_version") AndroidTest 패키지 내부에 Test파일을 생성하자 Test Rule를 생성하자. @get:Rule val rule = createComposerRule() 이 테스트룰은 우리가 테스트를할 content를 세팅하거나 테스트 내에서 앱과 상호작용할 수 있게 만들어 줍니다. 테스트 클래스는 항상 test rule이 정의되어있어야합니다. 테스트 코드 작성 @Test ..

Compose

Jetpack Compose Theme 적용하기

기본적으로 Android Studio에서 Base Compose Activity를 생성하면 다음과 같은 기본적인 파일을 얻을 수 있습니다. setContent{ ProjectTheme { Surface(modifier = Modifier.fillMaxSize(), color = MaterialTheme.colors.background){ Greeting("ANDROID") } } } 위의 Theme 내부에 있는 요소들은 Material 디자인 가이드에 따라, 앱에 일관된 모양이나 Typography, Color, Shape들을 제공할 수 있는 파일들이다. 코드를 보면 ProjectTheme{}안에 우리가 원하는 Composable을 넣는 것을 볼 수 있다. 저 ProjectTheme{}는 무엇일까? Th..

Compose

Compose와 함께 Motion Layout을 사용하여 애니메이션 구현하기

오늘은 MotionLayout을 사용하여 애니메이션을 구현해보려구 합니다. Jetpack compose를 사용하면서 하나의 animation을 구현하려고 할 때, 변경하는 요소마다 animate value를 적용해야하는게 너무 힘들었던 경험이 있습니다. ( 쌓여가는 animateState들...) 애니메이션을 한번에 처리하기 좋은 MotionLayout을 사용하여 애니메이션을 처리하는 방법을 알아보려구 합니다. 자꾸자꾸 MotionLayout이라고 하는데 무엇이냐 MotionLayout은 ConstraintLayout의 서브 클래스이며 ConstraintLayout의 다양한 레이아웃 기능을 기초로 가지고 있다. MotionLayout은 레이아웃 전환과 복잡한 모션 처리 사이를 연결한다. 라고 Androi..

Android

setContentView in Activity

우리는 Activity를 사용할 때, 다음과 같이 레이아웃을 정의해둔 xml과 Activity를 연결하기 위해서 onCreate()에서 setContentView를 호출했었습니다. class MainActivity2 : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main2) } } 오늘은 이 setContentView가 어떤 역할을 하는지 알아보려고 합니다. // In AppCompatActivity @Override public void setContentView(@LayoutRes int l..

Android

Activity

액티비티가 무엇이예요? 라고 정의할 수 있을까 이 글을 작성하기 전에 내가 아는 액티비티는 무엇일까 생각해 보았다. 내가 생각하는 Activity를 비유할 수 있는 단어는 화면(Screen)이다. Activity는 한 어플리케이션에 내용을 담는 스크린.. 화면이기 때문에 사용자의 입력을 받거나, 내용들을 보여줄 수 있는 기능이 필요하다. 한 화면에서 다른 화면으로 이동하는 로직도 필요하구. 어떠한 의도를 보여줄 수 있는 화면 단위. 이제 구글 공식문서에서는 뭐라고 정의하는지 봐보자. What is the Activity? “An activity is a single, focused thing that the user can do.” “액티비티는 사용자가 수행할 수 있는 집중된 단일 작업입니다” 거의 모든..

Compose

rememberUpdatedState

rememberUpdatedState 공식문서에 따르면 '값이 변경되는 경우 다시 시작되지 않아야하는 효과에서 값 참조에 사용합니다' 이 경우에 rememberUpdatedState를 사용한다는데, 이런 경우가 어떤 경우가 있는지 잘 모르기에 타 사이트에 있는 예제를 참고해보겠습니당. https://proandroiddev.com/jetpack-compose-side-effects-iii-rememberupdatedstate-c8df7b90a01d Jetpack Compose Side-Effects III— rememberUpdatedState rememberUpdatedState helps keep an updated reference to variables in our compose side-effe..

Compose

SwipeToDismiss Jetpack Compose로 구현하기

오늘은 위와 같이 Jetpack Compose로 Swipe하여 삭제(dismiss)하는 Composable를 만들어보려고합니다. Jetpack Compose는 기본적으로 SwipeToDismiss Composable를 제공하고 있습니다. 하지만 Material3 Stable Release 버전에서는 지원하지 않고 있습니다. ( Material2는 지원함 ) 하지만 알파버전인 1.1.0-alpha04 버전에서는 지원하니, 이 버전을 통해 구현해도 좋을 것 같습니다. 알파버전을 사용하지 않는다면 https://androidx.tech/artifacts/compose.material/material/1.0.0-alpha09-source/androidx/compose/material/Swipeable.kt.ht..

KimDaQ
DaQ