본문 바로가기

Programming 개발은 구글로/JAVA[Android]52

[안드로이드] 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] 2. Reactive Programming 이란? Reactive Programing : 데이터의 흐름과 전달에 관한 프로그래밍 패러다임을 뜻한다. 🟦 명령형 프로그래밍 vs 리액티브 프로그래밍 Imperative Programming(명령형 프로그래밍) : 작성된 코드가 정해진 순서대로 실행됨 Reactive Programming(리액티브 프로그래밍) :데이터 흐름을 먼저 정의하고 데이터가 변경되었을 때 연관되는 함수나 수식이 업데이트 되는 방식 기존의 프로그래밍 방식을 Pull 방식, Reactive 프로그래밍 방식을 Push 방식이라고도 한다. Pull 방식은 데이터를 사용하는 곳(Consumer)에서 데이터를 직접 가져와서 사용한다면, Push 방식은 데이터의 변화가 발생한 곳에서 새로운 데이터를 Consumer에게 전달한다. 리액티브 프로그래밍.. 2022. 5. 26.
[RxJava] 5.subscribeOn과 observeOn의 차이점 subscribeOn과 observeOn의 차이 RxJava는 operator를 통해 chaining 기법을 사용할 수 있다. subscribeOn과 observeOn도 마찬가지로 chaining 기법을 적용할 수 있다. 먼저 두 연산자의 역할은 다음과 같다. subscribeOn은 Observable이 데이터 흐름을 발생시키고 연산하는 스레드를 지정할 수 있고, observeOn은 Observable이 Observer에게 알림을 보내는 스레드를 지정할 수 있다. 그럼 두 연산자의 차이는 무엇일까? subscribeOn은 여러번 호출되더라도 맨 처음의 호출만 영향을 주며 어디에 위치하든 상관없다. observeOn은 여러번 호출될 수 있으며 이후에 실행되는 연산에 영향을 주므로 위치가 중요하다. 예제 A.. 2022. 5. 25.
[RxJava] 7.배압(Backpressure) 개념 이해 네이버에서 Backpressure 뜻을 찾아보면 역압으로 알려줍니다. 배압과 의미는 같으며, 역압이란 용어는 거의 사용하지 않습니다. 배압(Backpressure) 배압이란 생산되는 데이터와 소비의 균형이 어긋나는 현상입니다. 만약 10,000개의 데이터를 0.1초마다 발행하고, 소비는 10초마다 한다면 소비와 관계없이 데이터는 스트림에 계속 쌓이게 됩니다. 즉, Observable이 데이터를 발행하는 속도를 Observer의 소비 속도가 따라가지 못하는 것입니다. Flowable(사전적의미: 유동적임) 기존의 Observable이 배압 현상을 제어하지 못하는 반면, Flowable은 배압 현상을 스스로 제어할 수 있습니다. 다음의 두 코드를 살펴보도록 하겠습니다. Observable Observable.. 2022. 5. 24.
[안드로이드] GPS 정보로 현재 위치 찾기 GPS 정보로 현재 위치 찾기 우선 GPS Location 정보를 가져오도록 하겠습니다. ※ 위치정보 또한 위험 권한에 속하므로 권한 체크를 해주셔야 합니다. 1. 안드로이드 GPS 정보 가져오기 1.1 AndroidManifest.xml에 권한 등록하기 1.2 위치 관리자 객체 참조하기 Location location = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER); 1.3 Location Listener 구현 : Location Listener는 위치정보를 전달할 때 호출되므로 onLocationChanged() 메서드 안에서 위치 정보 처리. final LocationListener gpsLocationListener = new LocationLi.. 2022. 5. 23.
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.
[안드로이드] Androidx 사용법 AndroidX(Android Extension Libraries) 1. migrating를 통한 사용방법 gradle.properties에 아래의 내용 추가 android.useAndroidX=true android.enableJetifier=true Android Stuido에서 Refector를 선택한 후 아래쪽에 있는 Migrate to AndroidX... 을 클릭합니다. migrating을 하면 ctrl+z로도 되돌릴 수 없기 때문에, 호환성에 대해 걱정이 되신다면 백업을 하시는 걸 추천드리겠습니다. 하단에 Refactor할 수 있는 목록들이 나타나게 됩니다. DO REFACTOR을 선택하게 되면 자동으로 androidx 패키징으로 변경이 됩니다. AndroidX로 migrate가 완료되었습니다. 2022. 5. 17.
[안드로이드] 적응형 앱아이콘(Adaptive icon) 적응형 아이콘(Adaptive icon) 1. 개요 Android 8.0(API 수준 26: Oreo)에는 다양한 기기 모델에서 여러 가지 형태(Circl, Square, Rounded, Squircle, Teardrop, etc)로 표시되는 적응형 런처 아이콘이 도입되었습니다. 적응형 런처 아이콘은 한 OEM 기기에서는 원형으로 표시되고 다른 기기에서는 모서리가 둥근 사각형으로 표시될 수 있습니다. 각 기기 OEM에서는 마스크(Mask)가 제공되는데, 시스템에서는 이를 사용하여 모든 적응형 아이콘을 같은 형태로 렌더링 합니다. 적응형 런처 아이콘은 바로가기, 설정 앱, 공유 대화 상자 및 개요 화면에서도 사용됩니다. ※ 적응형 아이콘은 기기마다 다른 다양한 마스크를 지원합니다. 백그라운드와 포그라운드로.. 2022. 5. 16.
[안드로이드] 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.
728x90