Android

    안드로이드를 위한 클린 아키텍처

    Clean Architecture에 대한 개념과 안드로이드에서 클린아키텍처를 적용한 구체적 사례를 통해 추상적인 개념으로만 알고있었던 개념을 더 자세히 알아보려고 합니다. Clean Architecture 란? 클린 아키텍처의 개념과 중요성에 대해서 알아보도록 합시다. 아키텍처는 복잡성을 관리해주기 때문에 특히 큰 프로젝트에서 중요합니다. 모든 아키텍처에는 애플리케이션의 복잡성을 관리한다는 하나의 공통 목표가 있습니다. 특히 대규모 프로젝트에서는 더욱 그렇습니다. 다음은 클린 아키텍처의 대표적인 그림입니다. 원은 앱의 다양한 수준의 소프트웨어를 나타냅니다. 주목해야 할 두 가지 주요 사항이 있습니다. 추상화 원칙 : 가운데 원이 가장 추상적이며 바깥쪽 원이 가장 구체적이여햐 합니다. 추상화 원칙은 내부 ..

    Android Shortcut(바로가기)

    shortcut(바로가기)는 앱 아이콘 롱 클릭 시 앱의 특정 작업을 실행하는 바로가도록 해주는 기능입니다. 이러한 바로가기는 지원되는 런처나 어시스턴트(Google 어시스턴트 등)에 표시될 수 있으며 사용자가 앱 내에서 특정 작업을 빠르게 시작할 수 있도록 도와줍니다. 각각의 shortcut은 하나 이상의 Intent를 참조하고 각 Intent는 사용자가 shortcut를 선택할 때 앱에서 특정 작업을 실행합니다. 바로가기로 표시할 수 있는 작업의 예 이메일 앱에서 새로운 이메일 작성하기 매핑 앱에서 사용자를 특정 위치로 이동하기 커뮤니케이션 앱에서 친구에게 메시지 전송하기 미디어 앱에서 TV 프로그램의 다음 에피소드 재생하기 게임 앱에서 마지막 저장 지점 로드하기 음성 명령을 사용하여 음성으로 배달 ..

    [Appbar] - Toolbar

    앱바AppBar(=ActionBar) vs 툴바Toolbar 안드로이드의 역사와 관련이 있습니다. 안드로이드 버전 3.0부터 디폴트 테마(Theme)를 사용하는 모든 액티비티는 ActionBar를 app bar로 사용한다고 합니다. 그런데 새로운 버전의 안드로이드가 출시되면서 app bar 피쳐들이 점점 더 natvie ActionBar(OS에 기본적으로 포함된 ActionBar를 의미함. 반대되는 개념으로 지원 라이브러리에 포함된 ActionBar가 있음)에 추가되었고 그 결과 native ActionBar는 Android OS 버전에 따라 다르게 동작되는 문제가 생겼습니다. 이와 대조적으로 최신 피쳐들은 지원 라이브러리에 포함된 Toolbar에 추가되고 있어, 지원 라이브러리를 사용할 수 있는 모든 ..

    View를 만드는 가장 기본적인 방법, LayoutInflater

    LayoutInflater는 안드로이드에서 View를 만드는 가장 기본적인 방법입니다. Fragment의 View를 만들거나 Recyclerview에서 View 를 merge 할 때 등 여러곳에서 사용됩니다. LayoutInflater를 사용하는 방법과 더불어 비동기적으로사용 하는 방법을 알아보자 LayoutInflater 생성하는 방법 1. Context에서 getLayoutInflater() 함수로 가져오기 val inflater: LayoutInflater = context.getSystemService(Context.LAYOUT_INFLATER_SERVICE) - 가장 기본적인 방법 2. Activity에서 getLayoutInflater()함수를 통해 가져오기 val inflater: Layou..

    android custom ui

    안드로이드에서는 기본적으로 버튼, 텍스트뷰 등 기본적인 ui를 제공해줍니다. 모든 ui들은 view클래스를 상속받아 만들어집니다. 이중에서 viewGroup을 상속받은 ui들을 layout이라 하고 나머지를 wiget이라 합니다. viewGroup 을 상속받은 layout들은 자식뷰를 가질 수 있기때문에 이를 배치하는 역할을 합니다. 하지만 내가 custom해서 직접 ui를 만들어 사용할 수 도 있습니다. 자신만의 button 이나 View를 만들고 싶다면 View 클래스를 상속 받아서 필요한 메소드들을 오버라이드 하면됩니다. Custom View 는 View 클래스를 상속하여 만들고, Custom Layout 은 Viewgroup 클래스를 상속하여 만듭니다. View 메소드 호출 순서 View 오버라이..

    databinding - 식별 가능한 데이터 개체(observable data objects) 작업

    Observable fields Lifecycle-aware objects Using StateFlow class ScheduleViewModel : ViewModel() { private val _username = MutableStateFlow("") val username: StateFlow = _username init { viewModelScope.launch { _username.value = Repository.loadUserName() } } } LiveData를 사용하여 UI에 데이터 변경 알림 LiveData 객체를 데이터 결합 소스로 사용하여 데이터 변경을 UI에 자동으로 알릴 수 있습니다. 식별 가능한 필드와 같이 Observable을 구현하는 객체와 달리 LiveData 객체는 데..