안드로이드 엑티비티 / 프레그먼트 라이프사이클 ~ Android Activity / Fragment LifeCycle
2022. 12. 5. 01:26
[# 2]…My DevelopStory
안드로이드 엑티비티 / 프레그먼트 라이프사이클 ~ Android Activity / Fragment LifeCycle 액티비티 라이프사이클 ~ Activity LifeCycle onCreate 초기화 처리와 뷰 생성 등, 한 액티비티 당 딱 한번만 실행된다. onStart 통신이나 센서 처리를 시작 onRestart 재시작, 아무것도 하지 않는다.. onResume 필요한 애니메이션 실행 등의 화면 갱신 처리, 액티비티가 중지되거나 앱이 내려왔다가 다시 올라왔을 때 실행된다. 중지되었다가 다시 실행되어야 할 코드의 경우 여기서 처리를 하게 된다. onPause 애니메이션 등 화면 갱신 처리를 정지 or 일시정지할 때 필요 없는 리소스를 해제할 때 여기서 처리를 하게 된다. onStop 통신이나 센서 처리..
안드로이드 4대 컴포넌트 ~ Android Component
2022. 12. 4. 22:59
[# 2]…My DevelopStory
안드로이드 4대 컴포넌트 ~ Android Component 안드로이드에는 4대 컴포넌트가 존재하며 액티비티, 서비스, 브로드캐스트 리시버, 콘텐츠 프로바이더가 있다. 액티비티(Activity) UI를 담당하는 컴포넌트로 사용자와 상효작용하는 화면이다. 각 액티비티는 메니페스트에 등록이 되어 있어야 하며, 생명주기(라이프 사이클)를 가지고 있다. 인텐트를 통해 다른 액티비트를 호출할 수 있으며, 액티비티에 프레그먼트를 추가하여 화면 분할을 할 수 있다. 모든 안드로이드는 앱은 한 개 이상의 액티비티를 포함하고 있다. 서비스(Service) 백그라운드에서 작업을 처리하는 프로세스로 앱이 종료되어도 이미 시작이 된 서비스는 백그라운드에서 계속 동작한다. 실행 시 서비스 내에서 별도의 스레드를 생성하여 작업을..
Android darkmode disable code
2022. 6. 29. 17:39
[# 2]…My DevelopStory
Android darkmode disable code 안드로이드에 다크모드가 추가되면서 프로젝트내에 나이트 테마가 추가되었다. 언제부터인지 모르겠지만, 아무생각 없이 개발을 하다 보면 다크모드인 기기에서 큰 이슈가 발생한다. 예를 들어 글씨를 검정색으로 했는데 다크모드에서는 글씨가 전혀 보이지 않는다거나.. 등등 이럴 때 프로젝트 상 굳이 다크모드를 적용하고 싶지 않은 경우 코드의 테마를 바꾸어 주면 된다. 해당 테마는 원본 테마이며 이 테마의 parent만 바꾸어 주면 된다 parent를 Light로 변경해주면 다크모드가 적용된 기기에서도 앱의 테마는 다크모드를 따라가지 않는다
Android kotlin pair ~ How to modify a value in a pair
2022. 6. 29. 17:33
[# 2]…My DevelopStory
Android kotlin pair ~ How to modify a value in a pair 안드로이드 개발을 하다 보면 두개의 값이나 3개의 값을 한번에 보내야 하는 경우가 종종 있다. 이럴 경우 객체를 하나 만들어서 받게 되는데 이렇게 하면 시간도 늘어나고 라인수와 자칫 클래스 파일까지 하나 더 만들어져 버릴 수 있다. 그래서 코틀린에서는 아주 좋은 함수를 제공하는데 그것이 Pair이다 사용법은 아주 간단하다 val (name, gender) = Pair("Mader", "Man") println("name = $name") println("gender = $gender") val pairSample = Pair("kim", "unknown") println("name = ${pairSample...
Android Log Lib ~ Timber Lib
2022. 6. 29. 17:05
[# 2]…My DevelopStory
Android Log Lib ~ Timber Lib 개발을 하면 정말 중요한 것이 로그인데, 물론 무슨 프레임워크든 로그를 기본으로 아주 기본으로 제공한다. 안드로이드에서도 마찬가지로 제공을 하는데, 이를 좀 더 편리하게 쓰기위해서 로그관련 라이브러리를 찾아보면 많은 로그 라이브러리가 있는데, 이 중 아주 직관적인 로그 라이브러리를 소개하려고 한다. https://github.com/JakeWharton/timber 바로 Timber 라이브러리이다. 사용법도 아주 간단하다. 일단 라이브러리부터 추가하자 // log lib - timber implementation 'com.jakewharton.timber:timber:5.0.1' 그리고 해당 프로젝트의 application에서 셋팅을 해주면 어디에서든 ..
Android Force Update Check ~ Google InApp update lib
2022. 6. 24. 13:23
[# 2]…My DevelopStory
Android Force Update Check ~ Google InApp update lib 앱을 업데이트 했는데 강제로 업데이트 해야 하거나 업데이트을 하였다고 사용자에게 알려주어야 하고 싶거나 그럴 때가 있다. api를 통해서 관리를 할 수 있으나 이런 api조차 없는 개인 개발자일 경우 google의 inapp update 라이브러리르 사용하면 된다. // google inApp update implementation 'com.google.android.play:core:1.10.3' 간단하게 gradle에 추가를 해준 후 바로 구현 시작 private fun isAppUpdateAble(context: Context): Boolean { var isUpdate = false val appUpda..
Android exoplayer get play state
2022. 6. 23. 10:23
[# 2]…My DevelopStory
Android exoplayer get play state 안드로이드에서 동영상 재생을 위한 라이브러리는 감히 exoplayer가 가장 유명하지 않을까? 안드로이드 프레임워크에 포함되어 있지 않은 별도로 import를 해야하는 오픈소스 프로젝트지만, 구글에서 만든 라이브러리로 믿고 쓸 수 있다 이 exoplayer을 사용하던 중, 플레이에 대한 여러 state를 잡을 수 있는데, 예를 들어 동영상 종료후에 다른 동작을 하게 하던가 등등 state를 잡아서 코드를 작성할 수 있다. 이 state도 물론 제공을 해줘서 간단하게 구현을 할 수 있다. simplePlayer?.apply { if (isPlaying) { stop() } binding.player.player = this setMediaItem(..
Android TextView String resource bold / textView set html
2022. 6. 23. 00:00
[# 2]…My DevelopStory
Android TextView String resource bold / textView set html 텍스트뷰에는 String만이 아닌 html로 되어 있는 string resource도 추가할 수 있는데, 기존의 방법과는 조금 다르다 Title sample is sample]]> string resource에서 CDATA를 이용하면 간단한 html 태그도 사용할 수 있다. 컬러까지 변경이 가능한데 폰트 크기까지는 변경이 안되는 걸로 알고 있다. 일단 제목에 bold라고 해놓았으니 해당 태그인 태그를 추가 하였다. 위와 같이 설정 후 기존에 textview에 setText를 하면 에러가 난다. fun spannedToString(msg: String): Spanned { if (Build.VERSION..
Android TabLayout, Viewpager2 selected tab text bold
2022. 6. 21. 12:21
[# 2]…My DevelopStory
Android TabLayout, Viewpager2 selected tab text bold tablayout과 viewpager2 그리고 그에 따른 fragment를 사용하면 간단하고 탭 이동과 다른 화면을 보여줄 수 있다. tablayout에서 기본적으로 선택된 탭의 커스텀을 제공하고 있지만, bold처리만은 되어있지 않다. 이 기능은 리스너를 통해 직접 구현을 해야 한다. 구글에 검색을 하면 많은 자료들이 보이고 대부분 tablayout의 리스너를 통해 변경을 하고 있는데, 내 경우 스와이프시 잠깐 반짝이는 현상이 보였다. 아마 bold처리와 bold해제에서 문제가 발생한 듯 싶은데 이를 tablayout의 리스너를 통해서는 잡을 수 없었다. 그래서 방법을 바꿔 viewpager2의 registe..
안드로이드 adjustNothing 키보드 높이 구하기 - Android adjustNothing get keyboard height
2021. 9. 8. 14:19
[# 2]…My DevelopStory
안드로이드 adjustNothing 키보드 높이 구하기 Android adjustNothing get keyboard height 안드로이드에서는 키보드 높이를 구할 수 있는 메소드가 따로 없어 필요시 view계산을 통하여 키보드 높이를 구하여야 한다. 허나 adjustResize로 설정시 알아서 키보드 위로 뷰가 사이즈가 조절이 된다. 그래도 굳이 키보드 높이 adjustNothing 상태에서 키보드 높이를 구하여야 하는데 아래와 같은 코드를 참고하면 된다. public class HeightProvider extends PopupWindow implements OnGlobalLayoutListener { private Activity mActivity; private View rootView; pri..