Android35 [안드로이드] Snackbar Text 세부 설정 및 Max Line 설정 Snackbar : Toast 메시지처럼 화면상에 팝업창을 띄어 사용자에게 특정한 정보를 제공할 때 사용이 됩니다. Toast 메시지와 유사한 기능을 제공하지만, Toast 메시지일 경우 팝업창이 나타났다가 지정한 Duration에 따라 일정 시간 보이다가 자동으로 사라지는 팝업창입니다. 🟦 Snackbar 기본 설정 public class MainSnackbar { public static void showSnackbar(View view, String message) { Snackbar snackbar = Snackbar.make(view, message, Snackbar.LENGTH_SHORT); setTextView(snackbar, view); snackbar.show(); } ... 🟪 Sna.. 2022. 5. 27. [RxJava] 7.배압(Backpressure) 개념 이해 네이버에서 Backpressure 뜻을 찾아보면 역압으로 알려줍니다. 배압과 의미는 같으며, 역압이란 용어는 거의 사용하지 않습니다. 배압(Backpressure) 배압이란 생산되는 데이터와 소비의 균형이 어긋나는 현상입니다. 만약 10,000개의 데이터를 0.1초마다 발행하고, 소비는 10초마다 한다면 소비와 관계없이 데이터는 스트림에 계속 쌓이게 됩니다. 즉, Observable이 데이터를 발행하는 속도를 Observer의 소비 속도가 따라가지 못하는 것입니다. Flowable(사전적의미: 유동적임) 기존의 Observable이 배압 현상을 제어하지 못하는 반면, Flowable은 배압 현상을 스스로 제어할 수 있습니다. 다음의 두 코드를 살펴보도록 하겠습니다. Observable Observable.. 2022. 5. 24. Android 개발자를 위한 Google I/O 핵심 내용 13가지 ※ 2022년 6월 16일(목)에 진행되었던 The Android Roadshow Seoul은 끝났습니다. Android 개발자를 위한 Google I/O 핵심 내용 Jetpack Compose부터 태블릿, Wear OS, 그리고 Android 13까지 Android 개발자가 알아야 할 핵심 내용 13가지를 정리해 드립니다. Modern Android Development #1: 고급 사용 사례를 지원하는 Jetpack Compose 1.2 베타 출시 Android의 최신 UI 툴킷인 Jetpack Compose에서는 다운로드 가능한 글꼴, LazyGrids, 창 인셋, 중첩 스크롤 상호 운용 등 고급 사용 사례를 구현하는 데 필요한 API와 Live Edit, 리컴포지션 디버깅, 애니메이션 미리보기 등.. 2022. 5. 22. [안드로이드] App Icon 추가 및 수정하기 Android App Icon 🟦 App Icon 생성 아이콘 적용을 위해 적용될 아이콘을 준비합니다. (512x512 사이즈) Android - app - src - res에서 마우스 우클릭 선택합니다. New - Image Asset를 선택합니다. 기본 이름으로 ic_launcher로 선택 후 Image 를 가져올 Path를 설정합니다. 이미지 크기가 맞지 않다면 Resize로 변경하시면 됩니다. 여기까지 완료가 되었으면 Next를 선택합니다. 아이콘 사이즈는 512x512로 지정이 되어 있습니다. Finish를 눌러서 생성을 합니다. res - mipmap 폴더에서 해당 아이콘들을 확인할 수 있습니다. ※ AndroidManifest.xml에서 default로 "ic_launcher"로 작성이 되어.. 2022. 5. 19. [안드로이드] 추상클래스와 인터페이스 추상 클래스(abstract class)와 인터페이스(Interface) 1. 추상 클래스(abstract class) : 추상 클래스는 전체적인 구성이 '구체화'되어 있지 않고 설계만 되어있는 클래스라고 정의할 수 있습니다. 클래스라는 것을 만들어 두면 이것을 인스턴스 화하여 객체를 생성하고 객체를 통해 클래스의 기능을 이용하게 됩니다. 객체지향 언어에서 클래스는 객체를 구체화한 것인데 이 구체화 단계가 명확하게 떨어지지 않을 대 추상 클래스를 사용하게 됩니다. 추상 클래스는 상속(extends)을 통한 자식 클래스를 의해 완성되며 abstract 키워드로 클래스가 작성됩니다. abstract class School { // abstract 추가 abstract student high(); abstra.. 2022. 5. 18. [안드로이드] HashMap 사용하기 HashMap : HashMap은 Map 인터페이스를 구현한 대표적인 Map 컬렉션입니다. 1. HashMap 개요 Map 인터페이스를 상속하고 있기에 Map의 성질을 그대로 가지고 있습니다. Map은 Key와 Value로 구성된 Entry객체를 저장하는 구조를 가지고 있는 자료구조입니다. 여기서 키와 값은 모두 객체입니다. 값은 중복 저장될 수 있지만 키는 중복 저장될 수 없습니다. 만약 기존에 저장된 키와 동일한 키로 값을 저장하면 기존의 값은 없어지고 새로운 값으로 대치됩니다. HashMap은 이름 그대로 해싱(Hashing)을 사용하기 때문에 많은 양의 데이터를 검색하는 데 있어서 뛰어난 성능을 보입니다. 2. HashMap API :HashMap은 여러 가지 API을 제공합니다. 2.1. put.. 2022. 5. 14. [RxJava] RxBus(Rx로 구현한 EventBus) RxBus RxBus의 목적은 background에 있고 아직 destroy 되지 않은 feature 들을 foreground feature에서 업데이트하는 겁니다. RxJava 이전에는 Otto, EventBus, startActivityForResult 같은 것을 사용하여 다른 fragment (컴포넌트) 등을 업데이트했습니다. Activity 1, Activity 2, Activity 3, Activity 4 를 차례로 실행합니다. 그러면 마지막 것만 foreground에 있고 나머지 3개는 백그라운드에 있게 되는데 가장 최상위 foreground 에 있는 액티비티의 data와 UI 만 업데이트하고 뒤로 돌아가면 다시 갱신된 데이터로 다시 ui와 데이터를 업데이트해야 합니다. 이럴 경우 RxBus .. 2022. 5. 11. [안드로이드] 아키텍쳐 컴포넌트(AAC) - LiveData, Databinding, Room, ViewModel Android Architecture Component(AAC) : 안드로이드 아키텍처 구성요소 는 테스트와 유지관리가 쉬운 앱을 디자인하도록 돕는 라이브러리 모음이다. 1. LiveData 1.1 개요 LiveData는 관찰이 가능한(Observable) 데이터 홀더 클래스 이다. Activity, Fragment, Service와 같은 컴포넌트의 LifeCycle을 인식하며 LifeCycle 인식을 통해 활성 상태에 있는 컴포넌트의 Observer만 업데이트한다. Observer는 LiveData의 관찰자 이다. Observer의 Lifecycle이 STARTED 또는 RESUMED 상태이면 LiveData는 Observer를 활성 상태로 간주하여 업데이트 정보를 알린다. 1.2 장점 UI와 데이터 .. 2022. 5. 10. Android studio - 한글지원 Android studio 한글 지원 노트북 변경이나 Android 개발 할 때마다 Android studio 언어 설정으로 고생했던 기억이 많아서 따로 남깁니다. C:\Program Files\Android\Android Studio\bin 폴더에서 studio64.exe.vmoptions 파일을 메모장으로 열기 마지막 줄에 "-Dfile.encoding=UTF-8" 추가 Android studio 재실행 시 적용됩니다. 2022. 4. 27. [안드로이드] BottomNavigationView로 하단 바 만들기 BottomNavigationView : 많은 애플리케이션에서 많이 보이는 Material Design 중 하나가 Bottom Navigation이다. BottomNavigationView는 하단에 바 형태의 메뉴를 생성하여 사용자에게 인터페이스(UI)를 제공하고 있습니다. BottomNavigationView를 Bottom Tab이라고 하시며 TabLayout 대신 사용하시는 분들이 있는데 Tab과 Navigation에는 역할적으로 많은 차이가 있습니다. 구글에서도 BottomNavigationView에는 TabLayout과 달리 Swipe 해서 화면을 넘기는 것을 권장하지 않고 있습니다. NavigarionView를 구성할 때에는 Fragment라는 UI 컴포넌트를 사용합니다. Fragment는 별도.. 2022. 4. 19. [안드로이드] getContext(), requireContext() 차이 getContext(), requireContext() 먼저 메서드의 정의를 보면 다음과 같다.@Nullablepublic Context getContext() { return mHost == null ? null : mHost.getContext();} getContext()는 Nullable(1), requireContext()는 NonNull(2) Annotation(주석)이 붙어있다.getContext()는 context가 호스트에 붙어있지 않을 때 Null을 반환한다. @NonNullpublic final Context requireContext() { Context context = getContext(); if (context == null) { throw new.. 2022. 4. 18. [안드로이드] getContext(), getApplicationContext(), getBaseContext(), this의 차이 🌵 Context : 애플리케이션 환경에 대한 인터페이스이자, 추상 클래스이다. 즉, 애플리케이션의 현재 상태를 뜻한다. Context를 통해 애플리케이션에 접근할 수 있고, 애플리케이션 수준 작업을 호출할 수 있다.안드로이드 개발 중 Context에 자주 접근하게 되므로 Context를 잘못 사용하면 메모리 누수가 발생할 수 있다. 따라서 Context에 관한 내용을 확실히 정리하고 넘어가려 한다.Context에는 두 가지 유형이 존재한다. Application Context와 Activity Context이다. Application Context는 Application 전용 인스턴스이고, Activity Context는 Activity 전용 인스턴스이다. ✨ Application Context싱글톤.. 2022. 4. 18. 이전 1 2 3 다음 728x90