Programming
-
[Design Pattern] Strategy PatternProgramming/DesignPattern 2020. 12. 10. 16:40
Strategy Pattern (스트래티지 패턴) 알고리즘 변화를 캡슐화로 처리 스트래티지 패턴은 전략을 쉽게 바꿀 수 있도록 해주는 디자인 패턴이다. 여기에서 전략이란 어떤 목적을 달성하기 위해 일을 수행하는 방식, 비즈니스 규칙, 문제를 해결하는 알고리즘 등으로 이해할 수 있다. 프로그램에서 전략을 실행할 때는 쉽게 전략을 바꿔야할 필요가 있는 경우가 많이 발생한다. 특히 게임 프로그래밍에서 게임 캐릭터가 자신이 처한 상황에 따라 공격이나 행동하는 방식을 바꾸고 싶을때 스트래티지 패턴은 매우 유용하다. 같은 문제를 해결하는 여러 알고리즘이 클래스 별로 캡슐화되어 있고, 이들이 필요할 때 교체할 수 있도록함으로써 동일한 문제를 다른 알고리즘으로 해결할 수 있게 하는 디자인 패턴이다. 클라이언트가 전략을..
-
-
[Android] 해상도와 dpi, px, dp, dip, spProgramming/Android 2020. 12. 1. 01:08
안드로이드는 아이폰과 달리 다양한 해상도를 지원한다. 1. dpi (Dot Per Inch) 1인치당 픽셀 수. 물리적인 단위인 1inch(2.54cm)에 몇 픽셀이 들어가는가를 나타내는 단위 Low density (120dpi) : ldpi Medium density (160dpi) : mdpi (기본) High density (240dpi) : hdpi Extra High density (320dpi) : xdpi xxhdpi : 480dpi xxxhdpi : 640dpi 2.px (pixel) 스크린의 실제 픽셀 단위, 실제 크기나 밀도와 관련없다 절대적 표시 단위 mdpi에서 1dp = 1px 이다. ldpi : 1dp = 0.75px mdpi : 1dp = 1px hdpi : 1dp = 1.5p..
-
Android LifeCycleProgramming/Android 2020. 11. 30. 19:07
1. onCreate() 2. onStart() -> onRestoreInstanceState() 3. onResume() 4. onPause() -> onSaveInstanceState() 5. onResume() 6. onStop() 7. onDestroy MainActivity에서 DetailActivity 호출했을 때 호출되는 LifeCycle Method 순서 [Main]onPause() [Detail]onCreate() [Detail]onStrat() [Detail]onResume() [Main]onStop() -> Detail의 라이프사이클 작업이 끝난 후 호출됨. DetailActivity 종료 후 MainActivity가 보여질때, LifeCycle Method 호출 순서 [Detail]..
-
-
[Android] Toolbar Menu Icon Shadow 효과 적용Programming/Android 2020. 11. 12. 00:00
배경 이미지가 계속해서 바뀌는 액티비티에서 배경이미지가 흰색이고, Toolbar Background가 투명색, Toolbar 메뉴 아이콘이 흰색일 때 메뉴 아이콘이 보이지 않는 이슈가 발생했다. 따라서 배경 이미지가 흰색일 경우에 대응하기 위해 Vector 아이콘에 그림자 효과를 적용함으로써 해결할 수 있었다. 아이디어는 layer-list 태그를 이용하여 Vector Item 2개를 중첩시켜 놓는 것이다. 아래 코드에서 아이콘 pathData 속성만 교체해주면 shawdow가 적용된 아이콘을 사용할 수 있다. Toolbar에 title에 shadow 효과를 주고 싶으면, setElevation(float)을 설정하면 된다. setSupportActionBar(viewDataBinding.editTool..
-
LiveDataProgramming/Android 2020. 11. 6. 23:20
LiveData란? LiveData는 Android JetPack 라이브러리 중 하나이다. JetPack은 개발자가 관심있는 코드에 집중할 수 있도록 권장사항 준수, 상용구 코드 제거, 모든 Android 버전과 기기에서 일관되게 작동하는 코드 작성을 돕는 라이브러리 모음입니다. 쉽게 말하면, JetPack은 안드로이드 개발을 돕는 라이브러리의 모음이다. LiveData는 JetPack 의 일부이다 식별 가능한 데이터 홀더 클래스이다. 일반 클래스와 달리 LiveData는 LifeCycle를 인식하여 고려한다. 이를 통해 LiveData는 활성 LifeCycle 상태에 있는 앱 컴포넌트 Observer만 업데이트한다. Observer 클래스로 표현되는 Observer의 생명주기가 STARTED or RE..
-
About KotlinProgramming/Kotlin 2020. 11. 5. 19:15
코틀린은 IntelliJ IDEA를 개발한 JetBarins에서 개발했다. Kotlin/JVM - 자바 가상 머신 상에서 동작하는 앱을 만들 수 있다. 자바의 불편함 점들을 개선하고, 간소화하는 방향으로 개발된 언어임. 현황 2017년 구글에서 공식언어로 지정 안드로이드 공식 문서를 봐도 코틀린을 메인언어로 소개함. 이는 구글에서 코틀린 사용을 권장한다는 의미로 판단. 많은 IT기업에서 자바에서 코틀린으로 전환을 마쳤거나, 전환을 시도하고 있는 추세. 장점 자료형에 대한 오류를 미리 잡을 수 있는 정적 언어이다. 코틀린은 프로그램이 컴파일될 때 자료형을 검사하여 확정하는 정적 언어이다. 즉, 자료형 오류를 초기에 발견할 수 있어 프로그램의 안정성이 좋아집니다. 성능면에서는 컴파일 시에 타입을 확정하고, ..