Android 25

WindowManager$BadTokenException

Fatal Exception : android.view.WindowManager$BadTokenException Unable to add window — token android.view.VoewRootImpl@ is not valid; is your activity running? 이 에러가 지속해서 발생했는데 Firebase Crashlytics 에서 🔔 창 추가 불가 - 토큰이 올바르지 않음, 활동 실행 여부 확인 필요 이 비정상 종료는 대개 앱에서 이전에 완료된 활동을 컨텍스트로 사용하여 대화상자를 표시하려고 시도하여 발생합니다. 예를 들어 활동이 종료되면 대화상자를 표시하려고 시도하는 AsyncTask를 트리거하지만 사용자가 작업이 완료되기 전에 활동에서 뒤로 이동하면 발생할 수 있습니다. 비정..

🐛 버그 2020.12.15

[Android] getColor, getDrawable Deprecated 대응

Android 버전이 업데이트되면, 기존의 함수가 Deprecated가 되기도 합니다. Deprecated 된 함수들은 버전별로 처리를 해주어야 합니다. 이번에 살펴볼 함수는 getColor와 getDrawable 함수입니다. getColor public int getColor (int id) getColor는 마시멜로우버전(API 23)에서 부터 Deprecated(getColor)되었다고 나와있습니다. 공식 문서에 보면, getColor(int, android.content.res.Resources.Theme)를 대신해서 쓰라고 나와있습니다만, ContextCompat에 있는 아래의 함수를 사용해서 변경해보도록 하겠습니다. 설명처럼 Build.VERSION_CODES.M (API 23) 에서부터 사용..

📱 Android 2020.11.18

[Android] Firebase setCurrentScreen 지원중단

앞선 포스팅에 이어, Firebase SDK가 업데이트되면서 수동화면추적을 위한 setCurrentScreen도 곧 지원중단 되므로, 함수를 변경해주도록 합니다. 수동화면추적이란? 자동 추적 사용 설정 여부와 관계없이 screen_view 이벤트를 수동으로 로깅할 수 있습니다. 이러한 이벤트는 iOS의 경우 viewDidAppear상태, Android의 경우 onResume 상태에서 로깅할 수 있습니다. screen_class 를 설정하지 않으면 애널리틱스는 호출할 때 포커스가 지정된 UIViewController 또는 Activity를 기반으로 기본값을 설정합니다 앱을 사용하면서 화면전환율, 현재 화면에 관한 정보를 이벤트에 추적하면서 쓰입니다. 아래의 예시는 사용자가 어떤 화면에 들어왔는지를 남기기 ..

📱 Android 2020.11.09

[Android] 최신 Firebase Crashlytics Sdk 업데이트

공식문서 Firebase Crashlytics SDK로 업그레이드 iOS Android Unity 이제 새로운 공식 Firebase Crashlytics SDK를 사용하여 앱에서 Crashlytics를 설정할 수 있습니다. 이 SDK는 다른 Firebase 제품과의 일관성이 향상되었고 보다 직관적으로 사용할 수 있는 개선 firebase.google.com 위의 공식문서를 참고해서 정리해보겠습니다. (Android를 탭해도 IOS의 방법이 보이는 것 같습니다..) 1. Firebase 구성 파일 추가 프로젝트 설정에서 구성 파일이 필요한 ID를 선택합니다. google-services.json을 다운로드해서 프로젝트 app폴더에 넣어줍니다. 2. build.gradle (app) 수정 io.fabric이..

📱 Android 2020.11.05

[Android/kotlin] 특정 위치로 스크롤하기

ScrollView의 특정 UI로 자동 스크롤 ScrollView의 특정 TextView를 클릭하면 특정 위치로 자동스크롤 되게 하기 위해서, 현재 스크롤 위치, 특정 UI로 자동 스크롤 위 2가지를 알아야했습니다. Vertical ScrollView를 쓰고 있기 때문에 값은 Y축의 값만 사용합니다. 현재 스크롤 위치 구하기 현재 스크롤의 Y축 값은 생각보다 간단하게 구할 수 있는데, 그 값을 가져오기 위해서 ViewTreeObserver를 사용해야합니다. ViewTreeObserver없이 사용하면 0을 리턴하는 경우가 많기 때문에 ViewTreeObserver를 사용하겠습니다. ViewTreeObserver 각 리스너를 통해 변화를 감지, OnScrollChangeListener 사용 OnScrollC..

📱 Android 2020.08.12

[Android/kotlin] 시스템 폰트 크기에 영향받지 않게 하기

font size DP 선언 이전 포스팅에서도 정리한 적이 있지만 dp는 물리적인 디스플레이 해상도에 영향을 받지 않기 때문에 해상도에 따라 맞춰주지 않아도 된다. 반면, sp의 경우는 dp와 유사하지만 물리적인 디스플레이 해상도에 영향을 받는다. 그렇기 때문에 해상도에 영향을 받지 않으려면 dp로 TextSize를 정해주면 된다 (Galaxy S8 기준) 안드로이드 설정-> 디스플레이 -> 글자 크기와 스타일에 들어가면 글자 크기를 조절할 수 있는데, 부끄럽게도 이번에 처음 확인을 해보았다. 결과는 대참사가 일어났다. UI는 뒤죽박죽이 되었고, 심지어 잘려서 보이지 않는 텍스트가 발생했다. 부랴부랴 TextSize를 dp로 변경했지만, 내가 놓친 부분이 2개나 있었다. TextView가 programm..

📱 Android 2020.07.27

[Android/kotlin] 푸시 클릭 시 앱의 실행상태 체크

앱의 실행상태 체크해보기 푸시를 받았을 때, 앱이 실행중인지 아니면 앱이 꺼져있다가 실행되는지를 체크해야하는 작업이 필요했습니다 방법을 찾던 중 LifeCycle을 이용하는 방법을 선택했습니다 그 전에 Activity의 활동주기에 관해서도 간략히 정리하려고 합니다. 공식문서를 참고해서 정리해보았습니다 Activity의 활동주기 onCreate() 시스템이 처음 생성될 때 실행, 기본 시스템 로직을 생성 onStart() onCreate 상태가 되면 호출, Activity가 사용자에게 보이기 직전의 상태 onResume() 앱이 사용자와 상호작용, 앱에서 포커스가 떠나기 전까지 이 상태에 머무름 onPause() activity가 일시 정지의 상태, 작업을 완전히 종료할 땐 onStop() 사용이 좋다 o..

카테고리 없음 2020.07.22

[Android] MPAndroidChart BarChart 사용하기

MpAndrodChart의 HorizontalBarChart 사용하기 데이터를 보여줄 때 가독성을 높이는 방법 중엔 그래프가 있습니다. 은근 그래프를 사용할 때가 많은데, 그래프 라이브러리 중 가장 유명한 MPAndroidChart를 사용해보았습니다. HorizontalBarChart 사용하면서 적용할 수 있는 속성이 너무나도 많아서 나중에 쓰기 위해 쉽게 정리해둬야겠습니다. 사용 언어 : Kotlin MPAndroidChart GitHub 물론 Github에 자세하게 나와있지만, 나름대로 정리해봤습니다. 1. Gradle 추가 build.gradle repositories { maven { url 'https://jitpack.io' } } dependencies { implementation 'com..

📱 Android 2020.05.17

[Android] Lottie Animation 적용하기

안드로이드 Lottie 적용 Lottie 애니메이션 Lottie는 Json으로 이루어진 애니메이션이다. gif보다 용량이 적어서 부담이 적다. 실제로 사용해본 결과 처음은 불편했지만, 디자이너님과 서로서로 훨씬 수월해지는 작업이었다. 앞으로 Lottie 사용이 더 늘어날 것 같다. 그냥 이미지를 사용했을 때 보다 역시 애니메이션이 이쁘다..! 실제로 LottieFile들이 올라간 사이트를 구경하다보면 눈에 확 들어오는 애니메이션들이 많았다. Lottie에 쓰일 이미지는 로티파일 에 들어가면 아주 많이 나와있다. 꼭 한 번 둘러보시길 ! Lottie 사용 API 14 이상의 안드로이드 버전이 필요 gradle에 implementation 'com.airbnb.android:lottie:$lottieVers..

📱 Android 2019.12.31

[Android / Kotlin] Custom SeekBar

SeekBar를 Custom해서 사용했는데, 깔끔하게 사용하려면 조정해야할 부분이 좀 있었다 보통 SeekBar는 Custom으로 많이 사용하니 까먹지 말자..! 1. android:background="@null" Thumb을 이동시키면 Ripple Effect효과가 나타나는데 이 효과를 없애기 위해서 사용 2. android:progressDrawable="@drawable/이미지명" Bar의 background를 적용 3. android:splitTrack="false" seek1처럼 Thumb를 커스텀하면 좌우에 여백이 생긴다 seek2처럼 변경시키기 위해 splitTrack 적용 4. android:thumb="@drawable/이미지명" Thumb의 background 적용

📱 Android 2019.11.15